c語言練習試題庫

單項選擇題

c語言練習試題庫

1.有char c=’1’,下面說法中正確的是(    )。

A. 語句putc+2);的輸出結果爲51

B. 語句put“%d”,c+2);的輸出結果爲3

C. 語句put“%c”,c+2);的輸出結果爲51

D. 語句put“%c”,c+2);的輸出結果爲3

2.設c1,c2均是char型變量,則下面不正確的函數調用爲(    )。

A. scanf(”c1=2=%c”,&c1,&c2);

B. get);

C. putc2);

D. putc1,c2);

3.爲了表示關係x>=y>=z,下面C語言表達式中正確的是(    )。

A. (x>=y)&&(y>=z)

B. (x>=y)and(y>=z)

C. (x>=y>=z)

D. (x>=y)&(y>=z)

4.設x,y,z,t爲int型變量,則執行以下語句後,t的值爲(    )。

x=y=z=1;

t=++x||++y&&++z;

A. 不定值

B. 2

C. 1

D. 0

5.對if語句中表達式的類型,下面正確的說法是(    )。

A. 必須是關係表達式

B. 必須是關係表達式或邏輯表達式

C. 可以是任意表達式

D. 必須是關係表達式或算術表達式

6.對for(表達式1;;表達式3)可以理解爲(    )。

A. for(表達式1;0;表達式3)

B. for(表達式1;表達式1;表達式3)

C. for(表達式1;1;表達式3)

D. for(表達式1;表達式3;表達式3)

7.執行語句for(i=1;i++<4;);之後,變量i的值爲(    )。

A. 3

B. 4

C. 5

D. 不確定

8.若二維數組a有m列,則在a[i][j]前的元素個數爲(    )。

A. j*m+i

B. i*m+j

C. i*m+j-i

D. i*m+j+1

9.下面說法中正確的是(    )。

A. 在C語言中,可以使用動態內存分配技術,定義元素個數可變的數組

B. 在C語言中,數組元素的個數可以不確定,允許隨即變動

C. 在C語言中,數組元素的數據類型可以不一致

D. 在C語言中,定義數組後,就確定了它能容納的相同數據類型元素的個數

10.不能把字符串:“good!”賦給數組b的語句是(    )。

A. char b[10]={’g’,’o’,’o’,’d’,’!’};

B. char b[10];b=“good!”;

C. char b[10];strcpy(b, “good!”) ;

D. char b[10]=“good!”;

11.執行下面程序段,給x,y賦值時,不能作爲數據分隔符的是(    )。

int x,y;

scanf(”%d%d”,&x&y);

A. 回車

B. Tab鍵

C. 回車

D. 逗號

12.已知ch是字符型變量,下面不正確的賦值語句爲(    )。

A. ch=’a+b’;

B. ch=’’;

C. ch=’7’+’9’;

D. ch=5+9;

13.下面程序段的輸出結果是(    )。

char c1=’6’,c2=’0’;

printf(”%c,%c,%d,%d ”,c1,c2,c1-c2,c1+c2);

A. 因輸出格式不合法,輸出出錯信息

B. 6,0,6,102

C. 6,0,7,6

D. 6,0,5,7

14.在C語言的循環語句for, while,do while中,用於直接中斷最內層循環的語句是(    )。

A. switch

B. continue

C. break

D. if

15.下面的循環結構中,不是無限循環的是(    )。

A. for( i=1;;i++) printf(“%d”,i--);

B. i=1;while(i--) {printf(”%d”,i++);}

C. i=1;do{printf(”%d”,i); i++;} while(--i);

D. for(i=0;i;i++) printf(”%d”,i);

16.下面程序段的運行結果是(    )。

char c[]=” will ”;

printf(“%d“,strlen(c));

A. 14

B. 3

C. 9

D. 字符串中有非法字符,輸出值不確定

17.下面說法中正確的是:在C語言程序中(    )。

A. 函數的定義可以嵌套,但函數的調用不可以嵌套

B. 函數的定義不可以嵌套,但函數的調用可以嵌套

C. 函數的定義和調用均不可以嵌套

D. 函數的定義和 調用均可以嵌套

18.若用數據名作爲函數調用的實參,傳遞給形參的是(    )。

A. 數據的首地址

B. 數組第一個元素的值

C. 數組中全部元素的值

D. 數組元素的個數

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

A. 在不同的函數中可以使用相同名字的變量

B. 函數中的形式參數是局部變量

C. 在一個函數內定義的變量只在本函數範圍內有效

D. 在一個結函數內的符合語句中定義的變量在本函數範圍內有效

20.一個變量的指針是指(    )。

A. 該變量的值

B. 該變量的地址

C. 該變量的變量名

D. 該變量的標誌

21.若有定義:int a[10],*p=a;,則p+5表示(    )。

A. 元素a[5]的地址

B. 元素a[5]的.值

C. 元素a[6]的地址

D. 元素a[6]的值

22. C語言規定,在一個源程序中,main函數的位置(    )。

A. 必須在最開始

B. 必須在系統調用的庫函數的後面

C. 可以任意

D. 必須在最後

23. 一個C語言程序是由(    )。

A. 一個主程序或若干個子程序組成

B. 函數組成

C. 若干過程組成

D. 若干個子程序組成

24. 下面哪項是構成C語言的基本單位(    )。

A. 函數

B. 過程

C. 子程序

D. 子例程

25. 以下正確的說法是(    )。

A. 定義函數時,形參的類型說明可以放在函數體內

B. return後邊的值不能爲表達式

C. 如果函數值的類型和返回值類型不一致,以函數值類型爲準

D. 如果形參與實參的類型不一致,以函數值類型爲準

26.對於基類型相同的兩個指針變量之間,不能進行的運算是(    )。

A. <

B. =

C. +

D. –

27.變量的指針,其含義是指該變量的(    )。

A. 值

B. 地址

C. 名

D. 一個標誌

28.下面程序運行的結果是(    )。

void ss(char *s,char t)

{ while(*s)

{ if(*s= =t) *s=t-‘a’+’A’;

s++;

}

}

void main()

{ char str1[100]=”abcddfefdbd”,c=’d’;

ss(str1,c);

printf(“%s ”,str1);

}

A. ABCDDFEFDBD

B. abcDDfefDbD

C. abcAAfefAbA

D. Abcddfefdbd

29.下列說法中正確的是(    )。

A. 結構體變量可以作爲一個整體進行其值得輸入和輸出

B. 結構體成員項不可以是結構體

C. 結構體成員項可以是結構體或其他任何C語言的數據類型

D. 結構體變量和結構體是相同的概念

30.下面說法中不正確的是(    )。

A. 一個C源程序可有一個或多個函數組成

B. 一個C源程序必須包含一個main函數

C. C程序的基本組成是函數

D. 在C程序中,註釋語句只能位於一條語句的後面

31.若執行下面的程序段,則下面描述中正確的是(    )。

int k=5;

while(k=1) k--;

A. while循環執行四次

B. 循環體執行一次

C. 循環體一次也不執行

D. 死循環

32.下面關於for循環的正確描述是(    )。

A. for循環只能用於循環次數已經確定的情況

B. for循環中是先執行循環體語句,後判斷表達式

C. 在for循環中,不能用break語句跳出循環

D. for循環的循環體可以包含多條語句,但必須用花括號括起來

33.不正確的定義語句是(    )。

A. double x[5]={2.0,4.0,6.0,8.0,10.0};

B. int y[5]={0,1,3,5,7,9};

C. char c1[]={’1’,’2’,’3’,’4’,’5’};

D. char c2[]={’x10’,’x0a’,’x08’};

34.下面是對s的初始化,其中不正確的是(    )。

A. char s[5]={“abc”};

B. char s[5]={‘a’,’b’,’c’};

C. char s[5]=””;

D. char s[5]=”abced”;

35.下面程序段的運行結果是(    )。

char c[5]={‘a’,’b’,’’,’c’,’’};

printf(“%s”,c);

A. ‘a’’b’

B. ab

C. ab c

D. abc

36.以下說法中正確的是(    )。

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

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

C. C語言程序總是從main函數開始執行

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

37.下列常量中,合法的C常量是(    )。

A. “x-y”

B. ‘105’

C. ‘Be’

D.  07ff

38.下面程序的輸出結果是(    )。

void main

{

int i=011,j=11;

printf(“%d,%d ”,++i,j--);

}

A. 10,11

B. 12,10

C. 11,11

D. 10,9

39.下面程序的執行結果爲(    )。

void main()

{int x=20,y;

y=++x;   y+=x;

printf(”%d,”y);

y=x--;    y+=x;

printf(”%d,”y);

}

A. 42,41

B. 42,42

C. 40,41

D. 42,40

40.下面程序的輸出結果是(    )。

void main()

{ int i=010,j=10;

printf(“%d,%d”,i++,++j);

}

A. 10,11

B. 11,11

C. 8,11

D. 8,10

41.能正確表示a和b同時爲正或同時爲負的表達式是(    )。

A. (a>=0||b>=0)&&(a<0||b<0)

B. (a>=0||b>=0)&&(a<0&&b<0)

C. (a+b>0)&& (a+|b<0)

D.   a*b>0

42.以下關於運算符優先順序的描述中正確的是(    )。

A. 關係運算符<算術運算符<賦值運算符<邏輯運算符

B. 邏輯運算符<關係運算符<算術運算符<賦值運算符

C. 賦值運算符<邏輯運算符<關係運算符<算術運算符

D. 算術運算符<關係運算符<賦值運算符<邏輯運算符

43.下面程序的運行結果是(    )。

void main()

{ int a,b,d=241;

a=d/100%9;

b=(-1)&&(-1);

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

}

A. 6,1

B. 2,1

C. 6,0

D. 2,0

44.若有條件表達式(exp)?a++:b--,則以下表達式中完全等價於表達式(exp)的是(    )。

A. (exp= =0)

B. (exp!=0)

C. (exp= =1)

D. (exp!=1)

45.程序段如下,則正確的執行結果是(    )。

int k=0;

while(k++<=2);

printf(“%d ”,k);

A. 2

B. 3

C. 4

D. 無結果

46.下面說法中正確的是(    )。

A. 在C語言函數中,必須有形參

B. 在C語言函數中,形參必須是變量名

C. 在C語言函數中,可以有也可以沒有形參

D. 在C語言函數中,數組名不能做形參

47.下面說法正確的是,在C語言中(    )。

A. 實參和與其對應的形參各佔用獨立的存儲單元

B. 實參和與其對應的形參共佔用一個存儲單元

C. 只有當實參和與其對應的形參同名時才共佔用存儲單元

D. 形參是虛擬的,不佔用存儲單元

48.下面不正確的說法是:C語言規定(    )。

A. 實參可以是常量、變量或表達式

B. 形參可以是常量、變量或表達式

C. 實參傳遞給形參時,要求實參必須有確定的值

D. 形參應與其對應的實參類型可以不一致

49.C語言允許函數值類型缺省定義,此時函數值隱含的類型是(    )。

A. float型

B. int型

C. long型

D. double型

50.若有以下定義:char s[10]=“include“,*p=s;,則不能代表字符‘u’的表達式爲(  )。

A. s[4]

B. s+4

C. *(p+4)

D. p+=4,*p;

51. C語言規定,簡單變量做實參時,它和對應形參之間的數據傳遞方式是(    )。

A. 地址傳遞

B. 單向值傳遞

C. 由實參傳給形參,再由形參傳給實參

D. 由用戶指定傳遞方式

52. C語言規定,函數返回值的類型是由(    )。

A. return語句中的表達式類型所決定

B. 調用該函數時的主調函數類型所決定

C. 調用該函數時系統臨時決定

D. 在定義該函數時所指定的函數類型所決定

53. 若有int *p,a[10];p=a; ,則下列寫法不正確的是(    )。

A. p=a+2

B. a++

C. *(a+1)

D. p++

54. 若用數組名作爲函數調用的實參,傳遞給形參的是(    )。

A. 數組的首地址

B. 數組第一個元素的值

C. 數組中全部元素的值

D. 數組元素的個數

55. 若使用以爲數組名作函數實參,則下面說法中正確的是(    )。

A. 在被調函數中,與該實參相對應的形參必須是同類型的數組名或指針變量

B. 實參數組類型與形參數組類型可以不匹配

C. 在被調函數中,不需要考慮形參數組的大小

D. 實參數組名與形參數組名必須一致

56. 設p1、p2是指向同一個字符串的指針變量,c爲字符變量,則不能正確執行的賦值語句爲 (    )。

A. c=*p1+*p2;

B. p2=c;

C. p1=p2;

D. c=(*p1)*(*p2);

57. 若有一下結構體定義,則正確的引用和定義是(    )。

struct example { int x;  int y;} v1;

A. example.x=10

B. example v2; v2.x=10;

C. struct  v2;  v2.x=10;

D. struct  example  v2={10,5};

58. 說明一個結構體變量時,系統分配給它的內存是(    )。

A. 各成員所需內存量的總和

B. 結構體中第一個成員所需內存量

C. 成員中佔內存量最大者所需的容量

D. 結構體中最後一成員所需內存量

59. 在C語言中,文件由下面拿個組成(    )。

A. 記錄

B. 數據行

C. 數據塊

D. 字符(字節)序列

60. 下面程序段的運行結果是(    )。

char c[]=” will ”;

printf(“%d“,strlen(c));

A. 14

B. 3

C. 9

D. 字符串中有非法字符,輸出值不確定

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

A. 在不同的函數中可以使用相同名字的變量

B. 函數中的形式參數是局部變量

C. 在一個函數內定義的變量只在本函數範圍內有效

D. 在一個結函數內的符合語句中定義的變量在本函數範圍內有效

62.一個變量的指針是指(    )。

A. 該變量的值

B. 該變量的地址

C. 該變量的變量名

D. 該變量的標誌