第十周编程总结--助教

题目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;
}
截图:

猜你喜欢

转载自www.cnblogs.com/zw431387/p/9968596.html