为什么while循环会在我的代码中产生错误?

时间:2019-01-19 17:43:05

标签: c if-statement while-loop

我正在尝试执行以下代码。当我用if(n> 9)替换while(n> 9)时,下面的代码运行良好。有人可以解释一下为什么while循环导致此错误吗?

这是代码

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

int main() {
    int n, digit, i, sum = 0;
    scanf("%d", &n);
    for (i = 0; i < 5; i++)
      { 
        digit = n % 10;
          while (n > 9)
           {
            n = (n - digit) / 10;
           }
        sum = sum + digit;
     }
    printf("%d", sum); 
    return 0;
} 

1 个答案:

答案 0 :(得分:0)

  1. 将建议的更正应用于代码后,
  2. 并应用公理:每行仅一个语句(最多) 每个语句一个变量声明。
  3. 以下建议的代码 执行所需的功能  结果:干净地编译 正确检查并处理错误 对printf()格式字符串的调用以'\ n'结尾,因此数据立即输出到终端 显示一种适当的方法来从“ int”中提取数字并收集这些数字的总和。

现在,建议的代码:

#include <stdio.h>

int main( void ) 
{
    int n;
    int digit;
    int  sum = 0;

    if( scanf("%d", &n) != 1 )
    {
        fprintf( stderr, "scanf for initial value failed" );
        return 1;
    }

    while( n )
    { 
        digit = n % 10;  // extract a digit
        n /= 10;         // reduce the working number
        sum = sum + digit;
    }

    printf("%d\n", sum);   // use '\n' so value immediately output to terminal
    return 0;
}