找出这C语言程序的错误

来源:百度知道 编辑:UC知道 时间:2024/06/11 07:17:24
# include<stdio.h>
# include<math.h>
main()
{ int x=0,y=0,z=0;
for(x=0;x<=16;x++)
{
if(x%2==1)break;
if(x%2==0)
for(y=0;y<=8;y++)
{
if(y%2==1)break;
if(y%2==0)
z=16-x-2*y;
if(x+2*y+z=16)
printf("x=%-3d y=%-3d z=%-3d\n",x,y,z)
}
getchar();

}
上面是我编写的程序,但在C-FREE上运行出现错误,帮忙找一下啊

我用VC编译的,有两个错误,出现在这句程序
if(x+2*y+z=16)
printf("x=%-3d y=%-3d z=%-3d\n",x,y,z)

if里面的判断语句应该是x+2*y+z==16,而不是x+2*y+z=16,因为x+2*y+z=16是赋值表达式,不是判断式。x+2*y+z==16才是表达式。

printf("x=%-3d y=%-3d z=%-3d\n",x,y,z)漏了“;”,C语言程序每句程序后面都要“;”,表示一句程序的结束

慢慢学习吧,长江后浪推前浪,相信有一天你会学好的,慢慢体会编程的乐趣!!

if(x+2*y+z=16) /* "="应为“==” */

printf("x=%-3d y=%-3d z=%-3d\n",x,y,z)
/* 缺少“;” */

第14行的:if(x+2*y+z=16)错了,
因为一个=是赋值语句,赋值并不可以赋给表达示,你应该用二个==号,才表示两边相等的意思。。。

看到了吧 if(x+2*y+z=16)应该是==,即if((x+2*y+z)==16),要不然编译解释为16赋给z,然后相当if(x+2*y+z)即if((x+2*y+z)!=0)这就是运行出错的原因了。