第十一周编程总结

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("\n");/*换行*/
 }

 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\n",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("\n");
      }
  }
  if(num==0)
  printf("None\n");
  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)运行结果截图

posted @ 2018-12-01 16:53  xirfly  阅读(239)  评论(0编辑  收藏  举报