當前位置:首頁 » 編程語言 » c語言題庫答案

c語言題庫答案

發布時間: 2023-01-14 21:13:06

❶ 計算機二級c語言選擇題及答案(2)

}

printf("%d ",num);

}

程序執行後的輸m結果是()。

A.35

B.37

C.39

D.3975

32.以下程序的'輸出結果是()。

main()

{char st[20]="hello \";

printf("%d%d ",strlen(st).sizeof(st));

}

A.9 9

B.5 20

C.13 20

D.20 20

33.若有以下的定義:‘int t[3][2];”,能正確表示t數組元素地址的表達式是()。

A.&t[3][2]

B.t[3]

C.t[l]

D.t[2][2]

34.函數fseek(pf,OL,SEEK END)中的SEEK ENE 代表的起始點是()。

A.文件開始

B.文件末尾

C.文件當前位置

D.以上都不對

35.下述程序的輸出結果是()。

#include

main()

{ int i;

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

{if(i*i>=20)&&(i*i<=100))

break;

}

printf("%d ",i*i);

}

A.49

B.36

C.25

D.64

36.若有定義“int b[8],*p=b;”,則p+6表示()。

A.數組元素b[6]的值

B.數組元素b[6]的地址

C.數組元素b[7]的地址

D.數組元素b[o]的值加上6

37.設變數已正確定義,則以下能正確計算f=n!的程序是()。

A.f=0:

for(i=1;i<=n;i++)f*=i:

B.F=1:

for(i=l;i<2n;i++)f*=i:

C.f=l:

for(i=n;i>1;i++)f*=i:

D.f=1;

for(i=n;i>=2;i--)f*=i:

38.下述程序執行的輸出結果是()。

#include

main()

{ char a[2][4];

strcpy(a,"are");strcpy(a[1],"you");

a[0][3]=’&’;

printf("%s ",a):

}

A.are&you

B.you

C.are

D.&

39.設x=011050,則x=x&01252的值是()。

A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

40.在“文件包含”預處理語句的使用形式中,當#include後面的文件名用(雙引號)括起時,尋找被包含文件的方式是()。

A.直接按系統設定的標准方式搜索目錄

B.先在源程序所在的目錄搜索,如沒找到,再按系統設定的標准方式搜索

C.僅僅搜索源程序所在目錄

D.僅僅搜索當前目錄

【答案與解析】

1.D。【解析】演算法的空間復雜度,是指執行這個演算法所需的存儲空間。演算法所佔用的存儲空間包括演算法程序所佔用的空間、輸入的初始數據所佔用的存儲空間、演算法執行過程中所需要的額外空間。

2.D。【解析】數據的存儲結構是指數據的邏輯結構在計算機存儲空間中的存放形式,一種數據結構可以根據需要採用不同的存儲結構,用的存儲結構有順序和鏈式結構。用不同的存儲結構,其處理的效率是不同的。

3.D。【解析】所謂的交換排序方法是指藉助數據元素之間的互相交換進行排序的一種方法,包括冒泡排序和快速排序,冒泡排序通過相鄰元素的交換,逐步將線性表變成有序是一種最簡單的交換排序方法。

4.C。【解析】結構化程序設計的原則和方法之一是限制使用GOT0語句,但不是絕對不允許使用GOT0語句。其他三項為結構化程序設計的原則。

5.D。【解析】文件系統所管理的數據文件基本上是分散、相互獨立的。相對於資料庫系統,以此為基礎的數據處理存在3個缺點:數據冗餘大、數據的不一致性、程序與數據的依賴性強。

6.C。【解析】面對象的設計方法的基本原理是:使用現實世界的概念抽象地思考問題從而自然地解決問題。它雖強調模擬現實世界中的概念而不強調演算法,但是它鼓勵開發者在軟體開發的過程中從應用領域的概念角度去思考。

7.D。【解析】所謂的後序遍歷是指,首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點,並且在遍歷左、右樹時,仍然先遍歷左子樹,然後遍歷右子樹,最後訪問根點。因此,後序遍歷二叉樹的過程也是一個遞歸過程。

8.B。【解析】軟體的過程設計是指系統結構部件轉換成軟體的過程描述。

9.A。【解析】①對軟,牛開發的進度和費用估計不準確:②用戶對已完成的軟體系統不滿意的現象時常發生;③軟體產品的質量往往靠不住;④軟體常常是不可維護的;⑤軟體通常沒有適當的文檔;⑥軟體成本在計算機系統總成本中所佔的比例逐年上升;⑦軟體開發生產率提高的速度遠遠跟不上計算機應用迅速普能及深入的趨勢。

10.C。【解析】對象的封裝性是指從外面看只能看到對象的外部特性,而對象的內部,其處理能力的實行和內部狀態對外是不可見的,是隱蔽的。

11.C。【解析】資料庫系統由如下5個部分組成:資料庫(DB)、資料庫管理系統fDBMS)、資料庫管理員(人員)、系統平台之一——硬體平台(硬體)、系統平台之二——軟體平台(軟體)。其中 DB(DataBase)即資料庫,是統一管理的相關數據的集合;DBMS即資料庫管理系統,是位於用戶與操作系統之間的一層數據管理軟體,為用戶或應用完程序提供訪問DB的方法。由以上可知,選C為正確答案。

12.A。【解析】標識符是由字母、數字或下劃線組成,並且它的第一個字元必須是字母或者下劃線。B選項int不是表達變數類型的標識符,它不能再用做變數名和函數名。C 選項do是C語言的一個關鍵字。D選項標識符只能以字母或下劃線開始。

13.D。【解析】本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式返回值才是1;“||” 的兩個運算對象至少有一個是邏輯1時,表達式返回值也是1,x14.C。【解析】第1個printf函數,格式說明的個數是2,而輸出項的個數是3,所以對於多餘的輸出項k不予輸出;第2個printf函數,有兩個%說明,第1個%後面的字元要原樣輸出。本題考查printf函數的格式。①“%x”和“%0”分別表示以十六進制和八進制無符合型輸出整型數據(不帶前導ox或0);②printf函數中格式說明符之前插入的任何字元都原樣輸出;③格式說明與輸出項的個數,也要相等,如果格式說明的個數少於輸出項的個數,則對於多餘的輸出項不予輸出。

15.C。【解析】函數fun(int x,int y)的功能是返回x+y的值。在主函數中,變數a,b,c的初始值分別為1,2,3。因此,逗號表達式“a++,b++,aq b”的值等於5,表達式c++的值為3,調用於函數的表達式為“fun(5,3);”,其返回值等於8。

16.D。【解析】在x=2,y=x+3/2中,3/2=1。2+1= 3,因此表達式的值為3,因為x,y為double型變數,故選擇D選項。

17.A。【解析】當x為1時,執行case 1,a自加等於1,因為case 1後沒有break,接著執行case 2,此時a的值為2,b自加為1,故選擇A選項。

18.D。【解析】本題考夢自增運算符“++”、邏輯與運算符“&&”和邏輯或運算符“||”。自增運算符“++”出現在變數之前,表示先使用變數的值加l,再使用變數的值進行運算;出現在變數之後,表示先使用變數的值進行運算,再使用變數的值加l。當邏輯與運算符“&&’’兩邊的運算對象都為真時,邏輯表達式的值才為真;當邏輯或運算符“||”只要一個值為1,值就為1。根據運算符的優先順序,題中應先計算內層括弧中的值。++j是先自加後運算,因此運算時j的值等於3,所以表達式++j=3成立,即表達式的值為1;1與任何數都為進行或(||)運算,結果都為1,因此k=3的表達式i++是先運算後自加,因此運算時i為1,所以i++=1成立,自加1後i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。

19.A。【解析】本題考查switch語句。當i一1時,執行case 1,因為沒有遇到break語句,所以依次往下運行,“a=a+ 2=2,a=a+3=5”;當i=2時,執行case 2,因為沒有遇到break語句,所以依次往下執行,“a=a+2=7,a=a+3= 10”;當i=3時,執行case 3,a=a+1=11,因為沒有遇到break語句,所以依次往下運行,a—a+2—13,a—a+3一l6:當i=4時,執行default,a=a+3=19,結束循環。

20.C。【解析】只有當3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數只有42,故選擇C選項。

21.A。【解析】循環的作用是求行下標從1到2列下標從0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a [2][1]+a[2][2]=3+4+5+6+0=18。

22.A。【解析】在程序語句中,k的初始值為5,進行第l次while循環後,k自減1為4,非0,執行循環體里的printf語句,輸出k,此時k的值變為1。程序執行第2次循環時,k 自減1變為0,為假,退出while循環語句。所以程序的最後結果為1。

23.A。【解析】通過地址來引用數組元素的方法有下列5種:

(1)a[i][j];(2)*(a[i]+j);(3)*(*(a+j)+i);(4)* (a[i][j]);(5)(&aE0][0]q-3*i+j)。故A正確。

24.C。【解析】選項A、B的空間不夠;字元串存儲要有結束符’’,且要佔用一個空間,printf用來輸出字元,不能輸入字元串。

25.D。【解析】由題目ee線性鏈表的定義可知,要將q 和r所指的結點交換前後位置,只要使q指向r的後一個結點,p指向r結點,r指向q結點即可。而在選項D由,r-> next=q,這時r指向的節點為q;p->next r,這時p指向的節點為r;q->next=r->next,因為r節點已經指向q,所以執行這個語句後q又指向q,所以選項D不正確。

26.B。【解析】在第1次外層for循環中,首先x++得到x=1。進入到內層for循環,只有循環j的值為奇數時,變數x的值才自加1,所以在內層for循環執行過程中,變數x的值自加兩次,當退出內層for循環時,x=3,然後執行x++,得到x=4。在進入執行第2次外層for循環中,首先x++得到x=5。進入到內層for循環,只有循環變數j的值為奇數時,變數x的值才自加1,所以在內層for循環執行過程中,變數X的值自加1兩次,當退出內層for循環時,x=7,然後執行x++,得到x=8,所以列印輸出變數x的值為8。

27.C。【解析】子函數fun1(double a)的功能是返回a的平方值的整數部分。子函數fun2(double x,double y)的功能是返回X的平方值的整數部分與Y的平方值的整數部分的和。又因為題中變數w的定義為double型,函數fun(2) 的定義為int型,按照各類數值型數據間的混合運算,整型數據被轉換為實型數據。所以雙精度型變數w的值為5.O。

28.C。【解析】在for循環語句中自變數i從0開始,每次自加2,執行s+=*(t+i)語句,因為C語言規定數組名做表達式相當於數組的首地址,也就是第一個元素的地址。因此,*(t+i)代表數組的第i+1個元素。所以程序運行的結果是1+3+5+7+9=25,即變數S的值等於25。

29.A。【解析】本題在函數int fun(int n)的定義中又出現了對函數fun的調用,所以函數fun是遞歸函數。因而在主函數中調用x=fun(x)時,當輸入10賦給變數x時,遞歸調用的過程為

fun(10)=10…fun(9)=104-94-fun(8)=104-9+84- fun(7)

=10+9++8++7++fun(6)=10+9++8+7+6+fun (6)

=10+9++8+7+6+5+fun(4)

=10+9++8+7+6+5+4+fun(3)

=10+9++8+7+6+5+4+3+fun(2)

=10+9++8+7+6+5+4+3+2+fun(1)

=10+9++8+7+6+5+4+3+2=55

❷ C語言試題及答案(2)

main()

{ int k, a[10]={1,2,3,4,5};

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

for(k=0; k<5; k++) printf("%d", a[k]);

}

上面程序的輸出結果是

A.34756

B.23445

C.35743

D.12345

(40) 請讀程序:

#include

#define SUB(X,Y) (X)*Y

main()

{ int a=3, b=4;

printf("%d", SUB(a++, b++));

}

上面程序的輸出結果是

A.12

B.15

C.16

D.20(41) 請讀程序:

#include

main()

{ int mun=0;

while(num<=2)

{ num++; printf("%d ",num);}

}

上面程序的輸出結果是

A.1

B.1

C.1

D.1

2 2 2

3 3

4

(42) 請讀程序:

#include

main()

{ float x,y;

scan("%f",&x);

if(x<0.0) y=0.0

else if((x<5.0)&&(x!=2.0))

y=1.0/(x+2.0);

else if (x<10.0) y=1.0/x;

else y=10.0;

printf("%f ",y);

}

若運行時從鍵盤上輸入2.0(表示回車),則上面程序的輸出結果是

A.0.000000

B.0.250000

C.0.500000

D.1.000000

(43) 請讀程序:

#include

main()

{ int x=1, y=0, a=0, b=0;

switch(x)

{ case 1:

switch(y)

{ case 0: a++;break;

case 1: b++;break;

}

case 2:

a++; b++; break;

}

printf("a=%d, b=%d ",a,

B.;

}

上面程序的輸出結果是

A.a=2, b=1

B.a=1, b=1

C.a=1, b=0

D.a=2, b=2

(44) 若有下面的程序片段:

int a[12]={0}, *p[3], **pp, i;

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

p[i]=&a[i*4];

pp=p;

則對數組元素的錯誤引用是

A.pp[0][1]

B.a[10]

C.p[3][1]

D.*(*(p+2)+2)

(45) 請讀程序:

#include

#include

main()

{ float x,y,z;

scan("%f%f",&x,&y);

z=x/y;

while(1)

{ if(fabs(z)>1.0)

{ x=y; y=z; z=x/y;

}

else break

}

printf("%f ",y);

}

若運行時從鍵盤上輸入3.6 2.4(表示回車),則輸出的結果是

A.1.500000

B.1.600000

C.2.000000

D.2.400000

(46) 請讀程序:

#include

f(in b[], int n)

{ int i, r;

r=1;

for(i=0; i<=n; i++) r=r*b[i];

return r;

}

main()

{ int x, a[]={ 2,3,4,5,6,7,8,9};

x=f(a, 3);

printf("%d ",x);

}

上面程序的輸出結果是

A.720

B.120

C.24

D.6

(47) 請讀程序:

#include

#include

void fun( char *s)

{ char a[10];

strcpy( a, "STRING");

s=a;

}

main()

{ char *p;

fun(p);

x=f(a, 3);

printf("%s ",p);

}

上面程序的輸出結果是(└┘表示空格)

A.STRING└┘└┘└┘└┘

B.STRING

C.STRING└┘└┘└┘

D.不確定的值

(48) 若已建立下面的鏈表結構,指針p、s分別指向圖中所示的結點,則不能將s所指的結點插入到鏈表末尾的語句組是

A.s->next=NULL; p=p->next; p->next=s;

B.p=p->next; s->next=p->next; p->next=s;

C.p=p->next; s->next=p; p->next=s;

D.p=(*p).next; (*s).next=(*p).next; (*p).next=s;

(49) 請讀程序:

#include

void fun(float *pl, float *p2, float *s)

{ s=( float * )calloc( 1, sizeof(float));

*s=*p1+ *(p2++);

}

main()

{ float a[2]={1.1, 2.2}, b[2]={10.0, 20.0}, *s=a;

fun(a, b, s)

printf("%f ",*s);

}

上面程序的輸出結果是

A.11.100000

B.12.100000

C.21.100000

D.1.100000

(50) 請讀程序:

#include

#include

void fun( char *w, int m)

{ char s, *p1, *p2;

p1=w; p2=w+m-1;

while (p1{ s=*p1++; *p1=*p2--; *p2=s;}

}

main()

{ char a[]="ABCDEFG";

fun( a, strlen(a));

puts(a);

}

上面程序的輸出結果是

A.GFEDCBA

B.AGADAGA

C.AGAAGAG

D.GAGGAGA

二、填空題(每空2分,共40分)

請將每空的正確答案寫在答題卡上【1】-【20】序號後的橫線上,答在試卷上不得分。

(1) DOS命令分為內部命令與外部命令,XCOPY命令是 【1】 命令

(2) 為了列出當前盤當前目錄中所有第三個字元為C的文件名的有關信息,應該用命令 【2】 。

(3) 設當前盤為A盤,當前目錄為XY,A盤上的一個文件QR.C在當前目錄下的子目錄W中。現已將A盤的當前目錄改為DXY,當前盤改為C盤,如需指定A盤上該文件應寫成 【3】 。

(4) 用十六進制給存儲器中的位元組地址進行編號,其地址編號是從0000到FFFF,則該存儲器的容量是【4】KB。

(5) 設有兩個八位二進制數00010101與01000111相加,其結果的十進製表示為 【5】 。

(6) 數學式子 寫成C語言表達式是 【6】 。

(7) 下面程序的輸出結果是 【7】 。

#include

main()

{ static char b[]="Goodbye";

char *chp=&b[7];

while( --chp >=&b[0]) putchar( *chp);

putchar(’ ’);

}

(8) 下面程序的輸出結果是 【8】 。

#include

void as( int x, int y, int *cp, int *dp)

{ *cp=x+y;

*dp=x-y;

}

main()

{ int a=4, b=3, c, d;

as( a, b, &c, &d);

printf( ’%d %d ", c, d);

}

(9) 請讀程序:

#include

main( int argc, char *argv[])

{ int i;

printf( ’%d ", argc);

for( i=0; i<=argc+1; i++) printf( "%s ", argv[i]);

printf(" ");

}

若上面的程序編譯、連接後生成可執行文件ABC.EXE,則輸入以下命令行

abc file1 file2(表示回車)

程序執行後的輸出結果是 【9】 。

(10) 條件“20(11) 設二進制數a是00101101,若想通過異或運算a^b使a的高4位取反,低4位不變,則二進制數b應是 【11】 。

(12) 若有以下說明和定義語句,則變數w在內存中所佔的位元組數是 【12】 。

union aa

{ float x, y;

char c[6];

};

struct st { union aa v; float w[5]; double ave; } w;

(13) 下面程序的輸出結果是 【13】 。

#include

#define N 5

fun( char *s, char a, int n)

{ int j;

*s=a; j=n;

while( ereturn j;

}

main()

{ char s[N+1];

int k, p;

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

s[k]=’A’+k+1;

printf( "%d ", fun(s, ’E’, N));

}(14) 下面程序的輸出結果是 【14】 。

#include

void fun( char *a1, char *a2, int n)

{ int k;

for( k=0; ka2[k]=( a1[k]-’A’-3+26)&+’A’;

a2[n]=’’;

}

main()

{ char s1[5]="ABCD", s2[5];

fun( s1, s2, 4);

puts( s2);

}

(15) 下面的findmax函數返回數組s中最大元素的下標,數組中元素的個數由t傳入,請填空。

findmax( int s[], int t)

{ int k, p;

for( p=0, k=p; pif( s[p]>s[k]) 【15】 。

return k;

}

(16) 下面程序的輸出結果是 【16】 。

#include

fun( int x)

{ int p;

if( x==0||x==1) return(3);

p=x-fun( x-2);

return p;

}

main()

{ printf( "%d ", fun(9));}

(17) 下面程序的輸出結果是 【17】 。

#include

funa( int a, int b)

{ return a+b;}

funb( int a, int b)

{ return a-b;}

sub( int (*t)(), int x, int y)

{ return((*t)( x,y));}

main()

{ int x, (*p)();

p=funa;

x=sub(p,9,3);

x+=sub(funb, 8, 3);

printf("%d ", x);

}

(18) 下面程序的輸出結果是 【18】 。

#include

main()

{ char *p[]={ "BOOL", "OPK", "H", "SP"};

int i;

for(i=3; i>=0; i--,i--) printf( "%c", *p[i]);

printf(" ");

}

(19) 為了建立如圖所示的存儲結構(即每個結點含兩個域,data是數據域,next是向結點的指針域),請填空。

data next

struct link { char data; 【19】 } node;

(20) 下面的程序用來統計文件中字元的個數,請填空。

#include

main()

{ FILE *fp;

long num=0;

if(( fp=fopen("fname.dat","r"))==NULL)

{ printf( "Can’t open file! "); exit(0);}

while 【20】

{ fgetc(fp); num++;}

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

fclose(fp);

}

參考答案

一`選擇題((1)~(40)題每題1分,(41)~(50)題每題2分,共60分)

(1)C (2)A (3)B (4)D (5)D (6)A (7)C (8)B (9)D (10)C

(11)B (12)D (13)A (14)C (15)B (16)A (17)B (18)A (19)C (20)C

(21)D (22)B (23)B (24)A (25)C (26)D (27)D (28)B (29)C (30)A

(31)B (32)B (33)D (34)C (35)A (36)C (37)A (38)B (39)C (40)A

(41)C (42)C (43)A (44)C (45)B (46)B (47)D (48)C (49)D (50)C

二` 填空題(每空2分,共40分)

(第(2)`(3)空允許小寫或大小寫混合使用,其它空均須與答案一樣)

(1) 外部

(2) DIR ?? C*.*

(3) A:XYWQR.C

(4) 64

(5) 92

(6) pow(sin(x),2) * (a+b)/(a-b) 或 sit(x) * sit(x) * (a+b)/(a-b)

(7) eybdooG

(8) 7 1

(9) 3 abc.exe file1 file2 (注:兩個答案,每個1分)

(10) ((20 (11) 11110000

(12) 34

(13) 3

(14) XYZA

(15) k=p

(16) 7

(17) 17

(18) SO

(19) struct link *next

(20) (!feof(fp))或(feof(fp)==0)

❸ 計算機二級C語言測試題及答案解析

2017年計算機二級C語言測試題及答案解析

全國計算機等級考試(National Computer Rank Examination,以下簡稱 NCRE),是經原國家教育委員會(現教育部)批准,由教育部考試中心主辦,面向社會,用於考查非計算機專業應試人員計算機應用知識與技能的全國性計算機水平考試體系。下面是2017年計算機二級C語言測試題及答案解析。歡迎閱讀。

2017年計算機二級C語言測試題及答案解析

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

A、函數

B、過程

C、子程序

D、子常式

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

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

B、 程序中第一個函數

C、 程序中的main函數

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

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

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

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

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

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

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

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

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

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

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

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

A、-a1

B、a[i]

C、a2_i

D、int t

5~8題為相同類型題

考點:標識符的命名規則

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

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

關鍵字不能作為標識符

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

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

A、3ax

B、x

C、case

D、-e2 E)union

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

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

A、 %x

B、a+b

C、a123

D、123

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

8、下列四組字元串中都可以用作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)

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

A、整型、實型、邏輯型

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

C、整型、字元型、邏輯型

D、整型、實型、字元型

10.在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

11.如果int a=3,b=4;則條件表達式"aA、 3

B、 4

C、 0

D、1

詳見教材P97.

表達式1?表達式2:表達式3

先計算表達式1,

若表達式1成立, 則選擇計算表達式2,並表達式2的值作為整個大表達式的值;

若表達式1不成立,則選擇計算表達式3,並將表達式3的值作為整個大表達式的值

此題中的aa為3,b為4。a12.若int x=2,y=3,z=4 則表達式x

A、4

B、3

C、2

D、0

E)1

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

A、0

B、 0或1

C、 1

D、‘T’或’F’

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

A、 11/3

B、 11.0/3

C、 (float)11/3

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

14~16題為同一類型

詳見教材P54~56.

(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

15.設整型變數 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)

16. 若“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

17. 以下對一維數組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,常量表達式不能為變數。

18.以下能對一維數組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用了().

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

A、int a(10);

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

C、int n;a[n];

D、#define N 10

int a[N];

20、已知: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,邏輯地址下標只能放在[ ]中

21.若有以下數組說明,則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

22.若有說明: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

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

23.對二維數組的正確定義是(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};

24.已知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,的引用形式不正確。

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

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

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

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

D、形參的數據類型

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

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

B、 函數形參的數據類型

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

D、任意指定的數據類型

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

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

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

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

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

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

A、 auto

B、 register

C、static

D、extern

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

A、auto

B、static

C、extern

D、register

30. 若有以下說明語句:

struct student

{ int num;

char name[ ];

float score;

}stu;

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

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

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

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

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

31.若有以下說明語句:

struct date

{ int year;

int month;

int day;

}brithday;

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

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

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

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

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

32. 以下對結構變數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

33.設有如下定義:

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;

34.設有以下說明語句:

typedef struct stu

{ int a;

float b;

} stutype;

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

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

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

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

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

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

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

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

C、p是指向int型數據的指針 // 指針的定義教材P223

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

36.下列不正確的定義是(A )。

A、int *p=&i,i;

B、int *p,i;

C.int i,*p=&i;

D、int i,*p;

選項A先定義一個整型指針變數p,然後將變數i的地址賦給p。然而此時還未定義變數i因此編譯器無法獲得變數i的地址。(A與C對比,選項C先定義變數i,則在內存中為i分配空間,因此i在內存空間的地址就可以確定了;然後再定義p,此時可以為p賦i的地址,C正確)

37. 若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是: (D )

A、p=q

B、*p=*q

C、n=*q

D、p=n

p,q同為整型指針變數,二者裡面僅能存放整型變數的地址。

選項A,q中為地址,因此可將此地址賦給p

選項B,*p表示p所指向對象n的內容,即一個整數;*q表示q所指向對象的內容,由於在定義q時為其初始化,將p中n的地址給q,因此p中存放n的地址,*q表示q所指向對象n的內容.因此*p=*q 相當於 n=n;

選項C,n=*q 等價於n=n;

選項D,p中只能存放地址,不能將n中的整數值賦給p

38.有語句:int a[10],;則 B 是對指針變數p的正確定義和初始化。

A、int p=*a;

B、int *p=a;

C、int p=&a;

D、int *p=&a;

選項A,a是數組名,不是指針變數名,因此不可用*標注數組名a

選項C,a是數組名,數組名就是地址,無需再用地址符號。而且在定義指針變數p時,應在變數名前加*,標明p是指針變數

選項D,a是數組名,數組名就是地址,無需再用地址符號。

39.若有說明語句“int a[5],*p=a;”,則對數組元素的正確引用是( C )。

A、a[p]

B、p[a]

C、*(p+2)

D、p+2

首先定義一個整型數組a,a的長度為5,然後定義一個指針變數p,並同時對p進行初始化,將數組a的地址賦給p。因此此時p中存放的數組a的首地址,即數組中第一個元素a[0]的地址。

對於數組元素下標的引用(詳見p144), 一般形式 數組名[下標] 其中下標為邏輯地址下標,從0開始計數,方括弧中的下標可以是變數,可以是表達式,但結果一定要是整數。

選項A,p中存放的是地址,不是整數,不能做數組元素的下標

選項B,a是數組名,數組名就是地址,不是整數,不能做數組元素的下標

選項C,(重點!!!詳見p231~234) p+2表示指向同一數組中的下兩個元素的地址,當前p指向a[0],則p+2表示a[2]的地址,因此*(p+2)表示a[2]的內容

40. 有如下程序

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

則數值為9的表達式是 B

A、 *P+9

B、 *(P+8)

C、 *P+=9

D、P+8

(重點!!!詳見p231~234)

首先定義一個整型數組a,a的長度為5,然後定義一個指針變數P,並同時對P進行初始化,將數組a的地址賦給P。因此此時P中存放的數組a的首地址,即數組中第一個元素a[0]的地址。

數組中9對應的是a[8], 選項B,P+8表示數組中後8個元素的地址,即a[8]的地址。*(P+8)則表示該地址內所存放的內容,即a[8]的值。

選項A,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值1. *P+9=1+9=10

選項C,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等價於a[0]=a[0]+9.

選項D,P+8表示數組中後8個元素的地址,即a[8]的地址,而非a[8]中的值。

41. 在C語言中,以 D 作為字元串結束標志

A、’ ’

B、’ ’

C、 ’0’

D、’’

42.下列數據中屬於“字元串常量”的是(A )。

A、“a”

B、{ABC}

C、‘abc’

D、‘a’

若干個字元構成字元串

在C語言中,用單引號標識字元;用雙引號標識字元串

選項B,C,分別用{}和’’標識字元串

選項D,標識字元。

43.已知char x[]="hello", y[]={'h','e','a','b','e'};, 則關於兩個數組長度的正確描述是 B .

A、相同

B、x大於y

C、x小於y

D、以上答案都不對

C語言中,字元串後面需要一個結束標志位'',通常系統會自動添加。

對一維數組初始化時可採用字元串的形式(例如本題數組x),也可採用字元集合的形式(例如本題數組y)。在以字元串形式初始化時,數組x不盡要存儲字元串中的字元,還要存儲字元串後的結束標志位,因此數組x的長度為6;在以字元集合形式初始化時,數組y,僅存儲集合中的元素,因此數組y長度為5

;

❹ 9月計算機二級《C語言》上機考題及答案

1、以下選項中屬於C語言的數據類型是()。

A. 復合型

B. 雙精度型

C. 邏輯型

D. 集合型

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

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

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

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

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

3、選出下列標識符中不是合法的標識符的是()。

A. hot_do

B. cat1

C. _pri

D. 2ab

4、下列描述中不正確的是()。

A、字元型數組中可能存放字元串。

B、可以對字元型數組進行整體輸入、輸出。

C、可以對整型數組進行整體輸入、輸出。

D、 不能在賦值語句中通過賦值運算符“=”對字元型數組進行整體賦值。

5、若已定義:int a[9], *p=a;並在以後的語句中未改變p的值,不能表示a[1]地址的表達式為()。

A. p+1

B. a+1

C. a++

D. ++p

6、設有如下定義: int x=10,y=3,z; 則語句printf("%d ",z=(x%y,x/y)); 的輸出結果是()。

A. 1

B. 0

C. 4

D. 3

7、定義如下變數和數組: int i, x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句for(i=0;i<3;i++) printf("%d",x[i][2-i]); 的輸出結果是()

A. 1 5 9

B. 1 4 7

C. 3 5 7

D. 3 6 9

8、讀出以下語句的輸出結果是()。

int x=10,y=10;

printf(“%d %d ”,x--,--y);

A. 10 10

B. 9 9

C. 9 10

D. 10 9

9、兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是()。

if(x++>5) printf("%d",x);

else printf("%d ",x - -);

A. 7和5

B. 6和3

C. 7和4

D. 6和4

10、設有如下定義:char *aa[2]={"abcd","ABCD"};則以下說法中正確的是()。

A)aa數組成元素的值分別是"abcd"和ABCD"

B)aa是指針變數,它指向含有兩個數組元素的字元型一維數組

C)aa數組的兩個元素分別存放的是含有4個字元的一維字元數組的`首地址

D)aa數組的兩個元素中各自存放了字元’a’和’A’的地址

11、以下語句的輸出結果是()。

int a=-1,b=4,k;

k=(+ +a<0)&&!(b - -<=0);

printf("%d,%d,%d ",k,a,b);

A. 1,0,4

B. 1,0,3

C. 0,0,3

D. 0,0,4

12、下列程序的輸出結果是()。

char *p1="abcd", *p2="ABCD", str[50]="xyz";

strcpy(str+2,strcat(p1+2,p2+1));

printf("%s",str);

A. xyabcAB

B. abcABz

C. ABabcz

D. xycdBCD

13、執行下面的程序後,a的值是()。

#define SQR(X) X*X

main()

{ int a=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

printf("%d ",a); }

A. 10

B. 1

C. 9

D. 0

14、設A為存放(短)整型的一維數組,如果A的首地址為P,那麼A中第i 個元素的地址為()。

A.P+i*2

B. P+(i-1)*2

C. P+(i-1)

D. P+i

15、下列程序執行後輸出的結果是()。

int d=1;

fun (int p)

{ int d=5;

d + =p + +;

printf("%d,",d); }

main()

{ int a=3;

fun(a);

d + = a + +;

printf("%d ",d); }

A. 8, 4

B. 9, 6

C. 9, 4

D. 8, 5

16、表達式:10!=9的值是()。

A. true

B. 非零值

C. 0

D. 1

17、若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是()。

A. i= *p;

B. *p=*&j;

C. i=&j;

D. i=* *p;

18、不能把字元串:Hello!賦給數組b的語句是()。

A. char b[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B. char b[10]; b="Hello!";

C. char b[10]; strcpy(b,"Hello!");

D.char b[10]="Hello!";

19、在C程序中有如下語句:char *func(int x,int y); 它是()。

A. 對函數func的定義。

B. 對函數func的調用。

C.對函數func的原型說明。

D. 不合法的。

20、以下程序的輸出結果是()。

char str[15]=”hello!”;

printf(“%d ”,strlen(str));

A. 15

B. 14

C. 7

D. 6

參考答案:

1、B 2、C 3、D 4、C 5、C 6、D 7、C 8、D 9、C 10、D

11、D 12、D 13、B 14、B 15、A 16、D 17、B 18、B 19、C 20、D

❺ C語言選擇題及答案

選擇題

1.在深度為5的滿二叉樹葉中,葉子結點的個數為( )。

A.32

B.31

C.16

D.15

2.軟體生命周期中,花費最多的階段是( )。

A.詳細設計

B.軟體編碼

C.軟體測試

D.軟體維護

3.視圖設計一般有3種設計次序,下列不屬於視圖設計次序的是( )。

A.自頂而下

B.由內向外

C.由外向內

D.自底向上

4.下列數據結構中,能用二分法進行查找的是( )。

A.順序存儲的有序線性表

B.結性鏈表

C.二叉鏈表

D.有序線性鏈表

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

A.對於double類型數組,不可以直接用數組名對數組進行整體輸入或輸出

B.數組名代表的是數組所佔存儲區的首地址,其值不可改變

C.當程序執行中,數組元素的下標超出所定義的下標范圍時,系統將給出“下標越界”的出錯信息

D.可以通過賦初值的方式確定數組元素的個數

6.以下只有在使用時才為該類型變數分配內存的存儲類型說明是( )。

A.auto和static

B.auto和register

C.register和static

D.extern和register

7.下列可作為C語言賦值的語句的是( )。

A.x一3,y=5

B.a=b=6

C.i--;

D.a,c

8.若整型變數a、b、c、d中的值依次為2、2、3、4,則條件表達式aA.1

B.2

C.3

D.4

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

A.線性表是由n個元素組成的一個有限序列

B.線性表是一種線性結構

C.線性表的所有結點有且僅有一個前件和後件

D.線性表可以是空表

10.以下程序執行後sum的值是( )。

main()

{ int i,sum;

for(i=1;i<6;i++)sum+=i:

printf("1%d ",sum):

}

A.15

B.14

C.不確定

D.0

11.設j為Int型變數,則下面for循環語句的執行結果是( )。

for(j=10;j>3;j--)

{ if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.6 3

B.7 4

C.6 2

D.7 3

12.表示關系X<=Y<=Z的C語言表達式為( )。

A.(X<=Y)&&(Y<=Z)

B.(X<=Y)AND(Y<=Z)

C.(X<=Y<=Z)

D.(X<一Y)&(Y<一Z)

13.設有如下定義:

int arr[]={6,7,8,9,10);

int*ptr:

ptr=arr;

*(ptr2)=2;

printf("%d,%d ",*ptr,*(ptr2)):

則下列程序段的輸出結果為( )。

A.8,10

B.6,8

C.7,9

D.6,2

14.設有定義語句:

int x[-6]={2,4,6,8,5,7),*p=X,i;

要求依次輸出X數組6個元素中的值,不能完成此操作的語句是( )。

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(pq-i));

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",*(p)++);

15.數字字元0的ASCII值為48,運行以下程序的輸出結果是( )。

main()

( char a=’1’,b=’2’;

printf("%C,",b++);printf("%d ",b—a);}

A.3,2

B.50,2

C.2,2

D.2,50

16.設有如下定義:

int(*ptr)();

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

A.ptr是指向一維組數的指針變數

B.ptr是指向int型數據的指針變數

C.ptr是指向函數的指針,該函數返回一個int型數據

D.ptr是一個函數名,該函數的返回值是指int型數據的指針

17.設有定義的語句:“char c1=92,c2=92;”,則以下表達式中的值為零的是( )。

A.c1^c2

B.c1&c2

C.~c2

D.c1 | c2

18.以下程序的輸出結果是( )。

void fun(int*a,int i,int i)

{int t;

if(i { t=a[i[;a[i]=a[j];a[j]一t;

i++;j--;

fun(a,i,j);

}

}

main()

{ int K[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<1;i++)printf("%2d",x[i]);

printf(" ");

}

A.1,2,6,8

B.8,6,2,1

C.8,1,6,2

D.8,6,1,2

19.有以下程序:

main()

{int i,j;

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

{ for(i=9;i if(!(j%i))break;

if(i==j-1)

printf("%d",j);

}

}

輸出結果是( )。

A.11

B.10

C.9

D.10 11

11.設j為Int型變數,則下面for循環語句的執行結果是( )。

for(j=10;j>3;j--)

{ if(j%3)j--;

--j;--j;

printf("%d",j);

}

A.6 3

B.7 4

C.6 2

D.7 3

12.表示關系X<=Y<=Z的C語言表達式為( )。

A.(X<=Y)&&(Y<=Z)

B.(X<=Y)AND(Y<=Z)

C.(X<=Y<=Z)

D.(X<一Y)&(Y<一Z)

13.設有如下定義:

int arr[]={6,7,8,9,10);

int*ptr:

ptr=arr;

*(ptr2)=2;

printf("%d,%d ",*ptr,*(ptr2)):

則下列程序段的輸出結果為( )。

A.8,10

B.6,8

C.7,9

D.6,2

14.設有定義語句:

int x[-6]={2,4,6,8,5,7),*p=X,i;

要求依次輸出X數組6個元素中的值,不能完成此操作的語句是( )。

A.for(i=0;i<6;i++)printf("%2d",*(p++));

B.for(i=0;i<6;i++)printf("%2d",*(pq-i));

C.for(i=0;i<6;i++)printf("%2d",*p++);

D.for(i=0;i<6;i++)printf("%2d",*(p)++);

15.數字字元0的ASCII值為48,運行以下程序的輸出結果是( )。

main()

( char a=’1’,b=’2’;

printf("%C,",b++);printf("%d ",b—a);}

A.3,2

B.50,2

C.2,2

D.2,50

16.設有如下定義:

int(*ptr)();

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

A.ptr是指向一維組數的指針變數

B.ptr是指向int型數據的指針變數

C.ptr是指向函數的指針,該函數返回一個int型數據

D.ptr是一個函數名,該函數的返回值是指int型數據的指針

17.設有定義的語句:“char c1=92,c2=92;”,則以下表達式中的值為零的是( )。

A.c1^c2

B.c1&c2

C.~c2

D.c1 | c2

18.以下程序的輸出結果是( )。

void fun(int*a,int i,int i)

{int t;

if(i { t=a[i[;a[i]=a[j];a[j]一t;

i++;j--;

fun(a,i,j);

}

}

main()

{ int K[]={2,6,1,8},i;

fun(x,0,3);

for(i=0;i<1;i++)printf("%2d",x[i]);

printf(" ");

}

A.1,2,6,8

B.8,6,2,1

C.8,1,6,2

D.8,6,1,2

19.有以下程序:

main()

{int i,j;

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

{ for(i=9;i if(!(j%i))break;

if(i==j-1)

printf("%d",j);

}

}

輸出結果是( )。

A.11

B.10

C.9

D.10 11

20.有以下程序.

#include

main()

{ char c1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar(); c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c ",c5,c6);

}

程序運行後,若從鍵盤輸入(從第l列開始)

123<回車>

45678<回車>

則輸出結果是( )。

A.1267

B.1256

C.1278

D.1245

❻ 計算機二級c語言題庫及答案

❼ 9月計算機二級《C語言》上機試題及答案

(1)一個棧的初始狀態為空。現將元素1、2、3、4、5、A、B、c、D、E依次入棧,然後再依次出棧,則元素出棱的順序是( )。

A.12345ABCDE

B.EDCBA54321

C.ABCDEl2345

D.54321EDCBA

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

A.循環隊列有隊頭和隊尾兩個指針,因此,循環隊列是非線性結構

B.在循環隊列中,只需要隊頭指針就能反映隊列中元素的動態變化情況

C.在循環隊列中,只需要隊尾指針就能反映隊列中元素的動態變化情況

D.循環隊列中元素的個數是由隊頭指針和隊尾指針共同決定的

(3)在長度為n的有序線性表中進行二分查找,最壞情況下需要比較的次數是( )。

A.0(n)

B.D(n2)

C.O(1092n)

D.0(nl092n)

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

A.順序存儲結構的存儲一定是連續的,鏈式存儲結構的存儲空間不一定是連續的

B.順序存儲結構只針對線性結構,鏈式存儲結構只針對非線性結構

C.順序存儲結構能存儲有序表,鏈式存儲結構不能存儲有序表

D.鏈式存儲結構比順序存儲結構節省存儲空間

(5)數據流圖中帶有箭頭的線段表示的是( )。

A.控制流

B.事件驅動

C.模塊調用

D.數據流

(6)在軟體開發中,需求分析階段可以使用的工具是( )。

A.N—s圖

B.DFD圖

C.PAD圖

D.程序流程圖

(7)在面向對象方法中,不屬於“對象”基本特點的是( )。

A.一致性

B.分類性

C.多態性

D.標識唯一性

(8)一間宿舍可住多個學生,則實體宿舍和學生之間的聯系是( )。

A.一對一

B.一對多

C.多對一

D.多對多

(9)在數據管理技術發展的三個階段中,數據共享最好的是( )。

A.人工管理階段

B.文件系統階段

C.資料庫系統階段

D.三個階段相同

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

由關系R和S通過運算得到關系T,則所使用的運算為( )。

A.笛卡爾積

B.交

C.並

D.自然連接

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

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

B.一個c語言程序只能實現一種演算法

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

D.一個C函數可以單獨作為一個C程序文件存在(12)以下選項中,能用作數據常量的是( )。

A.115L

B.0118

C.1.5el.5

D.0115

(13)按照c語言規定的用戶標識符命名規則,不能出現在標識符中的是( )。

A.大寫字母

B.下劃線

C.數字字元

D.連接符

(14)設變數已正確定義並賦值,以下正確的表達式是( )。

A.X=Y+z+5,++Y

B.int(15.8%5)

C.X=Y*5=X+Z

D.X=25%5.0

(15)設有定義:int X=2;,以下表達式中,值不為6的是( )。

A.2*x.x+=2

B.x++,2*x

C.x*=(1+x)

D.x*!x+1

(16)有以下程序:

程序運行後的輸出結果是( )。

A.2,3,3

B.2,3,2

C.2,3,1

D.2,2,1

(17)有以下程序:

已知字母A的ASCIl碼為65,程序運行後的輸出結果是( )。

A)E.68B.

B)D,69

C.E,D

D.輸出無定值

(18)若有定義int x,y;並已正確給變數賦值,則以下選項中與表達式(x—y)?(x++):(y++)中的條件表達式(x—Y)等價的是( )。

A.(x—Y<01Ix—Y>O)

B.(x—y<0)

C.(x—Y>0)

D.(x—Y==0)

(19)有以下程序:

程序運行後的輸出結果是( )。

A.3

B.2

C.1

D.0

(20)若有定義:float x=1.5;int a=1,b=3,c=2;則正確的switch語句是( )。

❽ 求C語言練習題答案

二、填空題
1. ___變數__是指在程序運行過程中,值可以發生變化的量。
2.C語言是一種____區分_(區分/不區分)字母大小寫的語言,Password和password在C語言中是兩個___不同__(相同/不同)的標識符。
3.下面的轉義字元分別表示:
』\b』__退格___,』\n』__換行___,』\t』__水平製表___,』\地』 __雙引號字元逗"地___
4.下面常量的類型分別為:
1.5E12__浮點型___,1288L _整型____,』a』__字元___,"a"__字元串___
08 __整形___,』\007』__整型___
5. C語言源程序一定要有而且只有一個__主函數___函數,程序執行時也從它開始。
6. 結構化程序設計主要有___順序__、__選擇___和__循環___三種基本結構。
三、判斷題
1. C語言不是一種結構化程序設計語言。(錯)
2. C語言是弱類型語言,為了類型轉換的方便,對類型的要求很不嚴格,在許多情況下不做類型檢查。(對)
3. C語言既具有高級語言的特點,同時也具有部分低級語言的特點。(對)
4. C源程序可以由多個文件組成,每個文件中都可有一個主函數main()。(錯)
5. C程序從main()函數開始執行,因此主函數main()必須放在程序的開頭。(錯)
6. 命名標識符時字元個數不得超過6個。(錯)
7. 對於同一個數據種類型,變數值越大,它所佔內存的位元組數越多。(錯)
8. 定義一個變數時必須指出變數類型,但是不一定必須給變數初始化。(對)
9. ""表示一個空字元串常量,』』表示一個空字元常量。(對)
10. 一個表達式中出現多種數值型數據類型,運算前先進行類型轉換。(對)
11. 浮點數不能作自增或自減運算,只有整型才可作自增或自減運算。(錯)
12. 已知a、b是整型變數,則表達式a=3,2+4,b=6,7+8是一個逗號表達式。(對)
四、問答題
1. 寫出下面表達式的值
(1)12/3*9=36
(2)int i=3,j;
i*=2+5;
i/=j=4;
i+=(j%2);
i、j的最終結果是多少看i=5,j=4
(3)int a=3,b,c;
b=(a++)+(a++)+(a++);
c=(++a)+(++a)+(++a);a、b、c的最終結果是多少看a=9,b=9,c=25

2. 下列表達式是否正確?若正確,表達式的值是什麼?
21/2=10 21/2.0= 10.5 21.0/2=10.5 21%2=1 21.0%2 21%2.0 18%15=3 15%18=15 3%15=3
五、編程
編寫程序,在屏幕上輸出如下信息:
===================
= I am a student. =
===================
#include"stdio.h逗
void main()
{
printf("= I am a student. =");
}

❾ 計算機二級C語言模擬題及答案

2017年計算機二級C語言模擬題及答案

1.1 單選題

1.下列變數名中,非法的是( C )。

A.A25 B.My_car

C.My-str D.abc

2.下列常量中,十六進制int型常量是( A )。

A.0x5f B.x2a

C.046 D.7a

3.下列常量中,不是字元常量的是( B )。

A.' ' B."y"

C.'x' D.'7'

4.在函數體內定義了下述變數a,a的存儲類為( D )。

int a;

A.寄存器類 B.外部類

C.靜態類 D.自動類

5.下列關於變數存儲類的描述中,錯誤的是( C )。

A.任何變數定義後都具有一個確定的存儲類

B.變數的存儲類確定了變數的作用域和壽命

C.定義變數時沒有存儲類說明符者一律為自動類

D.內部靜態類變數和外部靜態類變數的存儲類說明符都是static

6.下列關於變數數據類型的描述中,錯誤的是( A )。

A.定義變數時int型數據類型可以省略

B.變數的數據類型可以決定該變數占內存的位元組數

C.變數的數據類型是可以被強制的

D.變數的數據類型是有高低之分的

7.長雙精度浮點型常量的後綴是( C )。

A.U B.F

C.L D.無

8.下列運算符中,不能用於浮點數操作的是( D )。

A.++ B.+

C.*= D.&(雙目)

9.下列運算符中,優先順序最高的是( A )。

A.*(雙目) B.||

C.>> D.%=

10.下列運算符中,優先順序最低的是( B )。

A.== B.?:

C.| D.&&

11.已知:int a(3);下列表達式中,錯誤的是( C )。

A.a%2==0 B.a--+2

C.(a2)++ D.a>>=2

12.已知:int b(5),下列表達式中,正確的是( D )。

A.b="a" B.++(b1)

C.b%2.5 D.b=3,b+1,b+2

6

13.下列關於類型轉換的'描述中,錯誤的是( C )。

A.類型轉換運算符是(<類型>)

B.類型轉換運算符是單目運算符

C.類型轉換運算符通常用於保值轉換中

D.類型轉換運算符作用於表達式左邊

1.1 判斷題

×1.C++語言和C語言都是面向對象的程序設計語言。

√2.面向對象方法具有封裝性、繼承性和多態性。

√3.C語言是C++語言的一個子集。C++語言繼承了C語言。

×4.C++語言程序與C語言程序一樣都是函數串。

×5.C++語言支持封裝性和繼承性,不支持多態性。

√6.C++語言比C語言對數據類型要求更加嚴格了。

√7.C++語言對C語言進行了一次改進,使得編程更加方便了。

×8.C++源程序在編譯時可能出現錯誤信息,而在連接時不會出現錯誤信息。

√9.編譯C++源程序時,出現了警告錯(Warning)也可以生成可執行文件。

√10.C++語言程序的實現也要經過編輯、編譯連接和運行3個步驟。

通過對1.5題中3個程序的修改,回答下列問題

從1.5題中第1題程序的修改中,總結出編程應該注意哪些問題。

答:C++程序要包含iostraem.h,main()函數前應加類型說明符void。

C++程序中所出現的變數是否必須先說明後使用?在函數體內說明變數時是否都要放在函數體的開頭?

答:C++程序中所出現的變數必須先說明後使用。在函數體內說明變數時不一定要放在函數體的開頭。

使用cout和插入符(<<)輸出字元串常量時應注意什麼?

答:可輸出一個字元串常量,也可輸出多個字元串常量。每輸出一個字元串常量要使用一次插入符(<<)。

程序中定義過的變數,但沒有賦值,也沒有默認值,這時能否使用?

答:不能使用。因為它的值不確定。

5.一個程序編譯通過並已生成執行文件,運行後並獲得輸出結果,這一結果是否一定正確?

答:不一定正確。可能還有演算法錯。

;
熱點內容
outlook郵件的伺服器是什麼 發布:2025-07-15 09:45:59 瀏覽:482
如何安排資產配置 發布:2025-07-15 09:33:24 瀏覽:906
更新傳送伺服器目的地址失敗 發布:2025-07-15 09:27:05 瀏覽:484
c語言else的用法 發布:2025-07-15 09:19:54 瀏覽:119
tnt蘋果核安卓怎麼加好友 發布:2025-07-15 09:05:15 瀏覽:239
年輕人運行內存為什麼比安卓好 發布:2025-07-15 08:52:03 瀏覽:515
怎麼配置組策略 發布:2025-07-15 08:52:02 瀏覽:246
pythonjson格式 發布:2025-07-15 08:42:54 瀏覽:678
醫院葯房要什麼配置 發布:2025-07-15 08:29:55 瀏覽:666
編程說明書 發布:2025-07-15 08:16:39 瀏覽:761