这段代码卡住了,我不知道';我不知道为什么 #包括 整数和数字(整数); int main() { INTA; printf(“输入我们想要的数字总和的编号\n”); scanf(“%d”和“&a”); printf(“数字%d中的一部分,和(a)); 返回0; } 整数和数字(整数) { 整数和=0; 而(num>0); { 总和=总和+num%10; num=num/10; } }

这段代码卡住了,我不知道';我不知道为什么 #包括 整数和数字(整数); int main() { INTA; printf(“输入我们想要的数字总和的编号\n”); scanf(“%d”和“&a”); printf(“数字%d中的一部分,和(a)); 返回0; } 整数和数字(整数) { 整数和=0; 而(num>0); { 总和=总和+num%10; num=num/10; } },c,C,当我运行这段代码时,它要求输入值,但当我按enter键时,它被卡住了。无法理解为什么它没有产生任何结果 这是scanf的空格问题吗?您的while循环是无限的。您需要删除分号。 一个while循环看起来像这样 #include<stdio.h> int sum_digit(int); int main() { int a; printf("Enter no. for which we want the sum of digits\n"); scanf("

当我运行这段代码时,它要求输入值,但当我按enter键时,它被卡住了。无法理解为什么它没有产生任何结果


这是scanf的空格问题吗?

您的while循环是无限的。您需要删除分号。 一个while循环看起来像这样

#include<stdio.h>

int sum_digit(int);

int main()
{
    int a;
    printf("Enter no. for which we want the sum of digits\n");
    scanf(" %d", &a);
    printf("Some of digit %d", sum_digit(a));
    return 0;
}

int sum_digit(int num)
{
    int sum = 0;
    while(num > 0);
    {
        sum = sum + num % 10;
        num = num / 10;
    }
}
while循环什么也不做,但是如果在典型用例中while循环(以及while循环的
if
语句)的末尾没有分号,那么while循环将继续运行。这就是说,在行的末尾有一个额外的分号:
while(num>0)。删除预期行为的分号

正如注释中所指出的,函数
int sum\u digit(int)
将导致一个错误,因为它不返回任何内容。加
返回和来修复该问题

以下是最终代码:

while(condition) {
    statement(s);
}
#包括
整数和数字(整数);
int main()
{
INTA;
printf(“输入我们想要的数字总和的编号\n”);
scanf(“%d”和“&a”);
printf(“数字%d中的一部分,和(a));
返回0;
}
整数和数字(整数)
{
整数和=0;
while(num>0)
{
总和=总和+num%10;
num=num/10;
}
回报金额;
}


在结尾使用分号有时可能是错误的。

您的代码有两个问题:

  • while(num>0)-有一个分号
    在循环条件之后,这导致循环的主体不会被视为循环主体,
    循环只是不断地证明该条件,并且当
    num
    没有改变时,循环无限进行

  • 函数
    sum\u digit()
    不返回任何内容

    因此,要使用
    printf(“数字%d的某些部分”,求和数字(a))调用

    返回和在<代码>总和数字()的末尾。



  • 注意:如果您使用GCC,则
    -Wall
    选项显示了这两个选项的警告。

    首先正确缩进您的代码。
    sum\u digit
    需要返回一些内容。
    while(num>0)当然,我可以同意。我想这取决于编译器。我使用了VS2017 C++一个漂亮的猫BTW.我得到了3。D我没有任何想法,只是在网上某个地方发现了这个,Visual Studio 2017显示了无返回值的警告和/或错误?更新:以前没有用
    -Wall
    尝试过。我很着急。我是傻瓜然后,它实际上会同时显示这两个方面的警告。
    #include<stdio.h>
    
    int sum_digit(int);
    
    int main()
    {
        int a;
        printf("Enter no. for which we want the sum of digits\n");
        scanf(" %d", &a);
        printf("Some of digit %d", sum_digit(a));
        return 0;
    }
    
    int sum_digit(int num)
    {
        int sum = 0;
        while(num > 0)
        {
            sum = sum + num % 10;
            num = num / 10;
        }
        return sum;
    }