C语言基础练习题——考研真题精选

文章目录

  • 第01章:C语言入门
    • 输出格式
    • 预处理指令
  • 第02章:变量与进制
    • 标识符
    • 数据类型
    • scanf输入
    • 进制
    • 常量
  • 第03章:运算符与流程控制
    • 赋值运算符
    • 比较运算符
    • 逻辑运算符
    • 三元运算符
    • if-else
    • switch-case
    • for
    • while
    • break
    • continue
  • 第04章:数组
    • 赋值
    • 二维数组
    • char[]与字符串
  • 第05章:指针
    • &和*运算符
    • 指针与数组
  • 第06章:函数
    • 声明
    • 调用
    • 指针
    • static变量
  • 第07章:结构体与共用体
    • 结构体变量
    • 调用
    • 指针
  • 第08章:C语言常用函数
    • 字符串

第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流程图所示。
C语言基础练习题——考研真题精选_第1张图片

【答案】
程序如下:

#include
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

你可能感兴趣的:(C语言基础,c语言,考研)