C++中数组各元素 求模运算

来源:百度知道 编辑:UC知道 时间:2024/06/14 14:41:17
定义一个数字 例如a[4]={2,6,7,9};,求它各个元素与7和 并用10求模
for(int i=0;i<4;i++)
a[i]=(a[i]+7)%10;
可是错误提示老是有 left operand must be l-value
请问这错误应该如何改正?谢了
没有设为常量啦……要求是输入一个四位整数,然后把各位数字加7 并与10求模
是不是最初把各位的数值放入数组放错了?
void main()
{
cout<<"请输入包含4个数位的整数:";
int x;
cin>>x;

int a[4];
while(x)
{
for(int i=0;i<4;i++)
a[i]=x%10;
x=x/10;
}
encrypt(a);
}

void encrypt(int a)
{
int sum=0;

for(int i=0;i<4;i++)
a[i]=(a[i]+7)%10;

swap(&a[0],&a[2]);
swap(&a[1],&a[3]);

for( i=0;i<4;i++)
a[i]=a[i]*(int)pow(10,i);
for(i=0;i<4;i++)
sum+=a[i];
cout<<"加密后的整数为:"<<sum<<endl;
}

void swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}

left operand must be l-value:赋值号(‘=’)左边的操作数必须是一个左值。通俗的说:左值就是可以改变的值的变量。

发生这个错误的原因是你把常量(或不可改变值的变量)放到了赋值号的左边。

你那个没问题呀,除非你声明a[4]为常量了。

对应错误修改如下:

#include<iostream>
#include<cmath>
using namespace std;

//void encrypt(int a) //这个形参也应该是数组呀
void encrypt(int a[])
{
int sum=0;

for(int i=0;i<4;i++)
a[i]=(a[i]+7)%10;

//swap(&a[0],&a[2]);
//swap(&a[1],&a[3]);
swap(a[0],a[2]);
swap(a[1],a[3]);

for( i=0;i<4;i++)
a[i]=a[i]*(int)pow(10,i);
for(i=0;i<4;i++)
sum+=a[i];
cout<<"加密后的整数为:"<<sum<<endl;
}

void swap(int *p,int *q)
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
void main()
{
cout<<"请输入包含4个数位的整数:";
int i=0,x;
cin>>x;

int a[4];
while(x)
{
//for(int i=0;i<4;