c语言,这个代码我打的,感觉没有问题,但是结婚一直不对

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/436684952386160.jpg "#left")



{
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int odd(int o)
{
    int i,sum;
    int b=0;
    for(i=0;i<=o;i++)
    {
        b = (2*i)+1;
        sum += b;
    }
    return sum;
}
int main(int argc, char *argv[]) {
    int n;
    scanf("%d",&n);
    printf("%d",odd(n));
    return 0;
}

}

```

有一个问题:在odd函数中的sum变量没有初始化。因此,在执行变量累加操作时,sum的值可能是未定义的。在代码中我们对sum变量进行了初始化,避免了未定义的问题。另外,代码中的变量b在本例中是可以省略的,因为它只是一个中间变量,可以嵌入到累加语句中。
修改过的代码如下:

#include <stdio.h>
#include <stdlib.h>

int odd(int o)
{
    int i, sum = 0; // sum 需要初始化
    int b=0;
    for (i=0; i<=o; i++)
    {
        b = (2*i) + 1;
        sum += b;
    }
    return sum;
}

int main(int argc, char *argv[]) 
{
    int n;
    scanf("%d", &n);
    printf("%d", odd(n));
    return 0;
}

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢