C 語言是以函數形式提供給用户的,這些函數可方便的調用,並具有多種循環、條件語句控制程序流向,從而使程序完全結構化.下面是小編整理的關於計算機C語言考試試題帶答案,歡迎大家練習!
1). 關於C語言的變量,以下敍述中錯誤的是( )
A.所謂變量是指在程序運行過程中其值可以被改變的量
B.變量所佔的存儲單元地址可以隨時改變
C.程序中用到的所有變量都必須先定義後才能使用
D.由三條下劃線構成的符號名是合法的變量名
正確答案:B
答案解析:變量是指在程序運行過程中其值可以改變的值,一個變量實質上是代表了內存中的某個存儲單元。在程序中對某個變量的操作實際上就是對這個存儲單元的操作,程序運行期間,這個分配的存儲單元不會改變,但是其值可以變化。變量命名要符合標識符的規定,其中下劃線是標識符的組成字符。程序中所有變量都必須先定義後使用。
2). 當變量c的值不為2、4、6時,值也為″真″的表達式是( )
A.(c==2)||(c==4)||(c==6)
B.(c>=2 && c<=6)&& !(c%2)
C.(c>=2 && c<=6)&&(c%2!=1)
D.(c>=2 && c<=6) || (c!=3) || (c!=5)
正確答案:D
答案解析:邏輯或運算中,只要有一項為真,表達式的值就為真,故選項D中c的值不為2、4、6時,那麼表達式(c>=2 && c<=6)以及(c!=3)、(c!=5)必有一個成立,表達式的值也為真。
3). 在C語言中,函數返回值的類型最終取決於
A.函數定義時在函數首部所説明的函數類型
rn語句中表達式值的類型
C.調用函數時主調函數所傳遞的實參類型
D.函數定義時形參的類型
正確答案:A
答案解析:在C語言中,應當在定義函數時指定函數值的類型,凡不加類型説明的函數,一律按整型處理。在定義函數時,對函數值説明的類型一般應該和return語句中的表達式類型一致。如果函數值的類型和return語句中的表達式類型不一致,則以函數類型為主,即函數類型決定返回值的類型。
4). C語言主要是藉助以下哪種手段來實現程序模塊化( )
A.定義常量和外部變量
B.使用豐富的數據類型
C.使用三種基本結構語句
D.定義函數
正確答案:D
答案解析:C語言用函數實現軟件的模塊化設計。
5). 以下敍述中正確的是( )
A.只有全局變量才有自己的作用域,函數中的局部變量沒有作用域
B.只要是用户定義的標識符,都有一個有效的作用域
C.只有在函數內部定義的變量才是局部變量
D.局部變量不能被説明為static
正確答案:B
答案解析:在函數內定義的變量是局部變量,而在函數之外定義的變量稱為外部變量,也是全局變量。全局變量可以為源文件中其他函數所共用,其作用域為從定義變量的位置開始到源文件結束。因此只要用户定義的標識符,全部都有作用域。局部變量可以説明為auto、register以及static。
6). 在關係中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的( )。
A.連接碼.
B.關係碼
C.外碼
D.候選碼
正確答案:D
答案解析:在關係中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。二維表中可能有若干個鍵,它們稱為該表的候選碼或候選鍵。從二維表的所有候選鍵中選取一個作為用户使用的鍵稱為主鍵或主碼。
7). 以下敍述中錯誤的是( )
A.預處理命令行的最後不能以分號表示結束
B.C程序對預處理命令行的處理是在程序執行的過程中進行的`
C.#define MAX 是合法的宏定義命令行
D.在程序中凡是以″#″開始的語句行都是預處理命令行
正確答案:B
答案解析:預處理命令行是以″#″開始的語句,預處理命令行的最後不能以分號表示結束,預處理命令行。其中宏定義的字符替換的定義格式為:# define 標識符 字符串,預處理命令行是在系統對源程序進行編譯之前進行處理的,不是在程序執行的過程中。
8). 按照″後進先出″原則組織數據的數據結構是( )
A.隊列
B.棧
C.雙向鏈表
D.二叉樹
正確答案:B
答案解析:棧是限定在一端進行插入與刪除的線性表。在棧中,允許插入與刪除的一端稱為棧頂,不允許插入與刪除的另一端稱為棧底。棧頂元素總是最後被の插入的元素,也是最先被刪除的元素;棧底元素總是最先被の插入的元素,也是最後才能被刪除的元素。即棧是按照″後進先出″(Last In First Out,簡稱LIFO)或″先進後出″(First In Last Out,簡稱FILO)的原則組織數據的。因此,棧也稱為″後進先出表″或″先進後出″表。
9). 以下程序段完全正確的是( )
k, *p=&k; scanf(″%d″, p);
*p; scanf(″%d″, p);
*p; scanf(″%d″, &p);
k, *p; *p=&k; scanf(″%d″, p);
正確答案:A
答案解析:選項B沒有對指針進行初始化,無效指針。選項C錯在沒有對指針進行初始化,無效指針,並且在scanf(″%d″,&p)中無需再進行取地址操作。選項D,語句*p=&k;的左端*p是指針所指內存空間的值,&k是地址,應為p=&k。
10). 一間宿舍可住多個學生,則實體宿舍和學生之間的聯繫是( )
A.一對一
B.一對多
C.多對一
D.多對多
正確答案:B
答案解析:兩個實體集間的聯繫可以有下面幾種:一對一的聯繫、一對多或多對一的聯繫和多對多的聯繫。由於一個宿舍可以住多個學生,所以它們的聯繫是一對多聯繫。
11). 軟件設計中劃分模塊的一個準則是( )
A.低內聚低耦合
B.高內聚低耦合
C.低內聚高耦合
D.高內聚高耦合
正確答案:B
答案解析:耦合性與內聚性是模塊獨立性的兩個定性標準。一般一個較優秀的軟件設計,應儘量做到高內聚,低耦合,即減弱模塊之間的耦合性和提高模塊內的內聚性,有利於提高模塊的獨立性。
12). 當把4個表達式用作if語句的控制表達式時,有一個選項與其他3個選項含義不同,這個選項是( )。
A.k%2
B.k%2==1
C.(k%2) !=0
D.!k%2==1
正確答案:A
答案解析:整數k對2求餘數的兩個結果只能是0和1,所以選項A表示k除以2的餘數,其結果是0或1。在選項B、C和D中包括算術求餘運算符″%″,關係等於運算符 ″==″和關係不等於運算符″!=″以及邏輯非運算符″!″。而邏輯運算符與賦值運算符、算術運算符、關係運算符之間從高到低的運算優先次序是:!(邏輯″非″)、算術運算符、關係運算符、&&(邏輯″與″)、||(邏輯″或″)、賦值運算符。選項B含義是判斷表達式k%2的結果是否等於1、選項C的含義是判斷表達式k%2的結果是否不等於0,選項D含義是判斷表達式!k%2的結果是否等於1,所以選項B、C和D的含義相同。