洋芋土豆马铃薯丼 2024-12-11 14:13 采纳率: 50%
浏览 8
已结题

sum(sum=0;)为何一定要在循环里重新赋值

img


刚开始接触c语言,请问大家为什么这样写输出空空的,把sum=0;放进外层for循环里输出就正确了?

  • 写回答

1条回答 默认 最新

  • Struart_R 2024-12-11 14:26
    关注

    首先,在循环内,变量 sum 在每次外层循环开始时没有重置。这意味着 sum 将会持续累积前一个 c 的值。如果这个逻辑不如预期,导致意外的结果,因此应该在每次计算新 c 值之前将 sum 重置为 0。
    另外建议提前设置条件a<b,防止出现a>b不能输出结果的情况。

    #include <stdio.h>  
    
    int main() {  
        int a, b, c, i;  
        
        // 输入两个整数 a 和 b  
        scanf("%d %d", &a, &b);  
        
        // 确保 a <= b  
        if (a > b) {  
            printf("输入无效,a 应该小于或等于 b。\n");  
            return 1;  
        }  
        
        // 遍历从 a 到 b 的每一个数字 c  
        for (c = a; c <= b; c++) {  
            int sum = 0;  // 每次重置 sum  
            
            // 遍历小于 c 的所有 i  
            for (i = 1; i < c; i++) {  
                if (c % i == 0) {  
                    sum += i;  // 如果 i 是因子,累加到 sum  
                }  
            }  
            
            // 检查 sum 是否等于 c  
            if (sum == c) {  
                printf("%d\n", c);  // 输出符合条件的 c  
            }  
        }  
        
        return 0;  
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 创建了问题 12月11日