盤點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函數詳解

留下傳送門

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章