c - 将用户输入值存储到数组中并显示它们会显示垃圾值
问题描述
我正在开发一个简单的程序,要求用户输入偶数并输入奇数。它们分别存储在数组storeItem1
中storeItem2
。程序询问用户两次。问题出在我的输出上。我想显示用户输入的值。
我将用于显示值的 for 循环的退出条件是if(!storeItem1)break;
,一旦数组的当前元素为空,循环就会结束。然而,输出最终是这样的。
Even Numbers Are: 2
Even Numbers Are: 4
Even Numbers Are: some garbage value
Odd Numbers Are: 1
Odd Numbers Are: 3
Odd Numbers Are: some garbage value
我不明白的是,一旦循环的迭代到达数组元素为空的部分,为什么条件不会终止循环?它不应该在显示所有不为空的数组值后结束吗?这是我的代码附在下面。提前致谢!
#include<stdio.h>
main(void)
{
int storeItem1[8], storeItem2[8], even, odd;
int i=0, j=0, dis=0, dis2=0;
do
{
printf("Input Even Number: ");
scanf("%d",&even);
storeItem1[j]=even;
printf("Input Odd Number: ");
scanf("%d",&odd);
storeItem2[j]=odd;
++j;
++i;
}while(i<2); //asks user to input twice
//display the stored values
for(dis;dis<8;++dis) //display all input even numbers
{
if(!storeItem1[dis])break; //exits loop when current array element is null
printf("\nEven Numbers are: %d",storeItem1[dis]);
}
for(dis2;dis2<8;++dis2) //display all input odd numbers
{
if(!storeItem2[dis2])break; //exits loop when current array element is null
printf("\nOdd Numbers are: %d",storeItem2[dis2]);
}
}
解决方案
我很不好意思这么快回答我的问题。我修改了我的循环条件,
for(dis;dis<i;++dis)
{
//if(!storeItem1[dis])break; //exits loop when current array element is null
printf("\nEven Numbers are: %d",storeItem1[dis]);
}
for(dis2;dis2<j;++dis2)
{
//if(!storeItem2[dis2])break; //exits loop when current array element is null
printf("\nOdd Numbers are: %d",storeItem2[dis2]);
}
循环自动终止,无需条件语句退出。for 初始化中的条件已被修改,使得变量dis<i and dis2<j
和 一旦达到与 相同的值就会终止i and j
。
谢谢你们。
推荐阅读
- c++ - 其他项目调用的 boost::mutex 导致访问冲突
- azure - Azure 虚拟机映像在部署时禁用自动登录
- winforms - 如何跟踪复选框的状态变化?
- python - 如何在 LIKE '%input%' 子句中防止 SQL 注入?
- .net - Windows 窗体触摸屏应用程序未拾取按钮单击
- unix - 如何在 Bash 中创建多个用户帐户?
- apache - 阿帕奇 http 服务器
- mysql - 为什么使用来自 ruby 的 LOAD DATA LOCAL INFILE 插入 MySQL 中的行数较少
- ajax - 使用 javascript 编写工作表 API 失败
- delphi - Delphi {$INCLUDE filename} 使用 dpr 文件的一部分