🎈 作者:Linux猿
🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
🎈 关注专栏: 数据结构和算法成神路【精讲】优质好文持续更新中……🚀🚀🚀
🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬
目录
一、前言
猿哥准备甄选 1000 道「C 语言考试真题」进行详细的讲解,适合于下面这两类小伙伴:
【1】临近考试,临阵磨枪,想快速提升的同学;
【2】日常练习,课后巩固,准备提升 C 语言的同学;
本篇文章选择 10 道「C 语言考试真题」进行讲解,下面来看下吧!
二、选择题
2.1 题目一
2.1.1 题目描述
执行以下程序段后,输出结果和a的值是( )。
int a = 10; printf(“%d”, a++);
A、11 和 10
B、11 和 11
C、10 和 11
D、10 和 10
2.1.2 真题解析
「答案」C
「解题思路」本题考查对自增运算符的理解。
a++ : 表示先使用 a 的值,然后再将 a + 1 赋值给 a;本题中,printf 中先输出 a,即:先使用 a 的值,然后执行 a = a + 1操作。
【扩展知识】
++a : 表示先执行 a = a + 1,然后再使用 a 的值。
如果题目代码修改如下:
int a = 10;
printf(“%d”, ++a);
则应该选 B。
同理,a-- 和 --a 也是同样的原理。
2.2 题目二
2.2.1 题目描述
已知字符 ‘A’ 的 ASCII 代码值是 65,字符变量 c1 的值是 ‘A’,c2 的值是 ‘D’,执行语句 printf(“%d,%d”, c1,c2-2); 后,输出结果是( )
A、65,66
B、A,B
C、65,68
D、A,68
2.2.2 真题解析
「答案」A
「解题思路」在 printf 输出中,输出参数使用 %d,所以输出的值一定是整数,排除 B 和 D,因为 ‘A’ 的代码值为 65,则 ‘D’ 的代码值为 68, 所以 c2 - 2 = 68 - 2 = 66,所以答案为 A。
2.3 题目三
2.3.1 题目描述
相同结构体类型的变量之间,可以()。
A、比较大小
B、地址相同
C、赋值
D、相加
「答案」C
「解题思路」首先,不同变量之间的地址是不同的,B 错误,通常情况下结构体是不可以比较大小和相加的,排除 A 和 D。
在相同类型的结构体变量间赋值时是直接内存复制的,即将他们的内存进行复制,而两个同类型的结构体变量属于同一种变量,所以赋值时是按照他们的内存分布来直接拷贝的.所以,在C语言中两个相同类型的结构体变量之间是可以相互赋值的。例如有结构体如下所示:
#include <stdio.h>
#include <stdlib.h>
struct Node {
int x;
int y;
};
int main()
{
struct Node a, b;
a.x = 5;
a.y = 10;
b = a;
printf("%d %d\n", b.x, b.y);
return 0;
}
输出结果为:
5 10
2.4 题目四
2.4.1 题目描述
int a[10]; 合法的数组元素的最小下标值为()
A、1
B、0
C、10
D、9
2.4.2 解题思路
「答案」B
「解题思路」本题考查数组下标的最小值,数组小标是从 0 开始的,所以选择 A。
2.5 题目五
2.5.1 题目描述
能正确表示逻辑关系:“a >= 10 或 a <= 0”的 C 语言表达式是( )
A、a >= 0 | a <= 10
B、a >= 10 or a <= 0
C、a >= 10 && a <= 0
D、a >= 10 || a <= 0
2.5.2 真题解析
「答案」D
「解题思路」本题考查逻辑运算符,其中 || 表示或,&& 表示与、并且的意思。
2.6 题目六
2.6.1 题目描述
int main()
{
int x = 1, a = 0, b = 0;
switch(x) {
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf("a=%d, b=%d", a, b);
return 0;
}
该程序的输出结果是()
A、2, 2
B、2, 1
C、1, 1
D、1, 0
2.6.2 真题解析
「答案」B
「解题思路」本题考查 switch 语句,因为 x = 1,所以进入 case 1 语句中,执行 a++,此时,a = 1, b = 0,因为 case 1 没有 break 语句,所以会执行 case 2,执行 a++ 和 b++后,a = 2, b = 1,所以答案选择 B。
2.7 题目七
2.7.1 题目描述
设变量 a 是整型,f是实型,i是双精度型,则表达式 10 + ‘a’ + i * f 的值数据类型是()
A、不确定
B、double
C、int
D、float
2.7.2 真题解析
「答案」B
「解题思路」本题考查C语言中的隐式类型转换,主要遵循的一个规则是,从低类型转换到高类型,如下图所示:所以本题的答案是 B。
2.8 题目八
2.8.1 题目描述
以下程序中,while 循环的循环次数是( )
int main()
{
int i = 0;
while (i < 10) {
if (i < 1) continue;
if (i == 5) break;
i++;
}
return 0;
}
A、死循环,不能确定次数
B、6
C、4
D、1
2.8.2 真题解析
「答案」A
「解题思路」本题考查对 while 循环的理解,i 的初始值为 0,进入循环后,if(i < 1) continue 不会执行后面的语句,那么 i 还是满足 i < 10,继续执行 if (i < 1) continue 这条语句,不会执行 if (i == 5) break; 和 i++;所以while 会进入死循环,A 正确。
2.9 题目九
2.9.1 题目描述
若有说明语句:char c = ‘\72’; 则变量 c ( )
A、说明不合法, c的值不确定;
B、包含3个字符;
C、包含1个字符;
D、包含2个字符;
2.9.2 真题解析
「答案」C
「解题思路」本题考查对 char 字符变量的理解,首先 char 类型的字符变量占用一个字节,只存储一个字符,排除 B、D,其中,‘\’ 表示转义字符,后面只能跟八进制的数字,72 满足条件,’\72’ 表示 ASCII 值为 58 的字符,A 错误,正确答案为 C。
2.10 题目十
2.10.1 题目描述
下列程序运行结果为( )
#define P 3
#define S(a) P*a*a
int main()
{
int ar;
ar = S(3+5);
printf("\n%d", ar);
return 0;
}
A、192
B、25
C、29
D、27
2.10.2 真题解析
「答案」C
「解题思路」本题考查对宏定义 #define 的理解,#define 在执行的时候,是直接替换的,本题中 S(3+5),展开后是:P*3+5*3+5,因为 P是 3, 所以表达式是 3*3+5*3+5=29,答案为 C。
🎈 感觉有帮助记得「一键三连」支持下哦!有问题可在评论区留言💬,感谢大家的一路支持!🤞猿哥将持续输出「优质文章」回馈大家!🤞🌹🌹🌹🌹🌹🌹🤞