亚洲综合专区|和领导一起三p娇妻|伊人久久大香线蕉aⅴ色|欧美视频网站|亚洲一区综合图区精品

c語言二級考試真題

時間:2024-12-20 16:05:04 藹媚 資格考試 我要投稿
  • 相關推薦

c語言二級考試真題(精選5套)

  在現實的學習、工作中,我們經常接觸到考試真題,考試真題是學校或各主辦方考核某種知識才能的標準。什么樣的考試真題才能有效幫助到我們呢?以下是小編精心整理的c語言二級考試真題,歡迎大家借鑒與參考,希望對大家有所幫助。

c語言二級考試真題(精選5套)

  c語言二級考試真題 1

  1.下列敘述中正確的是( )。

  A. 所有數據結構必須有根結點

  B. 所有數據結構必須有終端結點(即葉子結點)

  C. 只有一個根結點,且只有一個葉子結點的數據結構一定是線性結構

  D. 沒有根結點或沒有葉子結點的數據結構一定是非線性結構

  【答案】D

  【解析】D項正確,線性結構的特點是:①集合中必存在“第一個元素"且惟一②集合中必存在“最后一個元素”且惟一;③除最后一個元素外,其他數據元素均有惟一的“后繼”,④除第一個元素外,其他數據元素均有惟一的“前驅”。所以沒有根結點或沒有葉子結點的數據結構一定是非線性結構。AB兩項錯誤,不是所有數據結構都必須有根結點和葉子結點;C項錯誤,數據結構中若有中間結點不滿足只有一個前件或者后件的條件,就不是線性結構。答案選擇D選項。

  2. 以下敘述中錯誤的是( )。

  A. C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令

  B. C程序經過編譯、鏈接步驟之后才能形成一個真正可執行的二進制機器指令文件

  C. 用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中

  D. C語言源程序經編譯后生成后綴為的目標程序

  【答案】A

  【解析】A項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把文件與各種庫函數連接起來生成一個后綴為的可執行文件。答案選擇A選項。

  3. C語言主要是借助以下( )功能來實現程序模塊化的。

  A. 定義函數

  B. 定義常量和外部變量

  C. 三種基本結構語句

  D. 豐富的數據類型

  【答案】A

  【解析】C程序的模塊化主要通過函數來實現。C語言允許對函數單獨進行編譯,從而可以實現模塊化。答案選擇A選項。

  4. 有以下程序段:

  char ch;

  int k;

  ch='a';

  k=12;

  print("%c,%d,",h,ch,k);

  printf("k=%d",k);

  已知字符a的ASCII碼十進制值為97,則執行上述程序段后輸出的結果是( )。

  A. 因變量類型與格式描述符的類型不匹配輸出無定值

  B. 輸出項與格式描述符個數不符,輸出為零值或不定值

  C.a,97,12k=12

  D. a,97,k=12

  【答案】D

  【解析】字符變量的值是該字符的ASCII碼值,可以參與整型變量所允許的任何運算。"ch='a",%c表示以字符格式輸出ch的值,所以輸出為a;%d表示以十進制代碼的形式輸出ch的'值,為97;k沒有對應的輸出格式,不輸出。在第二個語句中,首先輸出"k=",然后以十進制代碼輸出k的值,為12。答案選擇D選項。

  5. 下列敘述中正確的是( )。

  A. 棧是“先進先出”的線性表

  B. 隊列是“先進后出"的線性表

  C. 循環隊列是非線性結構

  D. 有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構

  【答案】D

  【解析】有序的線性表既可采用順序存儲結構,也可以采用鏈式存儲結構。A項錯誤,棧是“先進后出"的線性表B項錯誤,隊列是“先進先出"的線性表;C項錯誤,循環隊列是線性結構的,有序的線性表既可采用順序存儲結構,也可采用鏈式存儲結構。

  答案選擇D選項。

  6. 某二叉樹的中序序列為DCBAEFG,后序序列為DCBGFEA,則該二叉樹的深度(根結點在第1層)為( )。

  A. 5

  B. 40

  C.3

  D. 2

  【答案】B

  【解析】二叉樹的后序序列為DCBGFEA,則A為根結點。中序序列為DCBAEFG,則DCB為左子樹結點,EFG為右子樹結點。同理B為C父結點,C為D父結點。根據分析,可畫出左子樹,同理E為F父結點,F為G父結點。根據分析,可畫出右子樹,故二叉樹深度為4層。答案選擇B選項。

  7. 設有定義:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,則以下賦值語句中正確的是( )。

  A. s[0]=m[1];

  B. s=m;

  C.s.n=m.n;

  D. s[2].x=m[2].x;

  【答案】A

  【解析】定義了結構體類型數組s,長度為2,結構體類型數組m,長度為2,并對數組m進行了初始化。同類型的結構體可以直接用變量名實現賦值,A項正確;數組名為數組首地址,地址常量之間不可以相互賦值,B項錯誤;數組名為地址常量不是結構體變量,不能引用成員,C項錯誤;s[2]與m[2]數組越界,D項錯誤。答案選擇A選項。

  8. 關于C語言標識符,以下敘述錯誤的是( )。

  A. 標識符可全部由數字組成

  B. 標識符可全部由下劃線組成

  C. 標識符可全部由小寫字母組成

  D. 標識符可全部由大寫字母組成

  【答案】A

  【解析】C語言標識符只能由字母、數字、下劃線構成,且只能以字母、下劃線開頭,故答案選擇A選項。

  9. 以下程序段中的變量已定義為int類型,則

  sum=pAd=5;

  pAd=sum++,++pAd,pAd++;

  printf("%d",pAd);

  程序段的輸出結果是( )。

  A. 6

  B. 4

  C. 5

  D. 7

  【答案】D

  【解析】自增和自減運算符的兩種用法:前置運算,運算符放在變量之前,規則是先使變量的值增(或減)1,然后以變化后表達式的值參與其他運算;后置運算,運算符放在變量之后,規則是變量先參與其他運算,然后再使變量的值增(或減)1。執行pAd=sum++,sum++是后置自增,執行完后,pAd=5,sum=6。++pAd和pAd++語句中沒有其他運算,即效果相同,pAd分別加1,兩句執行完后,pAd7。答案選擇D選項。

  10. 設循環隊列為Q(1:m),其初始狀態為front=rear=m。經過一系列入隊與退隊運算后,front=20,rear=15。現要在該循環隊列中尋找最小值的元素,最壞情況下需要比較的次數為( )。

  A. 5

  B. 6

  C.m-5

  D. m-6

  【答案】D

  【解析】循環隊列是隊列的一種順序存儲結構,用隊尾指針rear指向隊列中的隊尾元素,用隊首指針指向隊首元素的前一個位置,因此,從隊首指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,隊列初始狀態為front=rear=m,當front=20,rear=15時,隊列中有m-20+15=m-5個元素,最壞情況下需要比較次數為m-6次。答案選擇D選項。

  c語言二級考試真題 2

  1.若有以下數組說明,則i=10;a[a[i]]元素數值是(C )。

  int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

  A、10

  B、9

  C、6

  D、5

  先算a[a[i]]內層的a[i],由于i=10,因此a[i]即a[10].

  a[10]對應下面數組中的元素為9. 因此a[a[i]]即為a[9]

  a[9]對應下面數組中的元素為6. 因此a[9]即為6

  2.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}}; 則數組a的第一維的大小為: ( B )

  A、2

  B、3

  C、4

  D、無確定值

  5 7

  D、3 6 9

  二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行

  3.對二維數組的正確定義是(C )

  詳見教材P149~152,二維數組的定義、初始化

  類型符 數組名 [常量表達式][常量表達式]

  二維數組可以看做是矩陣

  類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;第一個常量表達式是指數組的行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變量,而且從1開始計數。

  一維數組初始化時可以省略數組長度

  二維數組初始化時可以省略行數,但不能省略列數

  選項A,B,都省略了列數

  選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中

  A、int a[ ][ ]={1,2,3,4,5,6};

  B、int a[2] []={1,2,3,4,5,6};

  C、int a[ ] [3]={1,2,3,4,5,6};

  D、int a[2,3]={1,2,3,4,5,6};

  4.已知int a[3][4];則對數組元素引用正確的是__C___

  A、a[2][4]

  B、a[1,3]

  C、a[2][0]

  D、a(2)(1)

  詳見教材P150,數組元素的引用

  數組名[下標] [下標]

  引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數

  第一個[下標]表示行邏輯地址下標,第二個[下標]表示列邏輯地址下標。

  本題圖示詳見P149圖6.7

  因此a的行邏輯地址范圍0~2;a的列邏輯地址范圍0~3;

  選項A,列邏輯地址下標超過范圍

  選項B,D,的引用形式不正確。

  5.C語言中函數返回值的類型是由 A 決定的

  A、函數定義時指定的類型

  B、 return語句中的表達式類型

  C、 調用該函數時的實參的數據類型

  D、形參的數據類型

  6. 在C語言中,函數的數據類型是指(A )

  A、 函數返回值的數據類型

  B、 函數形參的數據類型

  C、 調用該函數時的實參的數據類型

  D、任意指定的數據類型

  7.在函數調用時,以下說法正確的是( B )

  A、函數調用后必須帶回返回值

  B、實際參數和形式參數可以同名

  C、函數間的數據傳遞不可以使用全局變量

  D、主調函數和被調函數總是在同一個文件里

  8. 在C語言中,表示靜態存儲類別的關鍵字是: ( C )

  A、 auto

  B、 register

  C、static

  D、extern

  9.未指定存儲類別的變量,其隱含的存儲類別為(A )。

  A、auto

  B、static

  C、extern

  D、register

  10. 若有以下說明語句:

  struct student

  { int num;

  char name[ ];

  float score;

  }stu;

  則下面的敘述不正確的是: (D )

  A、 struct是結構體類型的關鍵字

  B、 struct student 是用戶定義的結構體類型

  C、 num, score都是結構體成員名

  D、 stu是用戶定義的結構體類型名

  11.若有以下說明語句:

  struct date

  { int year;

  int month;

  int day;

  }brithday;

  則下面的敘述不正確的是__C___.

  A、 struct是聲明結構體類型時用的關鍵字

  B、 struct date 是用戶定義的結構體類型名

  C、 brithday是用戶定義的結構體類型名

  D、year,day 都是結構體成員名

  12. 以下對結構變量stul中成員age的非法引用是 B

  struct student

  { int age;

  int num;

  }stu1,*p;

  p=&stu1;

  A、 stu1.age

  B、 student.age

  C、 p->age

  D、(*p).age

  13.設有如下定義:

  struck sk

  { int a;

  float b;

  }data;

  int *p;

  若要使P指向data中的a域,正確的賦值語句是 C

  A、 p=&a;

  B、 p=datA、a;

  C、p=&datA、a;

  D、*p=datA、a;

  14.設有以下說明語句:

  typedef struct stu

  { int a;

  float b;

  } stutype;

  則下面敘述中錯誤的是( D )。

  A、struct是結構類型的關鍵字

  B、struct stu是用戶定義的結構類型

  C、a和b都是結構成員名

  D、stutype是用戶定義的結構體變量名

  15.語句int *p;說明了 C 。

  A、p是指向一維數組的指針

  B、p是指向函數的指針,該函數返回一int型數據

  C、p是指向int型數據的指針

  D、p是函數名,該函數返回一指向int型數據的指針

  16.C語言中,關系表達式和邏輯表達式的值是( B ) 。

  A、0

  B、 0或1

  C、 1

  D、‘T’或’F’

  17. 下面( D )表達式的值為4.

  A、 11/3

  B、 11.0/3

  C、 (float)11/3

  D、 (int)(11.0/3+0.5)

  【解析】(1)相同數據類型的元素進行數學運算(+、-、*、/)得到結果還保持原數據類型。

  (2)不同數據類型的元素進行數學運算,先要統一數據類型,統一的標準是低精度類型轉換為高精度的數據類型。

  選項A,11與3為兩個整數,11/3結果的數據類型也應為整數,因此將3.666666的小數部分全部舍掉,僅保留整數,因此11/3=3.

  選項B,11.0為實數,3為整數,因此首先要統一數據類型,將整型數據3轉換為3.0,轉換后數據類型統一為實型數據,選項B變為11.0/3.0,結果的數據類型也應為實型數據,因此選項B 11.0/3=3.666666

  選項C,先將整數11強制類型轉換,轉換為實型11.0,因此選項C變為11.0/3,其后計算過程、結果與選項B同

  選項D,首先計算11.0/3,其計算過程、結果與選項B同,得到3.666666;再計算3.666666+0.5=4.166666,最后將4.166666強制類型轉換為整型,即將其小數部分全部舍掉,結果為4

  18.設整型變量 a=2,則執行下列語句后,浮點型變量b的值不為0.5的是( B )

  A、b=1.0/a

  B、b=(float)(1/A、

  C、b=1/(float)a

  D、b=1/(a*1.0)

  19. 若“int n; float f=13.8;”,則執行“n=(int)f%3”后,n的值是(A)

  A、1

  B、4

  C、4.333333

  D、4.6

  【解析】“(int)f“表示將f中的值強制類型轉換為整型,即將13.8的小數部分舍掉,轉換為13;然后計算13%3,結果為1,再將結果賦給變量n,因此n的值為1

  20. 以下對一維數組a的正確說明是: D

  A、char a(10);

  B、 int a[];

  C、int k=5,a[k];

  D、char a[3]={‘a’,’b’,’c’};

  【解析】詳見教材P143~144,一維數組的定義、初始化

  類型符 數組名 [常量表達式]

  類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;常量表達式是指數組的長度(數組中包含元素的個數),其值只能是整數,不可以是變量,而且從1開始計數。

  選項A,常量表達式只能放在中括號 [ ]中

  選項B,只有在對數組初始化(即賦值)的時候才可以省略數組的長度,B中并未對a進行初始化。

  選項C,常量表達式不能為變量。

  21.以下能對一維數組a進行初始化的語句是:( C )

  A、int a[5]=(0,1,2,3,4,)

  B、 inta(5)={}

  C、 int a[3]={0,1,2}

  D、 int a{5}={10*1}

  【解析】詳見教材P145,一維數組的定義、初始化

  選項B,D,常量表達式只能放在中括號 [ ]中

  選項A,數組可以看做是若干個相同數據類型元素的有序集合,因此以集合的形式對其初始化,使用{ }對其初始化,選項A用了( ).

  22.在C語言中對一維整型數組的正確定義為 D 。

  A、int a(10);

  B、int n=10,a[n];

  C、int n;a[n];

  D、#define N 10

  23、已知:int a[10]; 則對a數組元素的正確引用是( D )。

  A、a[10]

  B、a[3.5]

  C、a(5)

  D、a[0]

  【解析】詳見教材P144,數組元素的引用

  數組名[下標]

  引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數

  int a[10]表示定義了一個包含10個整型數據的數組a,數組元素的邏輯地址下標范圍為0~9,即a[0] 表示組中第1個元素; a[1] 表示組中第2個元素; a[2] 表示組中第3個元素; ......;a[9] 表示組中第10個元素.

  選項A,超過了數組a的邏輯地址下標范圍;

  選項B,邏輯地址下標只能為整數

  選項C,邏輯地址下標只能放在[ ]中

  24.若有以下數組說明,則i=10;a[a[i]]元素數值是(C )。

  int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

  A、10

  B、9

  C、6

  D、5

  【解析】先算a[a[i]]內層的a[i],由于i=10,因此a[i]即a[10].

  a[10]對應下面數組中的元素為9. 因此a[a[i]]即為a[9]

  a[9]對應下面數組中的.元素為6. 因此a[9]即為6

  25.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}}; 則數組a的第一維的大小為: ( B )

  A、2

  B、3

  C、4

  D、無確定值

  【解析】二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行

  26.(A )是構成C語言程序的基本單位。

  A、函數

  B、過程

  C、子程序

  D、子例程

  27.C語言程序從 C 開始執行。

  A、 程序中第一條可執行語句

  B、 程序中第一個函數

  C、 程序中的main函數

  D、包含文件中的第一個函數

  28、以下說法中正確的是( C )。

  A、C語言程序總是從第一個定義的函數開始執行

  B、在C語言程序中,要調用的函數必須在main( )函數中定義

  C、C語言程序總是從main( )函數開始執行;

  D、C語言程序中的main( )函數必須放在程序的開始部分

  29.下列關于C語言的說法錯誤的是( B ) 。

  A、 C程序的工作過程是編輯、編譯、連接、運行

  B、 C語言不區分大小寫。

  C、 C程序的三種基本結構是順序、選擇、循環

  D、C程序從main函數開始執行

  30.下列正確的標識符是(C )。

  A、-a1

  B、a[i]

  C、a2_i

  D、int t

  5~8題為相同類型題

  考點:標識符的命名規則

  只能由字母、數字、下劃線構成

  數字不能作為標識符的開頭

  關鍵字不能作為標識符

  選項A中的“-” ,選項B中“[”與“]”不滿足(1);選項D中的int為關鍵字,不滿足(3)

  31.下列C語言用戶標識符中合法的是(B )。

  A、3ax

  B、x

  C、case

  D、-e2 E)union

  選項A中的標識符以數字開頭不滿足(2);選項C,E均為為關鍵字,不滿足(3);選項D中的“-”不滿足(1);

  32.下列四組選項中,正確的C語言標識符是( C )。

  A、 %x

  B、a+b

  C、a123

  D、123

  選項A中的“%” ,選項B中“+”不滿足(1);選項D中的標識符以數字開頭不滿足(2)

  33、下列四組字符串中都可以用作C語言程序中的標識符的是( A)。

  A、print _3d db8 aBc

  B、Iam one_half start$it 3pai

  C、str_1 Cpp pow while

  D、Pxq My->book line# His.age

  選項B中的“”,”$” ,選項D中“>”,”#”,”.”,”-”不滿足(1);選項C中的while為關鍵字,不滿足(3)

  34.C語言中的簡單數據類型包括(D )。

  A、整型、實型、邏輯型

  B、整型、實型、邏輯型、字符型

  C、整型、字符型、邏輯型

  D、整型、實型、字符型

  35.在C語言程序中,表達式5%2的結果是 C 。

  A、2.5

  B、2

  C、1

  D、3

  %為求余運算符,該運算符只能對整型數據進行運算。且符號與被模數相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

  /為求商運算符,該運算符能夠對整型、字符、浮點等類型的數據進行運算,5/2=2

  c語言二級考試真題 3

  1.C語言編譯程序的功能是( )。

  A. 執行一個C語言編寫的源程序

  B. 把C源程序翻譯成ASCII碼

  C. 把C源程序翻譯成機器代碼

  D. 把C源程序與系統提供的庫函數組合成一個二進制執行文件

  【答案】C

  【解析】編譯程序的功能是將“高級語言”翻譯為“機器語言”。每條C語言語句,經過編譯最終都將轉換成二進制的機器指令。答案選擇C選項。

  2. 計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是( )。

  A. C語言程序僅可以編譯執行

  B. C語言程序僅可以解釋執行

  C. C語言程序既可以編譯執行,又可以解釋執行;

  D. 以上說法都不對

  【答案】A

  【解析】編譯執行是指程序執行前需要一個專門的編譯過程把程序編譯成機器語言的文件,再次運行時不需要重新翻譯,執行效率高;解釋執行是指每個語句都是執行的時候才翻譯,執行效率低。用C語言編寫的程序必須經過編譯器編譯后,轉換為二進制的機器指令來運行。答案選擇A選項。

  3. 以下敘述中錯誤的是( )。

  A. C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令

  B. C程序經過編譯、鏈接步驟之后才能形成一個真正可執行的二進制機器指令文件

  C. 用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中

  D. C語言源程序經編譯后生成后綴為的目標程序

  【答案】A

  【解析】A項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把文件與各種庫函數連接起來生成一個后綴為的可執行文件。答案選擇A選項。

  4. 以下敘述中錯誤的是()

  A.C語言的可執行程序是由一系列機器指令構成的

  B. 用C語言編寫的源程序不能直接在計算機上運行

  C. 通過編譯得到的二進制目標程序需要連接才可以運行

  D. 在沒有安裝C語言集成開發環境的機器上不能運行C源程序生成的exe文件

  【答案】D

  【解析】A項正確,C語言的可執行程序是由一系列機器指令組成的;BC項正確,用C語言編寫的源程序必須經過編譯,生成二進制目標代碼,再經過連接才能運行;D項錯誤,C語言經過編譯鏈接后的二進制目標代碼可以脫離C語言集成開發環境獨立運行。答案選擇D選項。

  5. 以下敘述正確的是( )。

  A. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的二進制文件

  B. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的可執行文件

  C. C編譯程序把文件后綴為的二進制文件編譯成文件后綴為的可執行文件

  D. 鏈接程序把文件后綴為.c的源程序文件鏈接成文件后綴為的可執行文件

  【答案】A

  【解析】C編譯程序把文件后綴為C的源程序文件編譯成文件后綴為的二進制文件,鏈接將一個或多個目標文件與程序用到的庫文件連接起來,形成一個可以在操作系統直接運行的執行程序,故排除B、C、D項,答案選擇A選項。

  6. 以下敘述中正確的是(A. 在C語言程序中,main函數必須放在其他函數的最前面

  B. 每個后綴為.c的C語言源程序都可以單獨進行編譯

  C. 在C語言程序中,只有main函數才可以單獨進行編譯

  D. 每個后綴為.c的C語言源程序都應該包含一個main函數

  【答案】B

  【解析】main函數可以在程序的任何位置。每一個可執行的C程序都必須有一個且只能有一個主函數。后綴名為.c的C語言源程序都可以單獨進行編譯。main函數只是讓執行程序的系統知道該從哪里開始執行程序(從主函數處執行),其他有關這個程序的子函數是通過函數調用來實現其功能(不需main函數)。答案選擇B選項。

  7. 以下敘述中錯誤的是( )。

  A. C語言編寫的函數源程序,其文件名后綴可以是.c

  B. C語言編寫的函數都可以作為一個獨立的源程序文件

  C. C語言編寫的`每個函數都可以進行獨立的編譯并執行;

  D. 一個C語言程序只能有一個主函數

  【答案】C

  【解析】C源程序經過C編譯程序編譯之后生成一個后綴為的二進制文件(稱為目標文件),然后由稱為“連接程序”(Link)的軟件,把此文件與C語言提供的各種庫函數連接起來生成一個后綴為的可執行文件。只有含有main函數的經過編譯鏈接才能執行。答案選擇C選項。

  8. 以下敘述中錯誤的是(A. 一個C程序可以包含多個不同名的函數

  B. 一個C程序只能有一個主函數

  C. C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過

  D. C程序的主函數必須用main作為函數名

  【答案】C

  【解析】一個C程序有且只有一個主函數main。一個C程序可以包含多個不同名字的子函數。C程序在書寫時沒有嚴格的縮進要求。答案選擇C選項。

  9. 以下敘述中正確的是( )。

  A. C語言規定必須用main作為主函數名,程序將從此開始執行

  B. 可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執行

  C. C語言程序將從源程序中第一個函數開始執行;

  D. main的各種大小寫拼寫形式都可以作為主函數名,如:MAIN,Main等

  【答案】A

  【解析】用戶不能指定某函數為主函數,C語言規定,程序從main函數開始執行,從main函數退出,C語言函數名區別大小寫。答案選擇A選項。

  10. 下列敘述中錯誤的是( )。

  A. C程序可以由一個或多個函數組成

  B. C程序可以由多個程序文件組成

  C. 一個C語言程序只能實現一種算法

  D. 一個C函數可以單獨作為一個C程序文件存在

  【答案】C

  【解析】一個C程序可以有一個或多個程序文件,也可以有一個或多個函數,所以一個C語言程序可以實現多種算法,答案選擇C選項。

  c語言二級考試真題 4

  1: 第1題請編寫函數fun,其功能使:將兩個兩位正整數a b合并形成一個整數放在c中。合并的方式使:將a數的十位和個位數依次放在c數的百位和個位上,b數的十位和個位數依次放在c數的千位和十位上。

  答案:

  void fun(int a,int b,long *c)

  {*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}

  2: 第2題請編寫一個函數fun,它的功能使:計算n門課程的平均分,計算結果作為函數值返回。

  答案:

  float fun(float *a,int n)

  {float ave=0.0;

  int i;

  for(i=0;i

  ave+=a;

  ave/=n;

  return ave;}

  3: 第3題假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能使:將字符串尾部的*號全部刪除,前面和中間的*號不刪除。

  答案:

  void fun(char *a)

  {int i=0;

  char *p,*q;

  p=q=a;

  while(*p)

  p++;

  p--;

  while(*p==‘*’)

  p--;

  while(q<=p)

  {a=*q;

  i++;

  q++;}

  a=‘’;}

  4: 第4題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合并形成一個整數放在c中,合并的方式是:將a數的十位和個位數依次放在c的個位和百位上,b數的'十位和個位數依次放在c數的千位和十位上。

  答案:

  void fun(int a,int b,long *c)

  {c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}

  5: 第5題 n名學生的成績已在主函數中放入一個帶頭節點的鏈表結構中,h指向鏈表的頭節點。請編寫函數fun,它的功能是:求出平均分,由函數值返回。

  答案:

  double fun(strec *h)

  {double aver=0.0;

  while(h!=null)

  {aver+=h->s;

  hy=h->next;}

  aver/=n;

  return aver;}

  6: 第6題請編寫函數fun,計算并輸出給定10個數的方差。

  答案:

  double fun(double x[10])

  {int i,j;

  double s=0.0,s1=0.0;

  for(i=0;i<10;i++)

  s1+=x;

  s1/=10;

  for(j=0;j<10;j++)

  s+=(x[j]-s1)*(x[j]-s1);

  s/=10;

  s=pow(s,0.5);

  return s;}

  7: 第7題請編寫函數fun,其功能是:將兩個兩位數的正整數a b合并形成一個整數放在c 中。合并的方式是:將a數的十位和個位數依次放在c數的千位和十位上,b數的十位和個位數依次放在c數的個位和百位上。

  答案:

  void fun(int a,int b,long *c)

  {*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;}

  c語言二級考試真題 5

  一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分,共70分)

  (1)下列數據結構中,屬于非線性結構的是

  A.循環隊列

  B.帶鏈隊列

  C.二叉樹

  D.帶鏈棧

  (2)下列數據結果中,能夠按照“先進后出”原則存取數據的是

  A.循環隊列

  B.棧

  C.隊列

  D.二叉樹

  (3)對于循環隊列,下列敘述中正確的是

  A.隊頭指針是固定不變的

  B.隊頭指針一定大于隊尾指針

  C.隊頭指針一定小于隊尾指針

  D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針

  (4)算法的空間復雜度是指

  A.算法在執行過程中所需要的計算機存儲空間

  B.算法所處理的數據量

  C.算法程序中的語句或指令條數

  D.算法在執行過程中所需要的臨時工作單元數

  (5)軟件設計中劃分模塊的一個準則是

  A.低內聚低耦合

  B.高內聚低耦合

  C.低內聚高耦合

  D. 高內聚高耦合

  (6)下列選項中不屬于結構化程序設計原則的是

  A.可封裝。

  B. 自頂向下。

  C.模塊化。

  D. 逐步求精。

  (7)軟件詳細設計產生的圖如下:

  該圖是

  A.N-S圖

  B.PAD圖

  C.程序流程圖

  D. E-R圖

  (8)數據庫管理系統是

  A.操作系統的一部分

  B.在操作系統支持下的系統軟件

  C.一種編譯系統

  D. 一種操作系統

  (9)在E-R圖中,用來表示實體聯系的圖形是

  A.橢圓圖

  B.矩形

  C.菱形

  D. 三角形

  (10)有三個關系R,S和T如下:

  其中關系T由關系R和S通過某種操作得到,該操作為

  A.選擇

  B.投影

  C.交

  D.并

  (11)以下敘述中正確的是

  A.程序設計的任務就是編寫程序代碼并上機調試

  B.程序設計的任務就是確定所用數據結構

  C.程序設計的任務就是確定所用算法

  D.以上三種說法都不完整

  (12)以下選項中,能用作用戶標識符的是

  A.void

  B.8_8

  C._0_

  D.unsigned

  (13)閱讀以下程序

  #include

  main()

  { int case; float printF;

  printf(“請輸入2個數:”);

  scanf(“%d %f”,&case,&pjrintF);

  printf(“%d %f ”,case,printF);

  }

  該程序編譯時產生錯誤,其出錯原因是

  A.定義語句出錯,case是關鍵字,不能用作用戶自定義標識符

  B.定義語句出錯,printF不能用作用戶自定義標識符

  C.定義語句無錯,scanf不能作為輸入函數使用

  D.定義語句無錯,printf不能輸出case的值

  (14)表達式:(int)((double)9/2)-(9)%2的值是

  A.0

  B.3

  C.4

  D.5

  (15)若有定義語句:int x=10;,則表達式x-=x+x的值為

  A.-20

  B.-10

  C.0

  D.10

  (16)有以下程序

  #include

  main()

  { int a=1,b=0;

  printf(“%d,”,b=a+b);

  printf(“%d ”,a=2*b);

  }

  程序運行后的輸出結果是

  A.0,0

  B.1,0

  C.3,2

  D.1,2

  17)設有定義:int a=1,b=2,c=3;,以下語句中執行效果與其它三個不同的是

  A.if(a>B. c=a,a=b,b=c;

  B.if(a>B. {c=a,a=b,b=c;}

  C.if(a>B. c=a;a=b;b=c;

  D.if(a>B. {c=a;a=b;b=c;}

  (18)有以下程序

  #include

  main()

  { int c=0,k;

  for (k=1;k<3;k++)

  switch (k)

  { default: c+=k

  case 2: c++;break;

  case 4: c+=2;break;

  }

  printf(“%d ”,C.;

  }

  程序運行后的輸出結果是

  A.3

  B.5

  C.7

  D.9

  (19)以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是

  A.if((a>b)&&(b>C.) k=1;

  else k=0;

  B.if((a>b)||(b>C. k=1;

  else k=0;

  C.if(a<=B. k=0;

  else if(b<=C.k=1;

  D.if(a>B. k=1;

  else if(b>C.k=1;

  else k=0;

  20)有以下程序

  #include

  main()

  { char s[]={“012xy”};int i,n=0;

  for(i=0;s[i]!=0;i++)

  if(s[i]>=’a’&&s[i]<=’z’) n++;

  printf(“%d ”,n);

  }

  程序運行后的輸出結果是

  A.0

  B.2

  C.3

  D.5

  (21)有以下程序

  #include

  main()

  { int n=2,k=0;

  while(k++&&n++>2);

  printf(“%d %d ”,k,n);

  }

  程序運行后的輸出結果是

  A.0 2

  B.1 3

  C.5 7

  D.1 2

  (22)有以下定義語句,編譯時會出現編譯錯誤的是

  A.char a=’a’;

  B.char a=’ ’;

  C.char a=’aa’;

  D.char a=’x2d’;

  (23)有以下程序

  #include

  main()

  { char c1,c2;

  c1=’A’+’8’-‘4’;

  c2=’A’+’8’-‘5’;

  printf(“%c,%d ”,c1,c2);

  }

  已知字母A的ASCII碼為65,程序運行后的輸出結果是

  A.E,68

  B.D,69

  C.E,D

  D.輸出無定值

  (24)有以下程序

  #include

  void fun(int p)

  { int d=2;

  p=d++; printf(“%d”,p);}

  main()

  { int a=1;

  fun(a); printf(“%d ”,a);}

  程序運行后的輸出結果是

  A.32

  B.12

  C.21

  D.22

  (25)以下函數findmax擬實現在數組中查找最大值并作為函數值返回,但程序中有錯導致不能實現預定功能

  #define MIN -2147483647

  int findmax (int x[],int n)

  { int i,max;

  for(i=0;i

  { max=MIN;

  if(max

  return max;

  }

  造成錯誤的原因是

  A.定義語句int i,max;中max未賦初值

  B.賦值語句max=MIN;中,不應給max賦MIN值

  C.語句if(max

  D.賦值語句max=MIN;放錯了位置

  (26)有以下程序

  #include

  main()

  { int m=1,n=2,*p=&m,*q=&n,*r;

  r=p;p=q;q=r;

  printf(“%d,%d,%d,%d ”,m,n,*p,*q);

  }

  程序運行后的輸出結果是

  A.1,2,1,2

  B.1,2,2,1

  C.2,1,2,1

  D.2,1,1,2

  (27)若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是

  A.p=a

  B.q[i]=a[i]

  C.p=a[i]

  D.p=&a[2][1]

  (28)有以下程序

  #include

  #include

  main()

  { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];

  printf(“%d,”,strlen(p));printf(“%s ”,p);

  }

  程序運行后的'輸出結果是

  A.9,One*World

  B.9,One*Dream

  C.10,One*Dream

  D.10,One*World

  (29)有以下程序

  #include

  main()

  { int a[ ]={2,3,5,4},i;

  for(i=0;i<4;i++)

  switch(i%2)

  { case 0:switch(a[i]%2)

  {case 0:a[i]++;break;

  case 1:a[i]--;

  }break;

  case 1:a[i[=0;

  }

  for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);

  }

  A.3 3 4 4

  B.2 0 5 0

  C.3 0 4 0

  D.0 3 0 4

  (30)有以下程序

  #include

  #include

  main()

  { char a[10]=”abcd”;

  printf(“%d,%d ”,strlen(a),sizeof(a));

  }

  程序運行后的輸出結果是

  A.7,4

  B.4,10

  C.8,8

  D.10,10

  (31)下面是有關C語言字符數組的描述,其中錯誤的是

  A.不可以用賦值語句給字符數組名賦字符串

  B.可以用輸入語句把字符串整體輸入給字符數組

  C.字符數組中的內容不一定是字符串

  D.字符數組只能存放字符串

  (32)下列函數的功能是

  fun(char * a,char * b)

  { while((*b=*a)!=’’) {a++,b++;} }

  A.將a所指字符串賦給b所指空間

  B.使指針b指向a所指字符串

  C.將a所指字符串和b所指字符串進行比較

  D.檢查a和b所指字符串中是否有’’

  (33)設有以下函數

  void fun(int n,char * s) {……}

  則下面對函數指針的定義和賦值均是正確的是

  A.void (*pf)(); pf=fun;

  B.viod *pf(); pf=fun;

  C.void *pf(); *pf=fun;

  D.void (*pf)(int,char);pf=&fun;

  (34)有以下程序

  #include

  int f(int n);

  main()

  { int a=3,s;

  s=f(a);s=s+f(a);printf(“%d ”,s);

  }

  int f(int n)

  { static int a=1;

  n+=a++;

  return n;

  }

  程序運行以后的輸出結果是

  A.7

  B.8

  C.9

  D.10

  (35)有以下程序

  #include

  #define f(x) x*x*x

  main()

  { int a=3,s,t;

  s=f(a+1);t=f((a+1));

  printf(“%d,%d ’,s,t);

  }

  程序運行后的輸出結果是

  A.10,64

  B.10,10

  C.64,10

  D.64,64

  (36)下面結構體的定義語句中,錯誤的是

  A.struct ord {int x;int y;int z;}; struct ord a;

  B.struct ord {int x;int y;int z;} struct ord a;

  C.struct ord {int x;int y;int z;} a;

  D.struct {int x;int y;int z;} a;

  (37)設有定義:char *c;,以下選項中能夠使字符型指針c正確指向一個字符串的是

  A.char str[ ]=”string”;c=str;

  B.scanf(“%s”,C.;

  C.c=get);

  D.*c=”string”;

  (38)有以下程序

  #include

  #include

  struct A

  { int a; char b[10]; double c;};

  struct A f(struct A t);

  main()

  { struct A a={1001,”ZhangDa”,1098.0};

  a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;

  }

  struct A f(struct A t)

  ( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )

  程序運行后的輸出結果是

  A.1001,ZhangDa,1098.0

  B.1001,ZhangDa,1202.0

  C.1001,ChangRong,1098.0

  D.1001,ChangRong,1202.0

  (39)若有以下程序段

  int r=8;

  printf(“%d ”,r>>1);

  輸出結果是

  A.16

  B.8

  C.4

  D.2

  (40)下列關于C語言文件的敘述中正確的是

  A.文件由一系列數據依次排列組成,只能構成二進制文件

  B.文件由結構序列組成,可以構成二進制文件或文本文件

  C.文件由數據序列組成,可以構成二進制文件或文本文件

  D.文件由字符序列組成,其類型只能是文本文件

【c語言二級考試真題】相關文章:

二級c語言真題(精選4套)11-15

全國計算機二級c語言真題(精選4套)11-15

計算機二級考試真題10-31

計算機二級考試真題和答案10-30

二級英語考試真題答案(精選8套)11-27

公共英語二級考試真題(精選5套)10-17

2024年二級建造師考試真題11-11

計算機二級考試真題及答案(精選10套)10-28

公共英語二級考試真題及答案(精選6套)10-17