2021-2022年四川省綿陽市全國計算機等級考試C語言程序設計_第1頁
2021-2022年四川省綿陽市全國計算機等級考試C語言程序設計_第2頁
2021-2022年四川省綿陽市全國計算機等級考試C語言程序設計_第3頁
2021-2022年四川省綿陽市全國計算機等級考試C語言程序設計_第4頁
2021-2022年四川省綿陽市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2021-2022年四川省綿陽市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.下面程序的輸出結(jié)果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

3.使用下列二維圖形變換矩陣A=a*T,,其中,a是行向量(xy1),是齊次坐標形式的二維點。給定的變換矩陣T如下所示,則將產(chǎn)生的變換結(jié)果為()A.圖形放大2倍

B.圖形放大2倍,同時沿X、Y坐標軸方向各移動一個單位

C.沿X坐標軸方向各移動2個單位

D.沿X坐標軸放大2倍,同時沿X、Y坐標軸方向各移動一個單位

4.假設所有變量均為整型,則表達式(a=2,b=5,b++,a+b)的值是()。

A.7B.8C.6D.2

5.在n個結(jié)點的順序表中,算法的時間復雜度是O(1)的操作是()。

A.訪問第i個結(jié)點(1<=i<=n)和求第i個結(jié)點的直接前驅(qū)(2<=i<=n)

B.在第i個結(jié)點之后插入一個新結(jié)點(1<=i<=n)

C.刪除第i個結(jié)點(1<=i<=n)

D.將n個結(jié)點從小到大排序

6.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&i,&y,name);當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

7.某二叉樹的前序和后序序列正好相反,則該二叉樹一定是_____的二叉樹

A.空或者只有一個結(jié)點B.高度等于其結(jié)點數(shù)C.任一結(jié)點無左孩子D.任一結(jié)點無右孩子

8.作為信息處理熱點技術(shù)之一的“多媒體技術(shù)”中的媒體,強調(diào)的是()。

A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

9.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的運行結(jié)果是()。A.2B.3C.7D.0

10.下列敘述中正確的是A.break語句只能用于switch語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對使用

D.在switch語句中,不一定使用break語句

11.若有定義“chara,b;”,則執(zhí)行表達式“a=3^2”和“b=~(5|2|0xf0)”后,a和b的十進制值分別是()。A.5和10B.9和14C.6和3D.1和8

12.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

13.

14.下面程序的輸出是()。A.17B.18C.23D.24

15.當用戶要求輸入的字符串中含有空格時,應使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

16.向堆中插入一個元素的時間復雜度為________。

A.O(log2n)B.O(n)C.O(1)D.O(nlog2n)

17.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

18.對n個數(shù)進行排序,哪種算法,其時間復雜度在最壞和最好都是O(nlogn)()

A.快速排序B.希爾排序C.堆排序D.選擇排序

19.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

20.若希望下列的程序運行后輸出25,程序空白處的正確選項是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

primf("%d,j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

二、2.填空題(20題)21.以下程序運行后的輸出結(jié)果是______。

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

22.【】是數(shù)據(jù)庫設計的核心。

23.以下程序運行后的輸出結(jié)果是【】。

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9);

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

24.目前實際存在和使用的廣域網(wǎng)基本上都是采用______拓撲結(jié)構(gòu)類型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0],TotalScore);

}

程序運行后的輸出結(jié)果是【】。

25.在一個容量為25的循環(huán)隊列中,若頭指針front=16,尾指針rear=9,則該循環(huán)隊列中共有上【】個元素。

26.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和【】3種。

27.下列程序段的輸出結(jié)果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

printf("%s\n",B);

}

28.以下程序的功能是求下列算式中A、B、C的值,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,k,t=348;

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

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

for(c=0;【】;c++)

{k=【】;

if(k==t)

printf("A=%dB=%dC=%d\n",a,b,c);

}

}

29.已知head指向一個帶頭結(jié)點的單向鏈表,鏈表中每個結(jié)點包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域為整型。以下函數(shù)求出鏈表中所有鏈結(jié)點數(shù)據(jù)域的和值,作為函數(shù)值返回。請在橫線處填入正確內(nèi)容。

structlink

{intdata;structlink*next;}

main()

{structlink*head;

......

sum(head);

......

}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

30.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

31.設有以下定義和語句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

32.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括五個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、【】和處理過程。

33.若a是int型變量,則下列表達式的值為______。

(a=2*3,a*2),a+4

34.設有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進制是【】。

35.若有以下程序

main()

{chara;

a='H'-'A'+'0';

printf("%c\n",A);

}

執(zhí)行后輸出結(jié)果是【】。

36.下述函數(shù)用于統(tǒng)計一行字符中的單詞個數(shù),單詞之問用空格分隔。

word_num(str)

charstr[];

{inti,num=0,word=0;

fot(i=0;str[i]!=【】;i++)

if【】=='')word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

37.設有以下程序,為使之正確運行,請在下劃線中填入應包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

【】

main()

{printf("\n");

try_me();

printf("\n");}

38.數(shù)據(jù)的基本單位是______。

39.若有定義:inta=10,b=8,c=4;然后順序執(zhí)行下列語句后,變量a中的值是()。c=(b-=(a-4));a=(c%2)+(b-1);

40.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

三、1.選擇題(20題)41.下面程序的輸出是_______。typedefunion{longx[2];inty[4];charz[8];}MYTYPE;MYTYPEthem;main(){printf("%d\n",sizeof(them));}

A.32B.16C.8D.24

42.設有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執(zhí)行以下語句后,z的值為______。z=2*(N+Y(5+1));A.出錯B.42C.48D.54

43.數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進行的運算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲

44.下面不屬于軟件設計原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

45.在設計程序時,應采納的原則之一是______。

A.程序結(jié)構(gòu)應有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好

46.請閱讀以下程序:#include<stdio.h>#include<string.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main(){intk,a[5]={1,3,5,4,9};fun(A);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的輸出是()。

A.13579B.48579C.48549D.48999

47.有如下程序段:inta=14,b=15,x,charc='A';x=(a&&B)&&(c<'B');執(zhí)行該程序段后,x的值為()

A.1B.0C.FALSED.TRUE

48.下列函數(shù)值的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

49.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。

A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作

B.文件打開時,原有文件內(nèi)容不被刪除,只能進行讀操作

C.文件打開時,原有文件內(nèi)容被刪除,只能進行寫操作

D.以上三種說法都不正確

50.軟件需求分析一般應確定的是用戶對軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

51.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復制C.計算字符串的長度D.字符串的連接

52.以下程序調(diào)用findmax函數(shù)返回數(shù)組中的最大值findmax(inE*a,intn){int*p,*s;for(p=a,s=a;p-a<n;p++)if(______)s=p;return(*S);}main(){intx[5]={12,21,13,6,18);printf("%d\n",findmax(x'5));}在下劃線處應填入的是

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

53.有以下程序:mare(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是()。

A.45B.20C.25D.36

54.以下程序段中,能夠通過調(diào)用函數(shù)fun,使main函數(shù)中的指針變量p指向一個合法的整型單元的是

A.main(){int*p;fun(p);┇}intfun(int*p){ints;p=&s;}

B.main(){int*p;fun(&p);┇}intfun(int**p){ints;*p=&s;}

C.#include<stdlib.h>main(){int*p;fun(&p);┇}intfun(int**p){*p=(int*)malloc(2);}

D.#include<stdlib.h>main(){int*P;fun(p);┇}intfun(int*p){p=(int*)malloc(sizeof(int));}

55.設有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

56.已知字母A的ASCII碼為十進制的65,下面程序的輸出結(jié)果是()。main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,"c/n",ch1,Ch2);}

A.67,DB.B,CC.C,DD.不確定的值

57.數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的()。

A.存儲問題B.共享問題C.安全問題D.保護問題

58.若有定義intx,y;并已正確給變量賦值,則下列選項中與表達式(x-y)?(x++):(y++)中的條件表達式(x-y)等價的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

59.下列敘述中,正確的是

A.線性表是線性結(jié)構(gòu)B.棧和隊列是非線性結(jié)構(gòu)C.線性鏈表是非線性結(jié)構(gòu)D.二叉樹是線性結(jié)構(gòu)

60.有以下程序

#include<stdio.h>

main()

{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++)c[s[i]]++;

for(i=1;i<5;i++)printf("%d",c[i]);

printf("\n");

}

程序的運行結(jié)果是

A.1234B.2344C.4332D.1123

四、選擇題(20題)61.

62.

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

A.C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個程序中當對文件進了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)

D.當對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導致數(shù)據(jù)丟失

64.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

65.

66.表達式“~0x11”的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFF1

67.

68.

69.有以下程序:

#includc<stdio.h>

voidfun(int*p)

{printf("%d\n",p[5]);}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10};

fun(&a[3]);

}

程序運行后的輸出結(jié)果是()。

A.5B.6C.8D.9

70.(42)希爾排序法屬于哪一種類型的排序法()

A.交換類排序法

B.插入類排序法

C.選擇類排序法

D.建堆排序法

71.結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括()。

A.順序結(jié)構(gòu)B.選擇(分支)結(jié)構(gòu)C.GOT0跳轉(zhuǎn)D.重復(循環(huán))結(jié)構(gòu)

72.

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

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

74.若有以下定義和語句:

則輸出結(jié)果是()。

A.107B.105C.55D.58

75.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。

A.多態(tài)性B.繼承C.封裝性D.模塊化

76.下面程序的運行結(jié)果是()。

main

{

inty=5,x=14;y=((x=3*y,x+6),x-1);

printf("x=%d,y=%d",x,y);

}

A.x=27,y=27

B.x=12,y=13

C.x=15,y=14

D.x=y=27

77.

78.以下敘述中錯誤的是()。A.可以通過typedef增加新的類型

B.可以用typedef將已存在的類型用一個新的名字來代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedd可以為各種類型起別名,但不能為變量起別名

79.

80.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

五、程序改錯題(1題)81.下列給定程序、中,函數(shù)proc()的功能是:先將字符串s中的字符按順序存放到t中,然后把s中的字符按正序連接到t的后面。例如,當s中的字符串為WXYZ時,則t中的字符串應為WXYZWXYZ。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),它的功能是:把分數(shù)最低的學生數(shù)據(jù)放在h所指的數(shù)組中。注意:分數(shù)低的學生可能不止一個。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.C解析:本題考查的重點是拷貝字符串——使用strcpy()函數(shù),該函數(shù)的調(diào)用方式是:strcpy(字符數(shù)組,字符串)其中“字符串”可以是字符串常量,也可以是字符數(shù)組。函數(shù)的功能是:將“字符串”完整地復制到“字符數(shù)組”中,字符數(shù)組中原有內(nèi)容被覆蓋。

使用該函數(shù)時注意:①字符數(shù)組必須定義得足夠大,以便容納復制過來的字符串。復制時,連同結(jié)束標志‘\\0’一起復制。②不能用賦值運算符“=”將一個字符串直接賦值給一個字符數(shù)組,只能用strcpy()函數(shù)來處理。

另外,本題還考查連接字符串的strcat()函數(shù),其調(diào)用方式是:strcat(字符數(shù)組,字符串)

功能是把“字符串”連接到“字符數(shù)組”中的字符串尾端,并存儲于“字符數(shù)組”中?!白址麛?shù)組”中原來的結(jié)束標志,被“字符串”的第一個字符覆蓋,而“字符串”在操作中未被修改。

使用該函數(shù)時注意:①由于沒有邊界檢查,編程者要注意保證“字符數(shù)組”定義得足夠大,以便容納連接后的目標字符串;否則,會因長度不夠而產(chǎn)生問題。③連接前兩個字符串都有結(jié)束標志‘\\0’,連接后“字符數(shù)組”中存儲的字符串的結(jié)束標志‘\\0’被舍棄,只在目標串的最后保留一個‘\\0’。

3.D

4.B

5.A

6.B變量J只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入整數(shù)都會被保存到浮點型變量Y中。

7.B

8.D媒體分為感覺媒體、表示媒體、存儲媒體、傳輸媒體和表現(xiàn)媒體五種,“多媒體技術(shù)”中的媒體強調(diào)的是感覺媒體。

9.A因為fun(intx)是一個遞歸函數(shù)。在主函數(shù)中fun(7)經(jīng)過3次遞歸調(diào)用。其過程可以描述為fun(7)=7-fun(5)=7-(5*fun(3))=7*(5*(3*fun(1)))=7-(5-(3-3))=7-5=2。最后的輸出結(jié)果為2。故本題答案為A選項。

10.D解析:break語句除了能用于switch語句外,還可以用于循環(huán)語句中,因此選項A不正確。在switch語句中,可以使用default來執(zhí)行所有case均失配時的分支,也可以不使用default,此時若所有case均失配則跳出switch,因此選項B不正確。在switch語句中,每個case的作用就是標出一個執(zhí)行的起點,當符合某個case時,程序就從該case所標出的起點處開始執(zhí)行,若沒有break語句中斷執(zhí)行的話,程序會一直執(zhí)行到switch的最后一條語句,而不是碰到下一個case就跳出switch。雖然break與case的配對使用會讓所有case分支互不重疊條理明確,但不配對使用在C語言中也是允許的。因此選項C不正確,應該選擇D。

11.D是按位異或運算,其功能是參與運算的兩個操作數(shù)中相對應的二進制位上,若數(shù)相同,則運算結(jié)果為0,否則該位的結(jié)果為1;“|”是按位或運算,其功能是參加運算的兩個操作數(shù)中,只要兩個相應的二進制位中有一個為1,那么該位的運算結(jié)果為1,只有當兩個相應位的數(shù)都為0時,該位的運算結(jié)果才為0;“~”是按位取反運算,其功能是將操作數(shù)的二進制位內(nèi)容按位取反。題干中3^2等價于00000011^00000010,結(jié)果為00000001,十進制為1。5|2等價于00000101|00000010,結(jié)果為00000111,再與0xf0按位或運算,等價于00000111|11110000,結(jié)果為11110111,再按位取反:00001000,結(jié)果為8。所以a=1,b=8。故本題答案為D選項。

12.B變量J只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入整數(shù)都會被保存到浮點型變量Y中。

13.B

14.B

15.C解析:C語言提供了許多輸入函數(shù),其中有:getchar(輸入字符)、scanf(格式輸入)和gets\u3000(輸入字符串)等。題目要求輸入的是字符串,所以可以排除getchar,而且要求輸入的字符串中包含空格,而scanf函數(shù)默認將輸入的空格字符作為分割符,所以空格不會被輸入,故可排除scanf。getc的作用是從文件中輸入一個字符,故也不可取。gets函數(shù)可以輸入一整行作為一個字符串,其中也包括空格字符,故應該選擇C。

16.A

17.C解析:解答本題,首先要明白在對指針進行加、減運算的時候,數(shù)字“1”不是十進制的數(shù)“1”,而是指'1'個存儲單元長度,而1個存儲單元長度占多少存儲空間,應該視具體情況而定。如果基本類型是int型,移動1個存儲單元的長度就是位移2個字節(jié),如果基本類型是float型,移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址:300H+(13*上標)4)H=352H。

18.C

19.D

\n全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結(jié)束止。當全局變量定義在后,引用它的函數(shù)在前時,應該在引用它的函數(shù)中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數(shù)末尾。

\n

20.D解析:要想使程序輸出是25,則j-40=25,j=65,而j初值是50,所以填入for循環(huán)中的語句,使引用的數(shù)組元素累加為65-50=15即可。

21.解析:程序通過語句“s[0]next=s+1;s[1].next=s+2;s[2].next=s;”將結(jié)構(gòu)體變量s中各結(jié)點連接成了一個循環(huán)鏈表,即最后一個結(jié)點的指針域指向了頭結(jié)點,整個鏈表形成了一個環(huán),并通過語句“p=s;q=p->next;r=q->next;”將結(jié)構(gòu)體指針變量p、q、r指向了各結(jié)點。

22.數(shù)據(jù)模型數(shù)據(jù)模型

23.123056009123\r\n056\r\n009解析:本題中,定義了一個元素類型為整型的二維數(shù)組a[][3]={1,2,3,4,5,6,7,8,9},它是一個3*3的矩陣,“for(i=0;i<3;i++)for(j=i=1;j<3;j++)a[j][i]=0;”將列下標i小于行下標j的元素a[1][0]、a[2][0]、a[2][1]賦值為0,最后“for(j=0;j<3;j++)printf('%n',a[i][j]);printf('\\n');”進行換行輸出,所以輸出結(jié)果為:

123

056

009

24.2004170320041703解析:由于參數(shù)傳遞只是將實參的值復制到形參中,形參與實參擁有各自的存儲空間,因此形參的改變并不影響實參,所以并不改變s的情況。

25.1818解析:設循環(huán)隊列的容量為n。若rear>front,則循環(huán)隊列中的元素個數(shù)為rear-front;若rear<front,則循環(huán)隊列中的元素個數(shù)為n+(rear-from)。題中,front=16,rear=9,即rear>front,所以,循環(huán)隊列中的元素個數(shù)為m+(rear-front)=25+(9-16)=18。

26.關(guān)系模型關(guān)系模型解析:數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層系統(tǒng)管理軟件,是一種系統(tǒng)軟件,是用戶與數(shù)據(jù)庫之間的一個標準接口。其總是基于某種數(shù)據(jù)模型,可以分為層次模型、網(wǎng)狀模型和關(guān)系模型。

27.HelloHello解析:字符串中,數(shù)值0或符號'/0'表示字符串的結(jié)束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結(jié)束標志。因此,只輸出前五個字符,即Hello。

28.c<10或c<=9(a*100+b*10+c)+(a*100+b*10+a)c<10或c<=9\r\n(a*100+b*10+c)+(a*100+b*10+a)解析:本題使用窮舉法,用一個3重循環(huán)窮舉A、B、C可以組合成的所有三位數(shù),對每種情況來判斷是否滿足題目要求,滿足則輸出3個值。因為A、B、C分別代表一位數(shù),所以C的取值范圍是0~9,故第一空應該填c<10或c<=9。根據(jù)下面輸出的判斷條件k==t可知,k應該為每種情況下ABC+ABA的值,故應該填寫(a*100+b*10+c)+(a*100+b*10+a)或者其他等價表達式。

29.structlink*headstructlink*head解析:考查用指針引用結(jié)構(gòu)體變量成員數(shù)據(jù)的方法。因為本題中是用結(jié)構(gòu)體變量構(gòu)成了鏈表,所以要從鏈表頭節(jié)點,逐個節(jié)點的引用結(jié)構(gòu)體的數(shù)據(jù)域,需要有指向結(jié)構(gòu)體變量的指針,依次指向各個節(jié)點,即p=p->next,而用指針引用結(jié)構(gòu)體成員數(shù)據(jù)的方法為:p->data。

30.yesyes解析:程序if語句中是賦值表達式,而不是相等“==”運算。因為c=a+b中a+b的值為4,賦給c,c=4,表達式為真,輸出yes。

31.6060解析:程序中定義a是一個3行2列的二維數(shù)組,p是指向兩個元素的一維數(shù)組指針,并讓p指向二維數(shù)組a的首行。則代碼*(*(p+2)+1)中的p+2指向二維數(shù)組a的第三行a[2],*(p+2)指向a[2[]0],*(p+2)+1指向a[2][1],*(*(p+2)+1)是引用a[2][1],其值是60。

32.數(shù)據(jù)存儲數(shù)據(jù)存儲

33.1010解析:此題考查逗號表達式。逗號表達式的值是最后一個表達式的值,所以本題的返回值是a+4。前面已經(jīng)給a賦值6,所以追回值a+4=6+4=10。

34.1000001010000010解析:運算“&”的規(guī)則是只有當兩個相應的二進制位都為1時,該位的結(jié)果才為1。要保留第2、8位,只要將其與二進制數(shù)10000010相與。

35.77解析:字符型數(shù)據(jù)可作為整型參加算術(shù)運算,其值為其對應的ASCII碼。'H'-'A',的結(jié)果是7,加'0'后是'7'的ASCII碼,所以輸出的是字符'7'。

36.\0'或0或NULLstr[i]num++或num=num+1或num+=1\\0'或0或NULL\r\nstr[i]\r\nnum++或num=num+1或num+=1解析:觀察題目要求,可以知道以下幾點:①for循環(huán)的結(jié)束條件應當是:str[i]已是字符串的最后一個字符;②str[i]代表字符串str中的第i+1個字符;③整型變量num的值是要記錄的單詞的個數(shù)。C語言中規(guī)定字符串的最后一個字符是一個隱含的字符串結(jié)束符“\\0”,所以在題中第一個空中應填寫“\\0”;題中第二個空應填寫“str[i]”,以判斷當前位置的字符是否為空格;題中第三個空中應當填寫“num++”,通過變量num的加1累加得到字符串中的單詞個數(shù)。

37.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數(shù)的存儲分類的概念。如果沒有特別說明,函數(shù)的存儲范圍是從定義函數(shù)的位置到文件的結(jié)尾,如果其他文件想使用這個函數(shù),需要用#include文件包含命令將定義函數(shù)的文件包含進來。

38.數(shù)據(jù)元素。數(shù)據(jù)元素。

39.22解析:本題考查的是基本賦值運算符和賦值表達式。表達式c=(b-=a-4)等價于c=(b=b-a+4)等價于c=b=2;表達式a(c%2+(b-1))等價于a=1+2-1=2;因此最后a的值為2。

40.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。

41.C解析:sizeof(x)是一個標準C函數(shù),它的返回值是x型的數(shù)據(jù)結(jié)構(gòu)占用的內(nèi)存字節(jié)數(shù),題目中定義了一個共用體,共用體變量在內(nèi)存中所占的長度等于最長的成員的長度。

42.D

43.A解析:數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學科,主要研究和討論以下三個方面的問題:①數(shù)據(jù)集合中各數(shù)據(jù)元素之間所固有的邏輯關(guān)系,即數(shù)據(jù)的邏輯結(jié)構(gòu);②在對數(shù)據(jù)進行處理時,各數(shù)據(jù)元素在計算機中的存儲關(guān)系,即數(shù)據(jù)的存儲結(jié)構(gòu);③對各種數(shù)據(jù)結(jié)構(gòu)進行的運算。

44.C解析:軟件設計遵循軟件工程的基本目標和原則,建立了適用于在軟件設計中應該遵循的基本原理和與軟件設計有關(guān)的概念。①抽象是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細節(jié)。②模塊是指可以單獨命名且可編址的元素。如高級語言中的過程、函數(shù)、子程序等。③信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。

45.A解析:程序設計的風格主要強調(diào)程序的簡單、清晰和可理解性,以便讀者理解。因此選項A是正確答案。程序濫用goto語句將使程序流程無規(guī)律,可讀性差;添加的注解行有利于對程序的理解,不應減少或取消;程序的長短要依照實際需要而定,并不是越短越好。因此選項B、C、D都是錯誤的。

46.C

47.A解析:a=14,b=15,第一個&&兩側(cè)均為非零值。c='A',表達式c<'B'的值為真即1,第二個&&兩側(cè)也均為非零值。表達式(a&&b)&&(c<'B')的值為1,賦值給變量x。

48.A解析:本題考查默認函數(shù)的函數(shù)值的類型。在函數(shù)調(diào)用時,盡管y的類型是float,x的類型是double,但是因為函數(shù)定義時省去類型說明,系統(tǒng)默認函數(shù)值的類型為int型,所以計算后的y的類型是int型。

49.A解析:本題考查文件使用方式標識符,以“a+”方式打開一個已存在的文件,則表示保留文件中原有的數(shù)據(jù),文件的位置指針在文件末尾,此時,可以進行追加或讀操作。

50.DD?!窘馕觥寇浖枨蠓治鲋行枰獦?gòu)造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,使用戶明確自己的任務。因此,需求分析應確定用戶對軟件的功能需求和非功能需求。

51.C

52.B解析:在main()函數(shù)中定義了一個具有5個元素的x數(shù)組并賦初值,然后調(diào)用findmax()函數(shù)求數(shù)組中元素的最大值。調(diào)用時把數(shù)組元素x的首地址,傳給了形參指針變量a,把5傳給形參n。在函數(shù)findmax()中定義了兩種指針變量p和s,其中s用來記錄最大元素的地址,p作為循環(huán)控制變量,表示每個元素的地址.求最大值的算法是先將第一個元素(用s記下它的地址)做為最大值,然后用最大值(*s)與后面的每個元素比較(*p),若后面的元素大,則用s記下它的地址,所以下劃線應填“*s<*p*或“*P>*s”。所以,4個選項中B為所選。

53.C解析:要獲得數(shù)組t的第i個元素的內(nèi)容,既可以使用常規(guī)的t[i]表達式,也可以將數(shù)組名t看作一個指針常量,使用表達式*(t+i)來獲取數(shù)組t的第i個元素的內(nèi)容。在本題中,for循環(huán)會循環(huán)5次,循環(huán)變量i從。開始,每次加2。所以,循環(huán)結(jié)束后,s中的值為t[0]+t[2]+t[4]+t[6]+t[6]+t[8]=1+3+5+7+9=25。故應該選擇C。

54.C解析:在選項A中,main()函數(shù)中定義了一個指針變量P,調(diào)用fun()函數(shù)時把p傳給形參P,在函數(shù)中讓p指向局部變量s,由于函數(shù)調(diào)用返回后,局部變量s將被釋放,因此無法實現(xiàn)讓實參p指向一個整型單元。選項B中實現(xiàn)的也是讓實參p指向一個在函數(shù)fun()定義的局部變量s;選項C在函數(shù)fun()中分配了兩個字節(jié)的內(nèi)存單元并把首地址賦值給形參p指向的變量,即main()函數(shù)的指針變量p中,由于整型變量占兩個字節(jié);選項D在主函數(shù)中定義了一個指針地址變量p,并把指針變量的值傳給形參變量p,在fun()函數(shù)分配了一個整型單元并把首地址賦值給形參指針變量P,由于C語言中變量作為參數(shù)是傳值的,所以并沒有改變對應實參指針變量的值。

55.C解析:data是—結(jié)構(gòu)體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構(gòu)體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達式中右邊為一個結(jié)構(gòu)體變量的成員不是地址,而左邊為一指針應該將一地址賦給它,故選項B不正確;選項D表達式*p=data.a是將結(jié)構(gòu)體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確:4個選項中只有C正確。

56.A解析:輸出函數(shù)中的格式控制符要求ch1按帶符號的十進制形式輸出,'A'+'5'-'3';=65+5—3=67,所以輸出變量ch值的ASCII碼的十進制表示。格式控制符要求變量ch2按字符形式輸出,'A'+'6'-'3'=65+6-3=68,字母D的ASCII碼的十進制表示為68,所以輸出D。

57.B解析:數(shù)據(jù)庫產(chǎn)生的背景就是計算機的應用范圍越來越廣泛,數(shù)據(jù)量急劇增加,對數(shù)據(jù)共享的要求越來越高。共享的含義是多個用戶、多種語言、多個應用程序相互覆蓋的使用一些公用的數(shù)據(jù)集合。在這樣的背景下,為了滿足多用戶、多應用共,享數(shù)據(jù)的要求,就出現(xiàn)了數(shù)據(jù)庫技術(shù),以便對數(shù)據(jù)庫進行管理。因此,數(shù)據(jù)庫技術(shù)的根本目標就是解決數(shù)據(jù)的共享問題。故選項B正確。

58.C

59.A解析:所謂的線性結(jié)構(gòu)是指:如果一個非空的數(shù)據(jù)結(jié)構(gòu)滿足下列兩個條件:

1)有且只有一個根結(jié)點;

2)每一個結(jié)點最多有一個前件,也最多有一個后件。所以同時滿足兩個條件的有隊列、線性表、棧,而二叉樹的結(jié)點可能存在兩個后件,不是線性結(jié)構(gòu)。

60.C解析:在for(i=0;i<12;i++)c[s[i]]++中,數(shù)組元素s[i]的值作為數(shù)組c的下標,當退出循環(huán)時,數(shù)組c的4個元素的值分別為4、3、3、2。

61.D

62.B

63.D在C語言中,文件的存取方式有兩種:順序存取和直接存取。如果以“a”的方式對已打開的文件進行寫操作后,則原文件中內(nèi)容將保存,新的數(shù)據(jù)寫在原有內(nèi)容之后。如果以“a+”的方式勾讀和寫操作而打開文件,則可以對文件進行讀寫,而且在讀和寫操作之間不必關(guān)閉文件,可以從頭開始讀。當對文件的讀(寫)操作完成之后,必須將它關(guān)閉。

64.B本題考查按位異或的用法。按位異或運算的規(guī)則是:兩個運算數(shù)的相應二進制位相同,則結(jié)果為0,相異則結(jié)果為1。b=2的二進制為00000010,a=1的二進制為00000001,a=a^b=00000011,轉(zhuǎn)化為十進制后為3,b=b^a=00000010-00000011=00000001,即1。

65.B

66.A本題主要考查按位求反運算:十六進制整型常量的形式是以數(shù)字Ox開頭的十六進制字符串;位求反運算的規(guī)則是:將二進制表示的運算對象按位取反,即將1變0,將0變1。

67.D

68.B

69.B\n由題可知,fun(&a[3])是將&a[3]作為參數(shù),而fun(int*p)后執(zhí)行的語句為p[5],由數(shù)組a可知輸出的為6。

\n

70.B

71.C1966年,Boehm和Jacopini證明了程序設計語言僅僅使用順序、選擇和重復(循環(huán))三種基本控制結(jié)構(gòu)就足以表達出各種其他形式的結(jié)構(gòu)化程序設計方法,因此本題答案為C)。

72.D

73.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設置break語句,滿足某種條件,則跳出本層循環(huán)體。

74.Cstrlen函數(shù)返回字符串的長度,求字符串1長度時,遇到結(jié)束標志‘、0’為止,但是長度不包括結(jié)束標識。f字符數(shù)組sl的后5個元素沒有賦值,都為‘\0’,即“abcd!”后為‘\0’。所以sMen(s1)的值為5。字符指針s2所指向的字符串中,、n為轉(zhuǎn)義字符換行符,表示1個字符,\、也為轉(zhuǎn)義字符,代表\,也是l個字符,其后為字符串結(jié)束標識‘0’;所以strlen(s2)的值也為5。因此C選項正確。

75.DD?!窘馕觥棵嫦?qū)ο笤O計方法與面向過程設計方法有本質(zhì)的不同,其基本原理是:使用現(xiàn)實世界的概念抽象地思考問題從而自然地解決問題。其特點包括:分類性、多態(tài)性、封裝性、模塊獨立性、繼承和多態(tài)性等。模塊化是結(jié)構(gòu)化程序設計的特點。

76.C本題考查的是逗號表達式。逗號表達式的求解步驟是先求解表達式1,然后依次求解表達式2,直到表達式N的值。整個逗號表達式的值就是最后一個表達式N的值。表達式(x=3*y,x+6)中,x=15。表達式y(tǒng)=x—1=14。

77.A

78.Atypede偽原類型起個別名,并沒有增加新的類型,所以答案選擇A)。

79.A

80.B本題考查指針函數(shù)。其定義的基本格式為:類型說明符(*函數(shù)名)?!邦愋驼f明符”表示返回的指針值指向的數(shù)據(jù)類型。

81.錯誤:t[i]=s[s1];

正確:t[i]=s[i];

【解析】函數(shù)proc()首先要實現(xiàn)將數(shù)組s中的元素順序放在數(shù)組t中,即數(shù)組t中下標為i的元素在數(shù)組S中下標也為i,因此“t[i]=s[s1];”應改為“t[i]=s[i];”。

82.

【解析】要返回分數(shù)最低的學生個數(shù),首先要找出學生中的最低分數(shù)。然后將各個學生的成績與最低分數(shù)相比較,最后將分數(shù)最低的學生個數(shù)返回給主函數(shù)。

2021-2022年四川省綿陽市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.下面程序的輸出結(jié)果是#include<stdio.h>#include<string.h>main(){char*p1="abc",*p2="ABC",str[50]="xyz";strcpy(str+2,strcat(p1,p2));printf("%s\n",str);}

A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC

3.使用下列二維圖形變換矩陣A=a*T,,其中,a是行向量(xy1),是齊次坐標形式的二維點。給定的變換矩陣T如下所示,則將產(chǎn)生的變換結(jié)果為()A.圖形放大2倍

B.圖形放大2倍,同時沿X、Y坐標軸方向各移動一個單位

C.沿X坐標軸方向各移動2個單位

D.沿X坐標軸放大2倍,同時沿X、Y坐標軸方向各移動一個單位

4.假設所有變量均為整型,則表達式(a=2,b=5,b++,a+b)的值是()。

A.7B.8C.6D.2

5.在n個結(jié)點的順序表中,算法的時間復雜度是O(1)的操作是()。

A.訪問第i個結(jié)點(1<=i<=n)和求第i個結(jié)點的直接前驅(qū)(2<=i<=n)

B.在第i個結(jié)點之后插入一個新結(jié)點(1<=i<=n)

C.刪除第i個結(jié)點(1<=i<=n)

D.將n個結(jié)點從小到大排序

6.有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&i,&y,name);當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

7.某二叉樹的前序和后序序列正好相反,則該二叉樹一定是_____的二叉樹

A.空或者只有一個結(jié)點B.高度等于其結(jié)點數(shù)C.任一結(jié)點無左孩子D.任一結(jié)點無右孩子

8.作為信息處理熱點技術(shù)之一的“多媒體技術(shù)”中的媒體,強調(diào)的是()。

A.存儲媒體B.表現(xiàn)媒體C.傳輸媒體D.感覺媒體

9.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的運行結(jié)果是()。A.2B.3C.7D.0

10.下列敘述中正確的是A.break語句只能用于switch語句

B.在switch語句中必須使用default

C.break語句必須與switch語句中的case配對使用

D.在switch語句中,不一定使用break語句

11.若有定義“chara,b;”,則執(zhí)行表達式“a=3^2”和“b=~(5|2|0xf0)”后,a和b的十進制值分別是()。A.5和10B.9和14C.6和3D.1和8

12.有以下程序段intj;floaty;charname[50]:scanf("%2d%f%s",&i,&.y,name):當執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為()。A.55566.0B.566.0C.7777.0D.566777.0

13.

14.下面程序的輸出是()。A.17B.18C.23D.24

15.當用戶要求輸入的字符串中含有空格時,應使用的輸入函數(shù)是()。

A.scanfB.getcharC.getsD.getc

16.向堆中插入一個元素的時間復雜度為________。

A.O(log2n)B.O(n)C.O(1)D.O(nlog2n)

17.若有定義floata[15],*p=a;,且數(shù)組a的首地址為300H,則p+13所指向的數(shù)組元素的地址為()。

A.334HB.30DHC.352HD.31AH

18.對n個數(shù)進行排序,哪種算法,其時間復雜度在最壞和最好都是O(nlogn)()

A.快速排序B.希爾排序C.堆排序D.選擇排序

19.在一個C語言源程序文件中所定義的全局變量,其作用域為()。

A.所在文件的全部范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.由具體定義位置和extern說明來決定范圍

20.若希望下列的程序運行后輸出25,程序空白處的正確選項是()。

main()

{inti,j=50,a[]={7,4,10,5,8};

for()

j+=a[i];

primf("%d,j-40);

}

A.i=1;i<4;++iB.i=1;i<3;++iC.i=4;i>2;i--D.i=2;i<4;++i

二、2.填空題(20題)21.以下程序運行后的輸出結(jié)果是______。

structNODE

{inthum;structNODE*next;

};

main()

{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;

intsum=0;

s[0].next=s+1;s[1].next=s+2;s[2].next=s;

p=S;q=p->next;r=q->next;

sum+=q=>next->num;sum+=r->next->next->num;

22.【】是數(shù)據(jù)庫設計的核心。

23.以下程序運行后的輸出結(jié)果是【】。

main()

{inti,j,a[][3]={1,2,3,4,5,6,7,8,9);

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

{for(j=0;j<3;j++)printf("%d",a[i][j]);

printf("\n");

}

}

24.目前實際存在和使用的廣域網(wǎng)基本上都是采用______拓撲結(jié)構(gòu)類型。

有以下程序:

#include<string.h>

structSTU

{intnum;

floatTotalScore;};

voidf(structSTUp)

{structSTUs[2]={{20041,703},{20045,537}};

p.num=s[1].num;p.TotalScore=s[1].TotalScore;

}

main()

{structSTUs[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d%3.0f\n",s[0].num,s[0],TotalScore);

}

程序運行后的輸出結(jié)果是【】。

25.在一個容量為25的循環(huán)隊列中,若頭指針front=16,尾指針rear=9,則該循環(huán)隊列中共有上【】個元素。

26.數(shù)據(jù)庫管理系統(tǒng)常見的數(shù)據(jù)模型有層次模型、網(wǎng)狀模型和【】3種。

27.下列程序段的輸出結(jié)果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

printf("%s\n",B);

}

28.以下程序的功能是求下列算式中A、B、C的值,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,k,t=348;

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

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

for(c=0;【】;c++)

{k=【】;

if(k==t)

printf("A=%dB=%dC=%d\n",a,b,c);

}

}

29.已知head指向一個帶頭結(jié)點的單向鏈表,鏈表中每個結(jié)點包含數(shù)據(jù)域(data)和指針域(next),數(shù)據(jù)域為整型。以下函數(shù)求出鏈表中所有鏈結(jié)點數(shù)據(jù)域的和值,作為函數(shù)值返回。請在橫線處填入正確內(nèi)容。

structlink

{intdata;structlink*next;}

main()

{structlink*head;

......

sum(head);

......

}

sum(【】);

{structlink*p;ints=0;

p=head->next;

while(p){s+=p->data;p=p->next;}

return(s);}

30.以下程序運行后的輸出結(jié)果是【】。

#include<stdio.h>

main()

{inta=1,b=3,c=5;

if(c=a+b)printf("yes\n");

elseprintf("no\n");

}

31.設有以下定義和語句,則*(*(p+2)+1)的值為【】。

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

32.數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它通常包括五個部分,即數(shù)據(jù)項、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、【】和處理過程。

33.若a是int型變量,則下列表達式的值為______。

(a=2*3,a*2),a+4

34.設有chara,b;,若要通過a&b運算屏蔽掉a中的其他位,只保留第2位和第8位(右起為第1位),則b的二進制是【】。

35.若有以下程序

main()

{chara;

a='H'-'A'+'0';

printf("%c\n",A);

}

執(zhí)行后輸出結(jié)果是【】。

36.下述函數(shù)用于統(tǒng)計一行字符中的單詞個數(shù),單詞之問用空格分隔。

word_num(str)

charstr[];

{inti,num=0,word=0;

fot(i=0;str[i]!=【】;i++)

if【】=='')word=0;

elseif(word==0)

{

word=1;

【】;

}

return(num);

}

37.設有以下程序,為使之正確運行,請在下劃線中填入應包含的命令行。(注:try_me()函數(shù)在a:\myfile.txt中有定義。)

【】

main()

{printf("\n");

try_me();

printf("\n");}

38.數(shù)據(jù)的基本單位是______。

39.若有定義:inta=10,b=8,c=4;然后順序執(zhí)行下列語句后,變量a中的值是()。c=(b-=(a-4));a=(c%2)+(b-1);

40.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

三、1.選擇題(20題)41.下面程序的輸出是_______。typedefunion{longx[2];inty[4];charz[8];}MYTYPE;MYTYPEthem;main(){printf("%d\n",sizeof(them));}

A.32B.16C.8D.24

42.設有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執(zhí)行以下語句后,z的值為______。z=2*(N+Y(5+1));A.出錯B.42C.48D.54

43.數(shù)據(jù)結(jié)構(gòu)作為計算機的一門學科,主要研究數(shù)據(jù)的邏輯結(jié)構(gòu)、對各種數(shù)據(jù)結(jié)構(gòu)進行的運算,以及()。A.A.數(shù)據(jù)的存儲結(jié)構(gòu)B.計算方法C.數(shù)據(jù)映象D.邏輯存儲

44.下面不屬于軟件設計原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

45.在設計程序時,應采納的原則之一是______。

A.程序結(jié)構(gòu)應有助于讀者理解B.不限制goto語句的使用C.減少或取消注解行D.程序越短越好

46.請閱讀以下程序:#include<stdio.h>#include<string.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main(){intk,a[5]={1,3,5,4,9};fun(A);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的輸出是()。

A.13579B.48579C.48549D.48999

47.有如下程序段:inta=14,b=15,x,charc='A';x=(a&&B)&&(c<'B');執(zhí)行該程序段后,x的值為()

A.1B.0C.FALSED.TRUE

48.下列函數(shù)值的類型是()。fun(doublex){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

49.若以“a+”方式打開一個已存在的文件,則下列敘述正確的是()。

A.文件打開時,原有文件內(nèi)容不被刪除,位置指針移到文件末尾,可以進行添加或讀操作

B.文件打開時,原有文件內(nèi)容不被刪除,只能進行讀操作

C.文件打開時,原有文件內(nèi)容被刪除,只能進行寫操作

D.以上三種說法都不正確

50.軟件需求分析一般應確定的是用戶對軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

51.以下函數(shù)的功能是()intfun(char*A){char*b=a;while(*B)b++;{returnb-a;}}

A.比較兩個字符串的大小B.字符串的復制C.計算字符串的長度D.字符串的連接

52.以下程序調(diào)用findmax函數(shù)返回數(shù)組中的最大值findmax(inE*a,intn){int*p,*s;for(p=a,s=a;p-a<n;p++)if(______)s=p;return(*S);}main(){intx[5]={12,21,13,6,18);printf("%d\n",findmax(x'5));}在下劃線處應填入的是

A.p>sB.*p>*sC.a[p]>a[s]D.p-a>p-s

53.有以下程序:mare(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是()。

A.45B.20C.25D.36

54.以下程序段中,能夠通過調(diào)用函數(shù)fun,使main函數(shù)中的指針變量p指向一個合法的整型單元的是

A.main(){int*p;fun(p);┇}intfun(int*p){ints;p=&s;}

B.main(){int*p;fun(&p);┇}intfun(int**p){ints;*p=&s;}

C.#include<stdlib.h>main(){int*p;fun(&p);┇}intfun(int**p){*p=(int*)malloc(2);}

D.#include<stdlib.h>main(){int*P;fun(p);┇}intfun(int*p){p=(int*)malloc(sizeof(int));}

55.設有如下定義:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正確的賦值語句是()

A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;

56.已知字母A的ASCII碼為十進制的65,下面程序的輸出結(jié)果是()。main(){charch1,ch2;ch1='A'+'5'-'3';ch2='A'+'6'-'3';printf("%d,"c/n",ch1,Ch2);}

A.67,DB.B,CC.C,DD.不確定的值

57.數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的()。

A.存儲問題B.共享問題C.安全問題D.保護問題

58.若有定義intx,y;并已正確給變量賦值,則下列選項中與表達式(x-y)?(x++):(y++)中的條件表達式(x-y)等價的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

59.下列敘述中,正確的是

A.線性表是線性結(jié)構(gòu)B.棧和隊列是非線性結(jié)構(gòu)C.線性鏈表是非線性結(jié)構(gòu)D.二叉樹是線性結(jié)構(gòu)

60.有以下程序

#include<stdio.h>

main()

{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;

for(i=0;i<12;i++)c[s[i]]++;

for(i=1;i<5;i++)printf("%d",c[i]);

printf("\n");

}

程序的運行結(jié)果是

A.1234B.2344C.4332D.1123

四、選擇題(20題)61.

62.

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

A.C語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

B.打開一個已存在的文件并進行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個程序中當對文件進了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)

D.當對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導致數(shù)據(jù)丟失

64.若有以下程序:inta=1,b=2:a=a^b:b=b^a:則執(zhí)行以上語句后a和b的值分別是()。

A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2.b=1

65.

66.表達式“~0x11”的值是()。

A.0xFFEEB.0x71C.0x0071D.0xFFF1

67.

68.

69.有以下程序:

#includc<stdio.h>

voidfun(int*p)

{printf("%d\n",p[5]);}

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10};

fun(&a[3]);

}

程序運行后的輸出結(jié)果是()。

A.5B.6C.8D.9

70.(42)希爾排序法屬于哪一種類型的排序法()

A.交換類排序法

B.插入類排序法

C.選擇類排序法

D.建堆排序法

71.結(jié)構(gòu)化程序所要求的基本結(jié)構(gòu)不包括()。

A.順序結(jié)構(gòu)B.選擇(分支)結(jié)構(gòu)C.GOT0跳轉(zhuǎn)D.重復(循環(huán))結(jié)構(gòu)

72.

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

A.break語句只能用于switch語句體中

B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

74.若有以下定義和語句:

則輸出結(jié)果是()。

A.107B.105C.55D.58

75.下列特征中不是面向?qū)ο蠓椒ǖ闹饕卣鞯氖?)。

A.多態(tài)性B.繼承C.封裝性D.模塊化

76.下面程序的運行結(jié)果是()。

main

{

inty=5,x=14;y=((x=3*y,x+6),x-1);

printf("x=%d,y=%d",x,y);

}

A.x=27,y=27

B.x=12,y=13

C.x=15,y=14

D.x=y=27

77.

78.以下敘述中錯誤的是()。A.可以通過typedef增加新的類型

B.可以用typedef將已存在的類型用一個新的名字來代表

C.用typedef定義新的類型名后,原有類型名仍有效

D.用typedd可以為各種類型起別名,但不能為變量起別名

79.

80.在下列語句中,其含義為“q是一個函數(shù)指針,該指針指向整型數(shù)據(jù)”的定義語句是()。

A.int**q;B.int(*q);C.int*q;D.int*q;

五、程序改錯題(1題)81.下列給定程序、中,函數(shù)proc()的功能是:先將字符串s中的字符按順序存放到t中,然后把s中的字符按正序連接到t的后面。例如,當s中的字符串為WXYZ時,則t中的字符串應為WXYZWXYZ。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),它的功能是:把分數(shù)最低的學生數(shù)據(jù)放在h所指的數(shù)組中。注意:分數(shù)低的學生可能不止一個。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.C解析:本題考查的重點是拷貝字符串——使用strcpy()函數(shù),該函數(shù)的調(diào)用方式是:strcpy(字符數(shù)組,字符串)其中“字符串”可以是字符串常量,也可以是字符數(shù)組。函數(shù)的功能是:將“字符串”完整地復制到“字符數(shù)組”中,字符數(shù)組中原有內(nèi)容被覆蓋。

使用該函數(shù)時注意:①字符數(shù)組必須定義得足夠大,以便容納復制過來的字符串。復制時,連同結(jié)束標志‘\\0’一起復制。②不能用賦值運算符“=”將一個字符串直接賦值給一個字符數(shù)組,只能用strcpy()函數(shù)來處理。

另外,本題還考查連接字符串的strcat()函數(shù),其調(diào)用方式是:strcat(字符數(shù)組,字符串)

功能是把“字符串”連接到“字符數(shù)組”中的字符串尾端,并存儲于“字符數(shù)組”中。“字符數(shù)組”中原來的結(jié)束標志,被“字符串”的第一個字符覆蓋,而“字符串”在操作中未被修改。

使用該函數(shù)時注意:①由于沒有邊界檢查,編程者要注意保證“字符數(shù)組”定義得足夠大,以便容納連接后

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論