题目1 求奇数和 (1)实验代码 #include<stdio.h> int main () { int n, sum; scanf("%d", &n); sum = 0; while(n > 0) { if(n%2 != 0) sum = sum + n; scanf("%d", &n); } printf("%d", sum); return 0; } (2)设计思路 第一步:定义变量,赋初值 第二步:运用while语句,条件为n>0 第三步:如果n%2不为0,将n的值加到sum中去 第四步:输出sum的值 (3)本题调试过程碰到问题及解决办法 一次性通过,无问题 (4)运行结果截图
题目2 求整数的位数及各位数字之和 (1)实验代码 #include<stdio.h> int main () { int n, sum, w; scanf("%d", &n); w = 1; if(n<10) { sum = n; } while(n / 10 > 0) { w++; sum += n % 10; n = n / 10; if(n < 10) { sum = sum + n; } } printf("%d %d", w, sum); return 0; } (2)设计思路 第一步:定义变量,输入数字n 第二步:如果n<10,sum为n,若n/10>0,用while循环判断 第三步:每循环一次位数加一sum += n % 10;n = n / 10; 第四步:n<10时,sum加n,因为n<10时它不会加到sum中去 第五步:输出结果 (3)本题调试过程碰到问题及解决办法 一开始没有思考到连续的0,改正了下计算的方式,改正后又忘记了最小的n,改正后正确。 (4)运行结果截图
题目3 韩信点兵 (1)实验代码 #include <stdio.h>
int main() { int number = 0; while (number % 5 != 1 || number % 6 != 5 || number % 7 != 4 || number % 11 != 10) { number++; } printf("%d", number);
return 0; } (2)设计思路 第一步:定义变量赋初值 第二步:用while语句循环计算 第三步:判断条件为number % 5 != 1 || number % 6 != 5 || number % 7 != 4 || number % 11 != 10 第四步:输出结果 (3)本题调试过程碰到问题及解决办法 一开始没看懂题目,看懂后就好做了 (4)运行结果截图
题目4 整除光棍 方法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循环,无判断条件 第三步:每次x的位数增加1,且加一。 第四步:如果x大于你输入的数,就输出x,令flag为1 第五步:若flag为1,输出0(就是有些除出来得数字中间有0) 第六步:x=x%n,留下除后的余数继续计算 第七步:最后输出位数,也就是循环的次数 (3)本题调试过程碰到问题及解决办法 这题一开始我就得很难,无从下手,问了老师之后运用模拟除法,不过第一次的代码在陪她上超时,所以就修改,每除完一次输出一个数,答案正确 (4)运行结果截图
方法二: #include <stdio.h> int main() {
int x = 0, s = 0, n = 0; // 定义除数,被除数,位数
scanf("%d", &x);
while (s < x) { s = s * 10 + 1; // 被除数末位添1, 直到不小于被除数 ++n; // 位数增1 } while (1) // 开始进行除法运算 { printf("%d", s / x); // 输出商, 从最高位一直输出到个位,因为最后一定能整除 s %= x; // 被除数更新为余数
if (s == 0) break; // 余数为0则结束
s = s * 10 + 1; // 余数末位添1 ++n; // 位数增1 } printf(" %d\n", n);
return 0; }
截图: