我是C.Sc课程的新手,我们被教授C课程.
我正在尝试一些基本的东西.目前我正在学习用户定义的功能.
以下代码是我尝试过的代码.我知道这很简单,但我无法理解为什么会产生如此奇怪的输出.
#include <stdio.h>
int add(int a); //function declaration
int main (void)
{
int b,sum;
printf("\nEnter a number: ");
scanf("%d", &b);
sum = add(b); //function calling
printf("\nSum: %d\n\n", sum);
}
int add(int a) //function definition
{
int result;
for(int i = 0; i < a; i++)
{
result = result + i;
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
1的输出是32743
2的输出是32594
3的输出是32704
奇怪的是每次输出更改为相同的数字.
考虑到我在C.Sc.的经历,这很奇怪.直到约会.请解释一下该计划正在做什么.
这是发布此类问题的正确位置.对?
你忘了初始化结果.
int result = 0;
Run Code Online (Sandbox Code Playgroud)
说明:如果你没有初始化变量,它将有一个"随机"数字,然后你将获得"随机"输出
另外:如果a = 0或negatif数,你也忘了返回一些东西!而你的主要需要返回一个int.
此外,没有必要进行循环,因为你返回它内部,你总是在循环中返回0.
以下是对代码的更正:
#include <stdio.h>
int add(int a); //function declaration
int main (void)
{
int b,sum;
printf("\nEnter a number: ");
scanf("%d", &b);
sum = add(b); //function calling
printf("\nSum: %d\n\n", sum);
return 1;
}
int add(int a) //function definition
{
int result = 0;
for(int i = 0; i < a; i++)
{
result = result + i;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
以10为输入:https://ideone.com/6BjM6y