• 第十一周编程总结


    7-1 打印九九口诀表 (15 分)

    下面是一个完整的下三角九九口诀表:

    1*1=1   
    1*2=2   2*2=4   
    1*3=3   2*3=6   3*3=9   
    1*4=4   2*4=8   3*4=12  4*4=16  
    1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
    1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
    1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
    1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
    1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  
    

    本题要求对任意给定的一位正整数N,输出从1*1N*N的部分口诀表。

    1)实验代码

    #include<stdio.h>
    int main()
    {
     int n,i,j;
     scanf("%d",&n);
     for(i=1;i<=n;i++)
     {
      for(j=1;j<=i;j++)
      {
       printf("%d*%d=%-4d",j,i,i*j);
      }
      printf(" ");/*换行*/
     }

     return 0;

    }

    2)设计思路

    1.使用嵌套循环,定义n

    2.外层循环for(i=1;i<=n;i++)

    3.内层循环for(j=1;j<=i;j++),输出printf("%d*%d=%-4d",j,i,i*j);

    4.换行

    5.返回主函数

    3)本题调试过程碰到问题及解决办法

    不知道怎么表示等号右边数字占4位、左对齐。后来百度了(%-4d)左对齐,不足4位右边补空格,超过4位,原样输出。如果没有前面的负号,那么表示右对齐,不足四位左边补齐空格;现在加了个负号,就是表示左对齐

    4)运行结果截图

    7-2 换硬币 (20 分)

    将一笔零钱换成5分、2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法?

    1)实验代码

    #include<stdio.h>
    int main()
    {
     int x,m5,m2,m1,count=0; 
     scanf("%d",&x);
     for(m5=x/5;m5>0;m5--)  { 
      for(m2=x/2;m2>0;m2--)  { 
       for(m1=x/1;m1>0;m1--)  { 
        if(m5*5+m2*2+m1*1==x)  {
        printf("fen5:%d, fen2:%d, fen1:%d, total:%d ",m5,m2,m1,m5+m2+m1);
        count++;
        }
       }
      }
     }
     printf("count = %d",count);
     return 0;
    }

    2)设计思路

    1.定义变量

    2.用三个for循环判断5分、2分、1分硬币的换法

    3.判断所换得的金额与原金额是否相等

    4.种类累加

    5.输出答案

    6.返回主函数

    3)本题调试过程碰到问题及解决办法

    换法考虑不周全,格式有问题

    4)运行结果截图

    7-3 找完数 (20 分)

    所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。

    1)实验代码

    #include<stdio.h>
    int main ()
    {
      int m,n,i,j,sum,num=0;
      scanf("%d%d",&m,&n);
      for(i=m;i<=n;i++)
      {
        sum=1;
        for(j=2;j<i;j++)
        {
          if(i%j==0)
          sum+=j;
         }
          if(sum==i)
          {
            printf("%d = 1",i);
            for(j=2;j<i;j++)
            if(i%j==0)
            printf(" + %d",j);
            num++;
            printf(" ");
          }
      }
      if(num==0)
      printf("None ");
      return 0;
    }

    2)设计思路

    1.定义变量

    2.for循环for(i=m;i<=n;i++),定义sum=1(因为i每变化一次,sum重置为1)

    3.循环,判断1个数从1开始到自身中的数能否被整除,如果能就累加

    4.判断累加数之和sum是否等于i

    5.if(sum==i)为真就输出(%d = 1),因为每一项都是从1开始的

    6.循环,判断1个数从1开始到自身中的数能否被整除,能就输出因子

    7.出现完数的个数累加num++

    8.换行

    9.判断完数个数,为0就输出None

    10.返回主函数

    3)本题调试过程碰到问题及解决办法

    刚开始不会写,后来百度,一边调试一边看过程,直到弄懂

    4)运行结果截图

  • 相关阅读:
    异步非阻塞
    jdbc简单入门
    网络编程
    多线程
    java方法
    java之面向对象
    java-多线程
    Java之反射机制
    使用C#完成冒泡排序
    TextEdit不能空验证设置
  • 原文地址:https://www.cnblogs.com/xirfly/p/10016872.html
Copyright © 2020-2023  润新知