C++ 代码不';t在-1上终止
该程序从用户处读取输入并将值存储在数组中,当用户输入-1或条目数达到100时停止 输入-1时,此代码不会终止C++ 代码不';t在-1上终止,c++,C++,该程序从用户处读取输入并将值存储在数组中,当用户输入-1或条目数达到100时停止 输入-1时,此代码不会终止 #include <iostream> using namespace std; main (){ int c [100]; int i, z; do { int z, i=0; cout << "Enter value the number (-1 to end input): "; cin &g
#include <iostream>
using namespace std;
main (){
int c [100];
int i, z;
do {
int z, i=0;
cout << "Enter value the number (-1 to end input): ";
cin >> z;
if (z != -1) {
c[i] = z;
}
i++;
} while (z != -1 && i < 100);
cout <<"Total number if positive integer entered by user is: " << i-1;
}
#包括
使用名称空间std;
主要(){
INTC[100];
int i,z;
做{
intz,i=0;
cout>z;
如果(z!=-1){
c[i]=z;
}
i++;
}而(z!=-1&&i<100);
cout变量z
和i
在do while
循环外声明
int i, z;
但是名称相同的新变量在循环中声明
do {
int z, i=0;
循环有一个。这会导致变量的第二次声明有效且没有重新定义,因为它们有自己的作用域。在循环内对z
和i
的操作会操作在循环内声明的变量
do {
int z, i=0;
由于循环的控制表达式不在循环的块范围内,因此该表达式访问在循环之前声明的变量。
因此,“外部”z
和i
变量是“未触及的”,循环永远不会终止并且是“无止境的”
通过删除循环中变量i
和z
的声明,并通过0初始化“first”i
,可以简单地解决这个问题:
#include <iostream>
using namespace std;
main (){
int c [100];
int z;
int i=0;
do {
cout << "Enter value the number (-1 to end input): ";
cin >> z;
if (z != -1) {
c[i] = z;
}
i++;
} while (z != -1 && i < 100);
cout <<"Total number if positive integer entered by user is: " << i-1;
}
#包括
使用名称空间std;
主要(){
INTC[100];
intz;
int i=0;
做{
cout>z;
如果(z!=-1){
c[i]=z;
}
i++;
}而(z!=-1&&i<100);
cout如果变量的范围有问题,下面的代码将起作用
#include<iostream>
using namespace std;
main (){
int c [100];
int i, z;
i = 0;
do {
cout << "Enter value the number (-1 to end input): ";
cin >> z;
if (z != -1) {
c[i] = z;
}
i++;
} while (z != -1 && i < 100);
cout <<"Total number if positive integer entered by user is: " << i-1;
}
#包括
使用名称空间std;
主要(){
INTC[100];
int i,z;
i=0;
做{
cout>z;
如果(z!=-1){
c[i]=z;
}
i++;
}而(z!=-1&&i<100);
您是否可以再次声明可变z iside循环。int z,i=0->init i=0;循环未终止的唯一原因是中的条件未满足。那么您是否花时间调查z
和i
的值?存在一个逻辑错误。i
再次初始化为1 in环路