(1).有以下程序:
#include<stdio.h>
void main(){
int case,float printF;
printf("输入2个数\n");
scanf("%d,%f",&case,&printF);
printf("%d,%f",case,printF);
}
该程序在编译时产生错误,其出错原因是【A】
(A).定义语句出错,case是关键字,不能用作用户自定义标识符
(B).定义语句出错,printF不能用作用户自定义标识符
(C).定义语句无错,scanf不能作为输入函数使用
(D).定义语句无错,printf不能输出case的值
分析:int、case、if、else、printf、scanf、for、switch等等是关键字,不能用于用户标识符。
(2).有以下程序:
定义语句:int x = 10;则表达式x -= x + x的值为【B】
(A).-20
(B).-10
(C).0
(D).10
分析:考察赋值表达式的运算方向,自右向左进行。赋值表达式格式为:变量名=表达式,赋值运算左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。x-=x+x ==>x=x-(x+x)
(3).有以下程序:
设定义,int a=1,b=2,c=3,以下语句中执行效果与其他三个不同的是【C】
(A).if(a>b)c=a,a=b,b=c;
(B).if(a>b){c=a,a=b,b=c;}
(C).if(a>b)c=a;a=b;b=c;
(D).if(a>b){c=a;a=b;b=c;}
分析:第一次做这题的时候觉的简单,没想到掉坑里了。
选项里面,只有C是执行第一个,而其他选项都是执行到b=c。
(4).有以下程序:
程序运行后的输出结果是【C】
(A).3
(B).5
(C).7
(D).9
分析:以往遇见的switch语句default都是放后面的,拿到这个题第一眼确实有点懵,不知道后面执不执,使用调试了以下,进行了验证,一共循环2次,把每次的循环结构都打印出来。
程序修改之后:
发现只要不遇的break就会一直往下执行,default的位置可以是任意的。
(5).有以下定义:
编译时会出现错误的是【C】
(A).char a = 'a';
(B).char a = '\n';
(C).char a = 'aa';
(D).char a ='\x2d';
分析:在C、D之间犹豫了,char空间只有1字节的大小,而‘\x2d’表示16进制的方式赋值,2d是16禁止,表示1个数。
(6).有以下程序:
程序运行后的输出结构是【C】
(A).32
(B).12
(C).21
(D).22
(7).有以下定义:
int a[4][10],*p,*q[4],且0<=i<4,则错误的赋值是【】
(A).p=a;
(B).q[i]=a[i];
(C).p=a[i];
(D).p=&a[2][1];
分析:a是一个二维数组,*p指向的是一个地址,返回类型是 int *。*q[4]是一个指针数组,这个数组内存放了4给地址。【p=a错误,p指针可以指向一个一维数组,但不能指向一个二维数组】
【q[i]=a[i]把二维数组一维化,存放到指针数组中】【p=a[i]数组一维化,p指针指向第i行】
(8).有以下程序:
程序运行后的输出结构是【C】
(A).3 3 4 4
(B).2 0 5 0
(C).3 0 4 0
(D).0 3 0 4