int nn1,nn2;
for (int i=1;i<=m;i++) if (A[i]>minim) && (A[i]<maxim) nn1++;
for (int j=1;j<=n;j++) if (B[j]>minim) && (B[j]<maxim) nn2++;
if (nn1>nn2) cout<<"1";
if (nn1<nn2) cout<<"2";
if (nn1=nn2) cout<<"0";
return 0;
}
任何人都可以给我一个建议,为什么编译器显示错误?
答案 0 :(得分:3)
在这些if语句中,没有外部括号
for (int i=1;i<=m;i++) if (A[i]>minim) && (A[i]<maxim) nn1++;
for (int j=1;j<=n;j++) if (B[j]>minim) && (B[j]<maxim) nn2++;
我认为应该有
for (int i=1;i<=m;i++) if ( (A[i]>minim) && (A[i]<maxim) ) nn1++;
for (int j=1;j<=n;j++) if ( (B[j]>minim) && (B[j]<maxim) ) nn2++;
循环看起来很可疑。考虑到数组索引从0开始。例如,如果你有一个大小为N
的数组,那么索引的有效范围是[0, N-1]
您忘了初始化nn1
和nn2
。
看来你的意思是以下
int nn1 = 0, nn2 = 0;
for ( int i = 0; i < m; i++ )
{
if ( ( A[i] > minim ) && ( A[i] < maxim ) ) nn1++;
}
for ( int i = 0; i < n; i++ )
{
if ( ( B[i] > minim ) && ( B[i] < maxim ) ) nn2++;
}
if ( nn1 > nn2 ) cout << "1";
else if ( nn1 < nn2 ) cout << "2";
else cout << "0";
答案 1 :(得分:3)
如果条件允许,请将括号括起来。像if(condition1&amp;&amp; condition2)之类的东西。我还建议对每个分支条件使用大括号。
for (int i=1;i<=m;i++) {
if ((A[i]>minim) && (A[i]<maxim)) {
nn1++;
}
}
for (int j=1;j<=n;j++) {
if ((B[j]>minim) && (B[j]<maxim)) {
nn2++;
}
}
答案 2 :(得分:2)
在处理ifs
:
if ( (B[j]>minim) && (B[j]<maxim) )
| |
V V
Add these
所以,你的代码应该是:
int nn1,nn2;
for (int i=1;i<=m;i++) if ( (A[i]>minim) && (A[i]<maxim) ) nn1++;
for (int j=1;j<=n;j++) if ( (B[j]>minim) && (B[j]<maxim) ) nn2++;
if (nn1>nn2) cout<<"1";
if (nn1<nn2) cout<<"2";
if (nn1=nn2) cout<<"0";
return 0;
}
答案 3 :(得分:2)
围绕整个条件缺少括号:
for (int i=1;i<=m;i++) if((A[i]>minim) && (A[i]<maxim)) nn1++;
// ^ ^
答案 4 :(得分:2)
你忘了if语句中的()。试试这个:
int nn1,nn2;
for (int i=1;i<=m;i++) if ((A[i]>minim) && (A[i]<maxim)) nn1++; //note extra ()
for (int j=1;j<=n;j++) if ((B[j]>minim) && (B[j]<maxim)) nn2++; //note extra ()
if (nn1>nn2) cout<<"1";
if (nn1<nn2) cout<<"2";
if (nn1=nn2) cout<<"0";
return 0;
}
答案 5 :(得分:2)
在C ++中,应该有一个完整的&#34;()&#34;在&#34; if&#34;之后以及&#34;()&#34;是条件。 所以,你展示的代码是if(A [i]&gt; minim)&amp;&amp; (A [i] minim)&amp;&amp; (A [i]于