盘点2020全国大学生计算机技能应用大赛C语言模考的易错题

一开始觉得还比较简单,难度是逐渐加大的,今天来整理一下这套卷子的易错题。
这只是模考,不是初赛的题目!!

单选题
判断下列常量不合法的是(A)
A. 0128
B. -45
C. 123.5e4
D. ‘\n’

A是不合法的,以0开头,表示的是八进制,有个8肯定不对,因为最高才到7。对D选项,是一个字符常量,看到一排数字,突然冒出一个字符,可能想都没想就选了,没错,我想都没想就选了。

下列初始化合法的是(D)
A. int a=b;
B. int 0 == sum;
C. float x,y,z;
D. char c; c=’ c ';

AC没有初始化,B初始化错误

假设i=7;若执行x=i++;则x的值为(),若执行x=–i;则x的值为(C)。
A. 7 8
B. 8 6
C. 7 6
D. 8 7

若执行x=i++,先把i的值给x,i再加一,x=7,i=8
若执行x=–i,先把i减一,然后赋值给x,x=6,i=6;

在这里插入图片描述
(B)
A. 30
B. 50
C. 10
D. 20

值得注意的只有(x>y)?x:y;如果x>y,就是x, x>y为假就是y

在这里插入图片描述
( C)
A. 65,66
B. 65,B
C. A,66
D. A,B

printf("%c,%d\n",c1,c2);值得注意,这里有个%c,把c1转化为了字符,在ASCII码中65对应的为A

在这里插入图片描述
(B)
A. 2,3
B. 2,2
C. 3,2
D. 3,3

在fun函数中,*a对应的是c,但执行*a++后,指针后移,a不再是c,指针后移了,所以a的改变不会带来c的改变,但*b的改变是可以带来d的改变的。
还有值得注意的一点,*a++会使指针后移 , 但*a+=1指针不会后移,c的值会发生改变

在这里插入图片描述

(C)

最简单的方法就是取个数比如1,3,7,8之类的数带入验证一下就可以排除错误答案

变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000.若将a的高4位取反,低4位不变,所要执行的运算是( A )
A. a^b
B. a|b
C. a&b
D. a<<4
在这里插入图片描述下一题

在这里插入图片描述

结构类型变量与其他基础类型变量一样,在某个代码块内,只要这个变量存在,那么其内部所有成员都存在。

下一题
在这里插入图片描述

(B)

辨析int(*f)(int)与int *f(int)
int(*f)(int); 表示f是函数指针 , 它可以指向一个返回值为int类型,参数为int类型的函数。
int *f(int); f表示一个函数名,其返回值类型为int * , 参数为int

在这里插入图片描述
(B)
A. 程序段有语法错误
B. 3,5,3
C. 3,5,5
D. 3,5,7

值得注意的就是第一个If语句到a=b就截止了,c=a不包含在内

在这里插入图片描述(D)

A. 1
B. 2
C. 7
D. 11

在16位BIM-PC机上,int所占用的内存是2字节,char所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加为11

多选题
以下可以定义为用户标识符的有(A,C)
A. scanf
B. short
C. _3com _
D. int

scanf很容易漏选,scanf用多了,就忘记它是可以标识符了

以下叙述错误的是( BCD)
A. c语言函数可以嵌套使用,如fun(fun(x))
B. c语言程序是由过程和函数组成的
C. c语言函数不可以单独编译
D. c语言中除了main函数,其他函数不可以作为单独文件形式存在

A. 函数之间是平行关系,不允许嵌套定义但可以嵌套调用.
B:C语言程序中没有过程的概念,C语言执行的基本单位是函数,一个程序可以有多个函数,但main(),有且只能有一个
C.函数可以单独编译,例如库函数就是把函数放到库里,把一些常用到的函数编译完放到一个文件里,供不同的人进行调用。
D:c语言中函数与文件没有直接关系,因此任何函数都可以作为单独文件形式存在。

在这里插入图片描述

c语言中scanf函数不读入键盘输入的空格,且"%d,%d"两个%d用逗号隔开,因此我们在键盘上输入时也要与其保持一致,输入逗号

已知:int x=1,y=2,z=3;则值不为0的表达式是(ABD )
A. x<=y
B. x&&y

C. !((x<y)&&!z||1)
D. x||y+z&&y-z
在这里插入图片描述

A,B自然不用说
对C,可以写成!(1&&0||1),也就是!(0||1),然后就是!1,最后就是0;
对D,可以写成1||5&&-1;也就是1&&-1;就是1;在c语言中-1也为真,只有0才是假

在这里插入图片描述
(AB)

赋值表达式不难选出
但在这里我想谈一下A选项的表达式的值
先执行括号,a=3;然后从右向左a-=3为0;然后a+=0;还是0,故a最后为0;

判断题
(double)a乘以2是把a乘以2的结果强制转换为双精度浮点型。( 错误 )

题目解释的意思是(double)(a2)
(double)a
2是先将a转化为double型,然后乘以2

自动类型变量可以定义在函数体外,这时应加说明符auto。( 错误 )

首先auto为函数内用于声明变量是自动类型的变量的关键字
用extern声明外部变量,目的是可以在其它的文件中调用

使用sizeof运算符可以求得某种类型和某个变量在内存中占的字节数,不能求得某个表达式的类型在内存中所占的字节数。( 错误 )

我也不知道怎么解释,好尴尬啊
看这篇C语言 sizeof函数详解

留下传送门

猜你喜欢

转载自blog.csdn.net/unseven/article/details/106303964