第十周编程总结--助教
题目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)运行结果截图
(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)运行结果截图
![](https://img2018.cnblogs.com/blog/1521973/201811/1521973-20181116122046905-136034877.png)
题目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)运行结果截图
![](https://img2018.cnblogs.com/blog/1521973/201811/1521973-20181116122110961-330487739.png)
题目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);
{
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)运行结果截图
}
(2)设计思路
第一步:定义变量赋初值
第二步:用while语句循环计算
第三步:判断条件为number % 5 != 1 || number % 6 != 5 || number % 7 != 4 || number % 11 != 10
第四步:输出结果
(3)本题调试过程碰到问题及解决办法
一开始没看懂题目,看懂后就好做了
(4)运行结果截图
![](https://img2018.cnblogs.com/blog/1521973/201811/1521973-20181116122129207-2057209778.png)
题目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;
{
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)运行结果截图
break;
}
printf(" %d",i);
return 0;
}
(2)设计思路
第一步:定义变量,赋初值
第二步:运用for循环,无判断条件
第三步:每次x的位数增加1,且加一。
第四步:如果x大于你输入的数,就输出x,令flag为1
第五步:若flag为1,输出0(就是有些除出来得数字中间有0)
第六步:x=x%n,留下除后的余数继续计算
第七步:最后输出位数,也就是循环的次数
(3)本题调试过程碰到问题及解决办法
这题一开始我就得很难,无从下手,问了老师之后运用模拟除法,不过第一次的代码在陪她上超时,所以就修改,每除完一次输出一个数,答案正确
(4)运行结果截图
![](https://img2018.cnblogs.com/blog/1521973/201811/1521973-20181116122148509-2062391097.png)
方法二:
#include <stdio.h>
int main()
{
#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; // 被除数更新为余数
{
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);
++n; // 位数增1
}
printf(" %d\n", n);
return 0;
}
}
截图:
![](https://img2018.cnblogs.com/blog/1521973/201811/1521973-20181116122428272-1215557954.png)