C语言:易错题
1. int x=y=z=0;//实际只声明了变量x,而变量y,z并没有声明。可以修改为:int x=0,y=0,z=0; 或int x,y,z; x=y=z=0;
2.int z=(x+y)++;//赋值只能给变量赋值,不能给表达式或常量赋值;自增或自减实质是赋值,所以自增自减只能对变量,不能是表达式或常量;x+y为表达式不能自增
3.d%=2.5;//相当于 d=d%2.5; %左右两边只能是整数,不能是小数
4.逗号表达式:
#include <stdio.h> int main() { int c; printf("%d\n",(c=3*5,c*4,c+5)); //20 printf("%d\n",c); //15 printf("%d\n",(c=(3*5,c*4,c+5)));//20 int a=5,b=10; printf("%d",(a=a+b++,b+a,b+1)); //12 printf("\n%d,%d\n",a,b); //15,11 a=5,b=10; printf("%d",(a=a+ ++b,b+a,b+1)); //12 printf("\n%d,%d",a,b); //16,11 getchar(); }
5.scanf("%2d%3f",&a,&b);
#include <stdio.h> int main() { int a; float b,c; scanf("%2d%3f%4f",&a,&b,&c); printf("\n a=%d,b=%f,c=%f\n",a,b,c); getchar(); }
结果:
//程序填空:从键盘输入两个整数,并将它们交换后输出 #include <stdio.h> int main() { int i=0,j=0,k=0; scanf("%d,%*d,%d",&i,&j,&k); printf("%d,%d,%d",i,j,k); //键盘输入10,20,30回车,结果为10,30,0 //如果在%后有一个附加说明符*,表示本输入项在读入后不赋给相应的变量 //执行scanf()后,10给i,跳过20,30给j,k值不变 getchar(); }
5.printf("%d,%D\n",1,2);//1,D