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

 

posted @ 2021-06-18 06:45  myrj  阅读(299)  评论(0编辑  收藏  举报