第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\n",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\n",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).运行结果截图