【发布时间】:2021-03-05 15:20:28
【问题描述】:
我正在尝试制作一个程序,允许用户插入 5 个数字,定义它们是偶数还是奇数,将它们存储到数组中并打印用户插入到数组中的数字。
这是一个非常简单的程序,我这样做只是为了学习如何使用数组。问题是它不会打印出数组的值。为什么?
int main () {
int list [5];
int i = 0;
while (i < 5) {
printf("Insert the number\n");
scanf("%d", &list[i]);
if (i % 2 == 0) {
printf("Even\n");
}
else{
printf("Odd\n");
}
i++;
}
i=0;
while (i < 5){
printf("%d\n", &list[i]);
i++;
}
return 0;
}
【问题讨论】:
-
您是否尝试过在调试器中逐行运行代码,同时监控所有变量的值,以确定您的程序在哪个点停止按预期运行?如果您没有尝试过,那么您可能想阅读以下内容:What is a debugger and how can it help me diagnose problems? 您可能还想阅读以下内容:How to debug small programs?。
-
附带说明:在不检查返回值的情况下使用
scanf是不安全的。有关详细信息,请参阅此页面:A beginners' guide away from scanf() -
顺便说一句:如果你写
for ( i = 0; i < 5; i++ ),那么你就不需要i = 0和i++这行了。这是一种更紧凑的编写方式。但你这样做的方式并没有错。如果您觉得按照自己的方式做这件事更自在,那么在学习语言时这样做并没有错。 -
关于最后一条评论,我知道这会更容易,但是我的老师没有提出这个话题,因此不允许我们做他还没有解释过的事情。无论如何感谢您的提示
-
因为您是 Stack Overflow 的新手,并且在没有通知我的情况下回复了我的评论,所以我想指出以下几点:由于您在评论一个不属于我的问题,如果您想让我收到您的评论,它必须包含
@AndreasWenzel。您只需输入@和前几个字符,自动完成(TAB 键)将为您输入其余字符。否则,我可能不会注意到您的回复(我这次确实注意到了)。
标签: c printf scanf pass-by-reference pass-by-value