文章目录
第01章:C语言入门
输出格式
【华南理工大学2018研】十六进制形式输出整数的格式说明符是( )。
A.%u
B.%ld
C.%x
D.%o【答案】C
【解析】A表示输出的是无符号整型;B表示输出的是有符号长整型;D表示输出的是八进制。
预处理指令
【中央财经大学2018研】以下叙述错误的是( )。
A.在程序中凡是以“#”开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#include MAX是合法的宏定义命令行
D.C程序对预处理命令行的处理是在程序执行的过程中进行的【答案】D
【解析】在C语言中,凡是以“#”开头的行都称为编译预处理命令行,为了区别C语句,后面是不加分号的。编译预处理是在编译程序对C源程序进行编译前执行的,而不是在程序执行过程中进行的。
第02章:变量与进制
标识符
【武汉科技大学2019研】
以下均是合法变量名的是( )。
A.#name total
B.node value_max
C._var long
D.stu-code a+b【答案】B
【解析】C语言中变量名只能包含数字,字母和下划线,且只能以字母和下划线开始。A项含非法字符#,错误;C中long为关键字,变量不能以关键字命名;D中含非法字符-和+。
【四川大学2017研】以下不合法的用户标识符是( )。
A.J2_KEY
B.Double
C.4d
D._8_【答案】C
【解析】标识符只能包含数字,字母,下划线,且不能以数字开头,选项C错误。
数据类型
【武汉科技大学2019研】
以下选项中不属于C语言类型的是( )。
A.short int
B.unsigned long int
C.char
D.bool【答案】D
【解析】C语言中没有bool型,只有C++才有boolean型,也称bool。C语言中一般用“0”表示“假”,用“1”表示“真”。
【中央财经大学2018研】以下程序运行后的输出结果是( )。
int main(){ double d; float f; long l; int i; i=f=l=d=20/3; printf("%d %ld %.1f %.1f\n",i,l,f,d); return 0; }
A.6 6 6.0 6.0
B.6 6 6.7 6.7
C.6 6 6.0 6.7
D.6 6 6.7 6.0【答案】C
【解析】赋值运算符是自右向左结合的,所以首先执行d=20/3=6,同时i、l、f也全为6,在进行输出时,f和d要保留一位小数,所以答案选C。
【四川大学2017研】有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
N-S图如图1 计算某点建筑高度的N-S流程图所示。
【答案】
程序如下:#include<stdio.h> int main(){ int h=10; float x1=2,y1=2,x2=-2,y2=-2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4; printf("请输入一个点(x,y):"); scanf("%f,%f",&x,&y); d1=(x-x4)*(x-x4)+(y-y4)*(y-y4); //求该点到各中心点距离 d2=(x-x1)*(x-x1)+(y-y1)*(y-y1); d3=(x-x2)*(x-x2)+(y-y2)*(y-y2); d4=(x-x3)*(x-x3)+(y-y3)*(y-y3); if(d1>1&&d2>1&&d3>1&&d4>1) //判断该点是否在塔外 h=0; printf("该点高度为%d\n",h); return 0; }
scanf输入
【武汉科技大学2019研】
若有声明语句:int x; char y[20]; double z;则正确的输入语句是( )。
A.scanf(“%d%c%le\n”,&x,&y,&z);
B.scanf(“%2d%s%lf”,&x,&y,&z);
C.scanf(“%d%s%lf”,&x,y,&z);
D.scanf(“%x%s%3.2f”,&x,y,&z);【答案】C
【解析】y为一维数组名,指向数组首元素的地址,因此不需要再使用取地址运算符&,AB错误;D中%3.2f表示长度为3,小数为2位,但是小数点也占一位,因此D错误,答案选C。
进制
【华南理工大学2018研】与十进制1100等值的十六进制数是( )。
A.44A
B.44C
C.54A
D.54C【答案】B
【解析】1100转换成二进制为0100 0100 1100,因此转换为十六进制为44C。
常量
【北京航空航天大学2018研】若已知有如下宏定义
#define CANBERRA(x,y) ((x-y)/(x+y))
则以下表达式中,返回结果值最大的是( )。
A.CANBERRA(3.0,2.0);
B.CANBERRA(4.0,1.0);
C.CANBERRA(1.0+2.0,0.0+2.0);
D.CANBERRA(1.0+2.0,1.0+1.0);【答案】C
【解析】A项中为1.0/5.0,结果为0.2;B项中为3.0/5.0,结果为0.6;C项中的宏替换后为(1.0+2.0-0.0+2.0)/(1.0+2.0+0+2.0)=1.0;D项中宏替换后为(1.0+2.0-1.0+1.0)/(1.0+2.0+1.0+1.0)=0.6,因此最后答案为C。
【中央财经大学2018研】若有如下宏定义:
#define N 2 #define y(n) ((N+1)*n)
则执行下列语句:z=4*(N+y(5));后的结果是( )。
A.语句有错误
B.z值为68
C.z值为60
D.z值为180【答案】B
【解析】y(5)=15,z=4*(N+y(5))=4*17=68,答案选B。
第03章:运算符与流程控制
赋值运算符
【武汉科技大学2019研】
若a、b和t都为int变量,则下面不能交换变量a和b值的是