关于c语言的一个简单程序

来源:百度知道 编辑:UC知道 时间:2024/06/25 00:01:55
代码如下:
#include <stdio.h>
int main()
{
int a,b,c,i;
for(i=100;i<=999;i++)
i/100=a;
(i-100*a)/10=b;
(i-100*a)%10=c;
if(i==a*a*a+b*b*b+c*c*c)
{
printf("%i",i);
}
return 0;
}
错误如下:
--------------------Configuration: Cpp1 - Win32 Debug--------------------
Compiling...
Cpp1.cpp
f:\我的东西\编程题\cpp1.cpp(6) : error C2106: '=' : left operand must be l-value
f:\我的东西\编程题\cpp1.cpp(7) : error C2106: '=' : left operand must be l-value
f:\我的东西\编程题\cpp1.cpp(8) : error C2106: '=' : left operand must be l-value
Error executing cl.exe.

Cpp1.obj - 3 error(s), 0 warning(s)

不知道怎样改,请知道的朋友帮个忙!!!!

首先,并不十分了解这个程序的本意是什么,但是错误是很明显的,看提示就该知道了。
赋值符号“=”左边的操作数必须是合法的左值,表达式不是合法的左值(这也是为什么可以通过像你那样写等于操作的时候可以避免把等号写成赋值符号的原因),如下修改:
a=i/100;
b=(i-100*a)/10;
c=(i-100*a)%10;
还有:感觉上for循环下是不是少了一对花括号,不然的话不太协调。

i/100=a;
(i-100*a)/10=b;
(i-100*a)%10=c;

= 是把右边的值赋给左边

你这三句左边的是表达式,不能被赋值

把这三句左右两边换一下即可

#include <stdio.h>
int main()
{
int a,b,c,i;
for(i=100;i<=999;i++)
a=i/100; //是让右边的值变成左边的
b=(i-100*a)/10;
c=(i-100*a)%10;
if(i==a*a*a+b*b*b+c*c*c)
{
printf("%i",i);
}
return 0;
}

i/100=a;
(i-100*a)/10=b;
(i-100*a)%10=c;
这三行左边必须是左值,也就是可以被赋值的变量。而不能是表达式。
你把这三行的等号左右对掉试试。