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

标签 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. 对代码应用建议的更正后,
  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;
} 

关于c - 为什么 while 循环会在我的代码中产生错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54269733/

相关文章:

c - 为什么我的 write 方法没有初始化?

while循环中的Javascript if语句

python - python图论论文中的一个代码问题

java - 为什么这个 while 循环在 roll and roll 2 之后不停止?

C程序逻辑实现

c - 这个函数究竟是如何将 char 转换为 int 的示例?

c - 从矩阵中提取特定列并将其作为新矩阵存储在 C 中

objective-c - 使用 Objective-C 中的 If 语句根据数值设置 UITextfield 的颜色

java - 如何在 while 循环中使用字符串条件,java?

javascript - 在 JavaScript 中实现具有容差的二分搜索?