程序错误请教(编程大神请进)(C语言)

#include<stdio.h>
#include<stdlib.h>
int main()
{
int a;
printf("number:\n");
scanf("%d",&a);
if(a=1)
printf("0001");
system("pause");
else if(a=2);
printf("0002");
system("pause");
return 0;
}

小弟刚接触C语言 不太懂 请教一下大神
在哪错了 为什么执行的时候printf出来了0001和0002?

看一下解析:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a;
printf("number:\n");
scanf("%d",&a);
if(a=1) //你这里是赋值,a=1为真,所以进入了if,应该要用a==1
printf("0001");
system("pause");
else if(a=2); 这个地方不应用分号,如果有分号,表示这个if语句结束了,而下面的printf根本就不在这个if语句中,所以一定会执行
printf("0002");
system("pause");
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-05
程序有错误,少了大括号

if(a=1){ //一个等号。把1赋值给a,赋值表达式的值为1,非0,真
printf("0001");
system("pause");
}
else if(a=2) ;//分号是空语句,什么也不做。

printf("0002");//这里已经离开了if...else...语句了,当然要执行
system("pause");
第2个回答  2013-01-05
if(a=1) 改成if(a==1)
else if(a=2); 改成else if(a== 2) 并且把后面的分号去掉
第3个回答  2013-01-05
if(a=1)改为if(a==1)

if(a=2)改为if(a==2)
第4个回答  2013-01-05
哈哈,,我的是刚接触C++……
相似回答