添加数组元素:需要左键作为赋值的左操作数



如果我们想取得好成绩,我一直在尝试做老师在学校给我们的一个具体问题,但我做不到。 但是现在,我实际上对解决这个问题非常感兴趣。


{
int i,n,a[100],c;
cout <<"n=";
cin >>n;
for(i=1;i<=n;i++)
{
cout <<"a["<<i<<"]=";
cin>> a[i];
}
for (i=2;i<=n-1;i++)
if (a[i]/10==0)
{
c=a[i];
a[i]=a[i-1]+a[i+1];
a[i-1]+a[i+1]=c;
}
for (i=1;i<=n;i++)
{
cout<<"a["<<i<<"]="<<a[i]<<endl;
}
return 0;
}

ERROR AT: a[i-1]+a[i+1]=c; lvalue required as left operand of assignment.

例如,一旦完成,我必须解决的问题是:对于 n=5 和向量 a=(22,4,10,5,16)将显示什么?

嗨,理查德。我实际上不希望这条线上发生任何事情,而是希望发生错误的原因。我对这部分代码所做的是应用交换算法,例如,当代码完成并且我必须在 CodeBlocks 应用程序中按 F9 时,将有一个选定的 n,问题告诉我它是 5,然后我必须选择 a 向量中显示的 5 个数字,即 22,4,10,5,16 例如: a[1]=22, a[2]=4, a[3]=10, a[4]=5, a[5]=16..完成所有这些操作后,应用程序必须将我的 a[1] 更改为 a[2],因此 a[1] 的值为 a[2],依此类推。

您正在为常量赋值:a[i-1]+a[i+1]=c;因为上面的语句不返回元素的地址,而是返回该地址中的值,该值当然是常量。就像你写的:

5 = n;
  • 要解决您的问题,请执行以下操作:

    (a[i-1]+a[i+1])=c; becomes: 
    c = (a[i-1]+a[i+1]); // because c is not a constant
    

最新更新