我试图使用来自" thenewboston"的教程来找到5个数字的总和(使用C语言)。在YouTube上。我的代码是:
int main(int argc, char *argv[]) {
int a, b, c, d, e;
int array[5]={a, b, c, d, e};
int sum=0;
int i;
int j;
printf("Enter your 5 numbers: ");
scanf("%d, %d, %d, %d, %d", &a, &b, &c, &d, &e);
for (i = 0; i < 5; i++){
sum+=array[i];
}
printf("The sum of 5 numbers is:%d",sum);
return 0;
}
但奇怪的是,无论我输入的是什么5个数字,我总是得到48。
答案 0 :(得分:1)
丢弃变量a, b, c, d, e
和array
保持不变,反之亦然
删除第一个printf上的变量:
print("Enter 5 numbers: ");
不使用变量时不要放置变量。
当您将scanf设为scanf("%d, %d", &var1, &var2);
时,您还必须输入与
Enter 5 numbers: 10, 20
工作示例(对数组更有效):
int main() {
int input[5];
int sum;
printf("Enter 5 numbers: ");
scanf("%d, %d, %d, %d, %d", &input[0], &input[1], &input[2], &input[3], &input[4]);
int i;
for (i = 0; i < 5; i++) {
sum += input[i];
}
printf("The sum is %d", sum);
return 0;
}
答案 1 :(得分:0)
您不能将a
,b
,c
,d
或e
存储到数组array
中。读完后,需要将它们存储在数组中。
您的array
声明不会创建指向变量的指针数组 - 它会创建一个指向五个整数字段的连续块的单个指针。您只需使用a
等地址即可更新这些数组字段,因为您的数组并未指向它们。
将它们存储在数组中的最明显,最清晰,最简单的方法是(我推荐):
array[0]=a;
array[1]=b;
array[2]=c;
array[3]=d;
array[4]=e;
在for
循环开始之前执行此操作。