You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言程序调试求助:正整数平方等于前N个奇数和代码报错

问题排查与修复

你的程序核心逻辑错误,导致无法正确计算前N个奇数的和,具体问题和修复方案如下:

核心错误点

  • 错误的判断条件:if (N%i==1) 这个语句是在筛选“能让N除以它余1”的数,和“奇数”完全无关,这是逻辑的根本错误。
  • 循环逻辑偏差:你需要累加的是前N个奇数(1、3、5...直到第N个),当前循环的逻辑完全没有围绕这个目标展开。

修复后的代码

方案一:直接生成前N个奇数累加

这种方式效率更高,直接遍历N次,每次生成对应的奇数:

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int N;
    int S = 0;
    int i;
    
    printf("donner un entier >0: ");
    scanf("%d", &N);
    
    // 遍历N次,每次生成第i个奇数:2*i -1
    for (i = 1; i <= N; i++) {
        S += 2 * i - 1;
    }
    
    printf("le carré de l'entier est égal a %d", S);
    return 0;
}

方案二:遍历并筛选奇数,直到收集够N个

这种方式更直观,筛选出奇数并累加,直到达到N个:

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int N;
    int S = 0;
    int i = 1;
    int count = 0;
    
    printf("donner un entier >0: ");
    scanf("%d", &N);
    
    while (count < N) {
        // 判断当前数是否为奇数
        if (i % 2 == 1) {
            S += i;
            count++;
        }
        i++;
    }
    
    printf("le carré de l'entier est égal a %d", S);
    return 0;
}

验证逻辑

前N个奇数的和公式为 (N^2),比如输入N=3,前3个奇数是1+3+5=9=3²,修复后的程序会正确输出这个结果。

内容的提问来源于stack exchange,提问作者Hichem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 02:51:06