第10周编程总结

10周编程总结

题目1:10-1 求奇数和 (15 分)

本题要求计算给定的一系列正整数中奇数的和。

1).实验代码

#include<stdio.h>

int main()

{

       int n,sum = 0;

       while(1){

         scanf("%d",&n);

              if(n<=0){

                     break;

              }

              if(n%2!=0){

                     sum += n;

              }

       }

       printf("%d ",sum);

       return 0;

}

2).设计思路

第一步 整形定义n,sum,并赋值sum为0

第二步 使用while循环语句【while(1)不断进行循环】,不断输入整数n

第三步 判断是否为奇数,将负数转为整数,进行累加;

第四步 输出结果

3)本题调试中遇到的问题及解决方案

不知道如何进行循环,不知道while(1)的意思和用法

4).运行结果截图

题目2:10-2 韩信点兵 (10 分)

在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:

  • 按从1至5报数,记下最末一个士兵报的数为1;
  • 再按从1至6报数,记下最末一个士兵报的数为5;
  • 再按从1至7报数,记下最末一个士兵报的数为4;
  • 最后按从1至11报数,最末一个士兵报的数为10;

请编写程序计算韩信至少有多少兵。

 

1).实验代码

#include<stdio.h>

int main()

{

  int i;

  for(i=1;;i++){

    if((i%5==1)&&(i%6==5)&&(i%7==4)&&(i%11==10)){

      printf("%d ",i);

      return 0;

    }

  }

}

2).设计思路

第一步 使用循环语句来进行判断和计算

第二步 输出兵的数量

3)本题调试中遇到的问题及解决方案

刚刚拿到题目完全不懂题意,更别说思路了,还是心急吃不了热豆腐

4).运行结果截图

题目3:10-3 求整数的位数及各位数字之和 (15 分)

对于给定的正整数N,求它的位数及其各位数字之和。

1).实验代码

#include<stdio.h>

int main()

{

       int integer,sum,count;

       scanf("%d",&integer);

       sum = 0;

       count = 0;

       if(integer<=0){

              integer = -integer;

       }

       while(integer>0){

              sum+=integer%10;

              integer = integer/10;

              count++;

       }

       printf("%d %d",count,sum);

       return 0;

}

2).设计思路

第一步 将整数不断除以10,将余数不断累加得到各位数字之和

第二步 输出数据,得到结果

3)本题调试中遇到的问题及解决方案

本题没有遇到困惑

4).运行结果截图

题目4:10-4 整除光棍 (20 分)

这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯一的,题目要求你输出最小的解。

提示:一个显然的办法是逐渐增加光棍的位数,直到可以整除x为止。但难点在于,s可能是个非常大的数 —— 比如,程序输入31,那么就输出3584229390681和15,因为31乘以3584229390681的结果是111111111111111,一共15个1。

 

1).实验代码

#include<stdio.h>

int main()

{

       int n,i,x=0,flag=0;

       scanf("%d",&n);

       for(i=1;;i++)

       {

              x=x*10+1;

              if(x>=n)

              {

                     flag=1;

                     printf("%d",x/n);

              }

              else if(flag==1)

                printf("0");

                  x=x%n;

              if(x==0) 

                 break;

       }

       printf(" %d",i);

       return 0;

}

2).设计思路

第一步 使用for语句进行循环,写出光棍数字的表达式

第二步 分条件来进行判断和输出

第三步

3)本题调试中遇到的问题及解决方案

4).运行结果截图

 

原文地址:https://www.cnblogs.com/chenguohhw/p/9952152.html