该程序的功能是查看数组的元素是否合计为零。
某些元素可能是负数,用户输入将包含此多维数组中每行的3个整数。
程序只应在满足整数n条件时启动。
#import <iostream>
using namespace std;
int main (){
int n;
int myArray[2][2];
cin >> n;
int i;
int j;
if (1<n<100)
{
for (i=0; i!=3; i++)
{
for (j=0; j != 3; j++)
cin >> myArray[i][j];
}
{
int l = myArray[i][j] + myArray[i][j];
if (l==0)
{
cout << "Yes";
}
else
cout << "No";
}
}
else
cout << "foo";
return 0;
}
答案 0 :(得分:1)
#import <iostream>
应该是
#include<iostream>
接下来,
if (1 < n < 100)
可悲的是,C ++不喜欢这种语法。每个比较都需要自己处理。
if (1 < n && n < 100)
这里的大括号可能不是你想要的。
for (i=0; i!=3; i++)
{
for (j=0; j != 3; j++)
cin >> myArray[i][j];
}// looks OK, but made suspicious by the next line
{ //open brace with no conditional attached. Valid, but unusual enough to draw
// a second glance
int l = myArray[i][j] + myArray[i][j];
if (l==0)
{
cout << "Yes";
}
else
cout << "No";
}
清理格式显示:
for (i = 0; i != 3; i++)
{
for (j = 0; j != 3; j++)
cin >> myArray[i][j];
}
{
int l = myArray[i][j] + myArray[i][j];
if (l == 0)
{
cout << "Yes";
}
else
cout << "No";
}
以int l = myArray[i][j] + myArray[i][j];
开头的块未附加到任何条件,并且将始终运行。
不确定你在这里要做什么,所以我只能猜测一下。这个猜测也没有多大意义。
我建议您在使用条件表达式时始终使用所有大括号来保护自己,并使代码的流程对其他人更具可读性。
但是等等!还有更多!
int myArray[2][2];
定义具有两行和两列(0和1)的2D数组。但是这个:
for (i = 0; i != 3; i++)
{
for (j = 0; j != 3; j++)
{
cin >> myArray[i][j];
}
}
将尝试访问3行和3列(0,1和2)。这会编译并表现出不良行为,如果你很幸运会导致程序崩溃。如果你不幸运,它看起来会有效,但会在程序中悄然破坏其他东西。
答案 1 :(得分:0)
你的程序中有很多错误
其中一些逻辑错误
您的第一个错误是当您检查输入n
时条件不正确并始终返回true
(1<n<100)
而应该(1<n && n<100)
给您什么你期待它
你的第二个错误是超出范围的数组索引
myArray[2][2];
每行和每列只有2个元素,你在for循环中输入3个元素到它的索引0,1,2
for (i=0; i!=3; i++)
{
for (j=0; j != 3; j++)
cin >> myArray[i][j];
}
阵列应为myArray[3][3];
或for循环应该是:
for (i=0; i!=2; i++)
{
for (j=0; j !=2; j++)
cin >> myArray[i][j];
}
这句话没有条件且不符合逻辑:
int l = myArray[i][j] + myArray[i][j];
仅在i=3
和j=3
myArray[3][3]
l
的结果总是值为:
myArray[3][3]+myArray[3][3]
但是myArray[3][3]
是数组索引超出范围
所以它总是打印"No"
我希望你现在能理解你的错误