检查用户的负输入,使用数组
Checking negative input from user, working with array
我需要写一个代码,以从用户那里获得5个正数。这是我的代码:
cout << "Write 5 positive numbers:" << endl;
int input;
int num[5];
for(int i = 0; i <= 4; ++i){
cin >> input;
if(input < 0){
cout << "Error" << endl;
}else{
num[i] = input;
}
}
for(int i = 0; i <= 4; ++i){
cout << "Number " << i << " = " << num[i] << endl;
}
问题是数组应仅存储正数。当我输入负num
时,它也将其存储,然后打印垃圾值。例如,输入为:3 -2 1 6 8输出为:
Number 0 = 3
Number 1 = -1608404014
Number 2 = 1
Number 3 = 6
Number 4 = 8
代码应询问用户输入输入,直到数组中的所有5个存储桶仅填充正数
垃圾值是打印的,因为如果输入负数,则跳过了代码中的数组的索引。
对于您的程序,要继续向用户询问输入,直到用户输入正值为止,您在if block
中需要一个while loop
,如果输入负值,则会显示Error
消息。
还需要从代码中删除for loop
中的else block
,因为这是导致垃圾价值打印的原因。
尝试以下代码
int main()
{
cout << "Write 5 positive numbers:" << endl;
int input;
int num[5];
for(int i = 0; i <= 4; i++)
{
cin >> input;
if(input < 0)
{
cout << "Error" << endl;
while(input < 0)
{
cin>>input;
}
}
num[i] = input;
}
for(int i = 0; i <= 4; i++){
cout << "Number " << i << " = " << num[i] << endl;
}
return 0;
}
,因为输入值为负,您不将其存储到元素i
,但仅弹出消息,然后您在没有输入的情况下离开了此元素,并增加了循环计数器,并且您猜测UN - 发射变量具有垃圾值:
该解决方案是使用嵌入式的Wile循环在负值以负值阻止,直到输入有效值为止:
int input;
int num[5];
for(int i = 0; i <= 4; ++i)
{
cin >> input;
while(input < 0)
{
cout << "Error" << endl;
cout << "num[ " << i << "]: ";
cin >> input;
}
num[i] = input;
}
for( i = 0; i <= 4; ++i){
cout << "Number " << i << " = " << num[i] << endl;
}
相关文章:
- 检查TCHAR数组输入是否为带符号整数C++
- C++数组输入不接受一定数量的整数
- 为什么我的代码无法处理大型数组输入(>10000)?
- 我正在努力处理多维数组输入和输出,我管理输入,但是打印无法按计划工作
- 使用无符号字符数组输入十六进制数
- C++用用户输入在循环中填充 char 数组:输入整个字符串时到底发生了什么?
- 如何从用户获取数组输入
- C 2x2数组输入线
- 字符数组输入限制
- 将字符串数组输入到函数C++
- C++:如何将普通话(字符串)分配给用户使用数组输入的数字 &运算符问题
- 数组排序、数组输入、数组输出
- 将字符数组输入stdin
- 如何在 c++ 中为对象数组输入字符串
- 如何在c++ mex文件中访问多维数组输入
- 读取文件并将其作为整型数组输入
- 从c++文件中获取输入(矩阵数组输入)
- 数组输入不工作
- 函数结构数组输入cin问题
- 结束数组输入(c++行业标准)