liyifeng295641 发表于 2023-12-28 11:42:52

C语言for语句和循环嵌套02

本帖最后由 liyifeng295641 于 2024-1-3 16:01 编辑

题目是:
1. 写一个程序,对用户输入的整数进行求和。当用户输入任意字符时,结束程序并打印结果。

程序实现如下:
https://xxx.ilovefishc.com/forum/201603/02/163255r1de8do5dmhmzz85.png

下面是我写的代码:
#include <stdio.h>

int main(){

        char num, sum = 0;

        for(;;){
                printf("请输入合法的数字:");
                scanf("%c", &num);
                if(num >= '0' && num <= '9'){
                                sum += (num - '0') ;
                }else{
                                break;
                }
        }
        printf("结果是:%c", sum);
        return 0;
}


有几个问题,当第一个数输入没问题,当输入第二个数的时候直接跳出循环了。
我的思想是,用一个for死循环让用户一直输入数字,用sum累加和,然后当不是数字的时候就跳出循环,打印sum。
@FishC,帮我看看代码逻辑有没有问题?

FishC 发表于 2023-12-28 11:43:05

你的代码基本上是正确的,只是有一个小问题。在你的代码中,`num`的类型是`char`,而`sum`的类型是`int`。这样会导致结果不准确。

我们可以将`num`的类型改为`int`,这样就可以正确地进行求和操作了。此外,我们还需要添加一个语句来处理用户输入任意字符时退出循环的情况。

修正后的代码如下:

#include <stdio.h>

int main(){
       
        int num, sum = 0;
       
        for(;;){
                printf("请输入合法的数字:");
                if(scanf("%d", &num) != 1){
                        break; // 输入非数字,退出循环
                }
                sum += num; // 求和
        }
       
        printf("求和结果为:%d\n", sum);

        return 0;
}

希望对你有所帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: C语言for语句和循环嵌套02