2022年山東省菏澤市全國計算機等級考試C語言程序設計_第1頁
2022年山東省菏澤市全國計算機等級考試C語言程序設計_第2頁
2022年山東省菏澤市全國計算機等級考試C語言程序設計_第3頁
2022年山東省菏澤市全國計算機等級考試C語言程序設計_第4頁
2022年山東省菏澤市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2022年山東省菏澤市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達式x+a%3*(int)(x+y)%2/4的值是()。

A.2.4B.2.5C.2.75D.0

3.

4.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

5.以下程序的輸出結果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}

A.258B.741C.852D.369

6.假設整型數(shù)i的地址為0x12345678,指針ip地址為0x21850043,則執(zhí)行以下后,k的值為()。A.0x12345678B.0x21850043C.100D.不確定

7.若有定義:inta,h;通過語句:scanf(”%d;%d”,&a,&B.;,能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是()。

A.35B.3,5C.3;5D.35

8.若有定義intx,y;并已正確給變量賦值,則以下選項中與表達式(x一y)(x++):(y++)中的條件表達式(x-y)等價的是()A.(x-y<0|x-y>0)B.x-y<0).C.(x-y>0)D.(x-y==)

9.以下關于結構化程序設計的敘述中正確的是()。

A.結構化程序使用goto語句會很便捷

B.在c語言中,程序的模塊化是利用函數(shù)實現(xiàn)的

C.一個結構化程序必須同時由順序、分支、循環(huán)三種結構組成

D.由三種基本結構構成的程序只能解決小規(guī)模的問題

10.下列關于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

11.第

42

若有說明語句

chara[]="Itismine";

char*p="Itismine";

則以下不正確的敘述是

A.a+1表示的是字符t的地址

B.p指向另外的字符串時,字符串的長度不受限制

C.p變量中存放的地址值可以改變

D.a中只能存放10個字符

12.以下程序輸出的結果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX");char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

13.設散列表長m=14,散列函數(shù)H(K)=K%11,已知表中已有4個結點:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關鍵字為49的結點地址是_____。

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

14.有以下程序:#include<stdio.h>main(){intx=1,y=2,z=3;if(x>y)if(y<z) printf(“%d”,++z);else printf(“%d”,++y);printf(“%d\n”,x++);}程序的運行結果是()。

A.1B.41C.2D.331

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

A.用C語言編寫的程序只能放在一個程序文件中

B.C語言程序書寫格式嚴格,要求一行內只能寫一個語句

C.C語言程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面

D.C語言程序書寫格式自由,一個語句可以寫在多行上

16.設有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則

A.運行程序段后輸出0B.運行程序段后輸出1C.程序段中的控制表達式是非法的D.程序段執(zhí)行無限次

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

A.C語句必須以分號結束

B.復合語句在語法上被看作一條語句

C.空語句出現(xiàn)在任何位置都不會影響程序運行

D.賦值表達式末尾加分號就構成賦值語句

18.將數(shù)組a[0,1,…,m-1]作為循環(huán)隊列SQ的存儲空間,f為隊頭指示,r為隊尾指示,則執(zhí)行出隊操作的語句為()A.f=f+1B.f=(f+1)%mC.r=(r+1)%mD.f=(f+1)%(m+1)

19.定義int*swap()指的是______。

A.一個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函數(shù)swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

20.設有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則下列賦值語句中錯誤的是()。

A.data2=(2,6);

B.data2=data1;

C.data2.real=data1.real;

D.data2.real=data1.unreal;

二、2.填空題(20題)21.若有如下程序:

main()

{ints=8,a=3,b=5,c=6;

if(a>b)s=a;a=b;b=s;

if(a>c){s=a;a=c;b=s);

if(b>c)s=b;b=c;c=s;

printf("%d,%d,%d\n",a,b,c);

}

則程序運行后的輸出結果是【】。

22.數(shù)據(jù)庫管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。

23.在一個容量為32的循環(huán)隊列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊列中共有______個元素。

24.數(shù)據(jù)流圖的類型有【】和事務型。

25.下列程序的運行結果是______。

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

{staticinta[4]={1,2,3,4};

inti;

for(i=0;i<4;i++)a[i]+=a[i];

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

printf"\n");

}

26.在最壞情況下,冒泡排序的時間復雜度為【】。

27.數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

28.C語言程序的注釋可以出現(xiàn)在程序中的任何地方,一個注釋以【】分別作為開始和結束。

29.在樹形結構中,樹根結點沒有______。

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

31.strcat函數(shù)的作用是【】。

32.在面向對象方法中,屬性與操作相似的一組對象稱為【】。

33.性結構中,第一個結點沒有前驅結點,其余每個結點有且只有【】個前驅結點;最后一個結點沒有后繼結點,其余每個結點有且只有【】個后繼結點。

34.為了便于對照檢查,測試用例應由輸入數(shù)據(jù)和預期的【】兩部分組成。

35.若有程序

main()

{inti,j;

scanf("i=%d,j=%d",&i,&j);

printf("i=%d,j-%d\n",i,j);

}

要求給i賦10,給j賦20,則應該從鍵盤輸入______。

36.按"先進后出"原則組織數(shù)據(jù)的數(shù)據(jù)結構是【】。

37.以下程序運行后的輸出結果是【】。

main()

{intm=011,n=11;

printf("%d%d\n",++m,n++);

}

38.在對文件操作的過程中,若要求文件的位置指針回到文件的開始處,應當調用的函數(shù)是【】。

39.用樹型結構表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為【】。

40.下列軟件系統(tǒng)結構圖的寬度為[]。

三、1.選擇題(20題)41.索引屬于()。

A.模式B.內模式C.外模式D.概念模式

42.算法執(zhí)行過程中所需要的存儲空間稱為算法的

A.時間復雜度B.計算工作量C.空間復雜度D.工作空間

43.有以下定義語句doublea,a;intw;longc;若各變量已正確賦值,則下列選項中正確的表達式是

A.a=a+b=b++B.w%((int)a+b)C.(c+w)%(int)aD.w=a==b

44.下列選項中,不是一個算法的基本特征的是()。

A.完整性B.可行性C.有窮性D.擁有足夠的情報

45.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其輸出結果為______。

A.10B.5C.6D.編譯錯誤

46.有下列函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()。

A.比較兩個字符串的大小

B.計算s所指字符串占用內存字節(jié)的個數(shù)

C.計算s所指字符串的長度

D.將s所指字符串復制到字符串t中

47.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

48.有以下程序:#include<stdio.h>main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);prinff("%d\n",s);

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

49.有以下程序voidf(int*x,int*y){intt;t=*X;*X=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7);while(p>q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運行后的輸出結果是

A.8,2,3,4,5,6,7,1,

B.5,6,7,8,1,2,3,4,

C.1,2,3,4,5,6,7,8,

D.8,7,6,5,4,3,2,1,

50.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是

A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.上述說法都不對

51.下列程序段的輸出結果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.1B.4C.9D.0

52.請選出以下程序的輸出結果()。#include<stdio.h>sub(int*s,inty){staticintt=3;y=s[t];t--;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("\n");}

A.1234B.4321C.0D.4444

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

A.C語言的源程序不必通過編譯就可以直接運行

B.C語言中的每條可執(zhí)行語句最終都將被轉換成二進制的機器指令

C.C源程序經(jīng)編譯形成的二進制代碼可以直接運行

D.C語言中的函數(shù)不可以單獨進行編譯

54.有以下程序:

#inClude<stdlib.h>

structNODE{

intnum;

structNODE*next;

};

main()

{StructN00E*p,*q,*r;

intsum;0;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(Sizeof(structNODE));

p->num=1;q->num=2;r->num=3;

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

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

printf("%d\n",sum);

}

執(zhí)行后的輸出結果是

A.3B.4C.5D.6

55.一個算法應該具有“確定性”等5個特性,下面對另外4個特性的描述中錯誤的是()A.有零個或多個輸入B.有零個或多個輸出C.有窮性D.可行性

56.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

當執(zhí)行上述程序段,從鍵盤上輸入555667777abe后,y的值為

A.55566.0B.566.0C.7777.0D.566777.0

57.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發(fā)送()。A.調用語句B.命令C.口令D.消息

58.下面一組中都是C語言關鍵字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

59.在C語言中,如果下面的變量都是血類型,則輸出的結果是______。sum=pad=5;pAd=sum++,pad++,++pAd;printf("%d\n",pad);

A.7B.6C.5D.4

60.以下程序的功能是:按順序讀入10名學生4門課程的成績,計算出每位學生的平均分并輸出,程序如下:main(){intn.k;floatscore.sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf("%f",&score);sum+=score;}ave=sum/4.0;printf("NO%d:%f\n",n,ave);}}上述程序運行后結果不正確,調試中發(fā)現(xiàn)有—條語句出現(xiàn)在程序中的位置不正確。這條語句是

A.sum=0.0;

B.sum+=score;

C.ave=sun/4.0;

D.printf("NO%d:%f\n",n,ave);

四、選擇題(20題)61.

有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=O)t++;

while((*t++=*s++)!=0);

}

main

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);printf("%S,%s",ss,aa);

}

程序運行結果是()。

A.accxyy,bbxxyy

B.ace,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

62.表達式'5'-'1'的值是()。A.A.整數(shù)4B.字符4C.表達式不合法D.字符6

63.

64.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

B.軟件從需求分析、設計、實現(xiàn)到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

65.

66.設有如下三個關系表

下列操作中正確的是()。

A.T=RnSB.T=RUSC.T=R×SD.T=R/S

67.設fun函數(shù)的定義形式為

voidfun(charch,floatx){…}

則下列對函數(shù)fun的調用語句中,正確的是()。A.A.fun("abc",3.0);B.t=fun('D'.16.5);

C.fun('65',2.8);

D.fun(32,32);

68.一棵二叉樹共有25個結點,其中5個是葉子結點,則度為1的結點數(shù)為()。

A.16B.10C.6D.4

69.為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為()。

A.PAD圖B.N—S圖C.結構圖D.數(shù)據(jù)流圖

70.有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是()。

A.chara=a;B.chara=\nC.chara=aa;D.chara=\x2d;

71.

72.設x,y和z都是int型變量,且x=3,y=4,z=5,則下面表達式中,值為0的表達式是()。

A.

B.

C.

D.

73.在以下選項中,不正確的賦值語句是()。

A.i++;B.nl=(n2=(n3=0..;C.m+n=1;D.i=k==j;

74.定義下列結構體(聯(lián)合)數(shù)組:

structst

{charname[15];

intage;

}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);

執(zhí)行語句printf("%d,%C",a[2].a(chǎn)ge,*(a[3].name+2))的輸出結果為()。A.A.15,AB.16,HC.16,AD.17,H

75.

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

A.預處理命令行必須位于C源程序的起始位置

B.在C語言中,預處理命令行都以“#”開頭

C.每個C程序必須在開頭包含預處理命令行:#include

D.C語言的預處理不能實現(xiàn)宏定義和條件編譯的功能

77.

78.

79.有以下程序,其中%u表示按無符號整數(shù)輸出:

main

{

unsignedintx=0xFFFF;/*x的初值為十六進制數(shù)*/

printf("%u\n",x);

}

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

A.-1B.65535C.32767D.0xFFFF

80.(69)單個用戶使用的數(shù)據(jù)視圖的描述稱為()

A.外模式

B.概念模式

C.內模式

D.存儲模式

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:求S的值。

例如,當n為100時,函數(shù)的值應為1.566893。

請改正程序中的錯誤,使它能得出正確的結果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內容為“****A*BC*DEF*G****”,刪除后,字符串中的內容應當是“ABCDEFG”。注意:部分源程序給出如下。請勿改動maini)函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(chara){voidmain{chars[81];print{("Enterastring:\n");gets(s):fun(S);printf("Thestringafterdeleted:\n");puts(s);}

參考答案

1.B

2.B

3.D

4.D在C語言中,不能直接比較兩個字符串的大小,必須用特定的函數(shù)來完成,選項A錯誤;選項B不管大于還是小于都執(zhí)行S,不符合題意;選項C正好相反,當s2大于s1時,執(zhí)行語句S,可知選項D正確。

5.C解析:在本題運行時主要注意的是當i=9時,a[i]=10-9=1:i=8時,a[i]=10-8=2;i=7時,a[i]=10-7=3;……依此類推,直到i=0時,a[i]=10-0=10:此時,i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。

6.C

7.C輸入數(shù)據(jù)的格式必須與seanf()的格式控制串完全匹配,所以輸入時必須在3和5之間輸入“;”。

8.A條件表達式:x=表達式1,表達式2:表達式3的含義是:先求解表達式1,若為非0(真),則求解表達式2,將表達式2的值賦給x。若表達式1的值為0(假),則求解表達式3,將表達式3的值賦給x。在本題中與表達式1:(x-y等價的是(x-y>0)。

9.B濫用90t0語句將使程序的流程毫無規(guī)律,可讀性差,對于初學者來說盡量不要使用,所以A錯誤。—個結構化程序可以包含順序、分支、循環(huán)結構中的一種或多種,所以C錯誤。由三種基本結構構成的程序可以解決任何復雜的問題,所以D錯誤。

10.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。??梢圆捎庙樞虼鎯?,也可以采用鏈式存儲。

11.D在C程序中,可以用字符數(shù)組存放一個字符串,然后輸出該字符串,也可以用字符指針指向一個字符串。

題目中用字符數(shù)組a[]來存放字符串'Itismine',a為數(shù)組名,表示首元素的地址,即字母I的地址。a+1表示數(shù)組中第二個元素t的地址,選項A正確。當用字符串指針指向字符串時,只是將字符串的第一個元素的地址賦給指針,當該指針指向其他字符串時,只需將該字符串的第一個元素地址賦給這個指針即可,和字符串的長度沒有關系,選項B也是正確的。指針變量的值為元素的地址,和元素具體的值沒有關系,當指針指向不同的元素時,存放的地址也會發(fā)生改變,故選項C是正確的。數(shù)組a初始化時沒有指定數(shù)組長度,系統(tǒng)自動根據(jù)初值個數(shù)確定數(shù)組長度,題目中只是將10個有效字符存放到數(shù)組中,不能說明這個數(shù)組只能存放10個字符。

12.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當執(zhí)行p=alpha后,p指向指針數(shù)組alpha的首地址。for循環(huán)中輸出了4個字符串。

13.D

14.Aelse總是與離它最近的if配對,所以當?shù)?個if語句的判斷條件不成立時,不再執(zhí)行第2個if語句以及與第2個if語句配對的else語句,而是直接執(zhí)行“x++”,輸出1。故本題答案為A選項。

15.D用C語言編寫的程序可以放置于多個程序文件中,所以A選項錯誤。C語言程序中的一行可以有多條語句,所以B選項錯誤。C語言中的注釋語句可以與原語句放在一行,也可以不放在一行,所以C選項錯誤。故本題答案為D選項。

16.B解析:本題考查while語句的使用。本題考查邏輯非運算符和不等于運算符的區(qū)別,邏輯非運算符'!'的優(yōu)先級大于不等于運算符'!='的優(yōu)先級。

17.C解析:C語句必須以分號結束,選項A是正確的。復合語句在語法上被看作一條語句,選項B也是正確的??照Z句也算是一條語句,因此如果空語句出現(xiàn)在條件或者循環(huán)語句中,一樣會被當作條件子句或者循環(huán)體來看待,所以選項c是錯誤的。賦值表達式末尾加分號就構成賦值語句,選項D正確。故本題應該選擇C。

18.B

19.B解析:一個函數(shù)可以帶回—個整型值、字符值、實型值等,但也可以帶回指針型數(shù)據(jù),即地址。本題的定義中,包括括號和*號,由于()優(yōu)先級高于*。故它是一個返回整型指針的函數(shù)。

20.AA選項中的語句可以在聲明變量的同時為data2賦值,賦值語句應寫作“data2={2,6};”。故本題答案為A選項。

21.5685,6,8解析:首先要清楚當滿足第1個if的判斷條件時只執(zhí)行一條語句“s=a;”,當滿足第2個if的判斷條件時執(zhí)行一條復合語句“{s=a;a=c;b=s};”,當滿足第3個if的判斷條件時只執(zhí)行一條語句“s=b;”。執(zhí)行程序:判斷a>b,由于a=3,b=5則3>5為假,不執(zhí)行“s=a;”,執(zhí)行“a=b;”和“b=s;”,則a=5,b=8。判斷a>c,由于a=5,c=6則5>6為假,不執(zhí)行“{s=a;a=c;b=s};”。判斷b>c,由于b=5,c=6則5>6為假,不執(zhí)行“s=b;”,執(zhí)行“b=c;”和“c=s;”,則b=6,c=8。最后輸出5,6,8。

22.操作系統(tǒng)操作系統(tǒng)解析:數(shù)據(jù)庫管理系統(tǒng)是幫助用戶創(chuàng)建和管理數(shù)據(jù)庫的應用程序的集合。因此,數(shù)據(jù)庫管理系統(tǒng)需要操作系統(tǒng)的支持,為用戶提供服務。

23.3131解析:設隊列容量為m,如果:rear>front,則隊列中元素個數(shù)為rear-front;如果rear<front,則隊列中元素個數(shù)為m+(rear-front)。本題rear<front,則m=32+(2-3)=31。

24.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務型。變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務。

25.24682,4,6,8解析:子函數(shù)fun()的功能是將數(shù)組a中的元素都自加一遍,然后仍然將結果存在原數(shù)組中,其實就是將數(shù)組a的每個元素都變?yōu)樵瓉淼?倍,然后輸出。在主程序中首先通過intfun()定義了子函數(shù)fun(),然后再調用fun()。

26.

解析:冒泡排序法是通過相鄰數(shù)據(jù)元素的交換逐步將線性表變成有序。假設線性表的長度為n,則在最壞的情況下,冒泡排序需要經(jīng)過遍的從前往后的掃描和遍的從后往前的掃描,需要的比較次數(shù)為。

27.概念設計階段(數(shù)據(jù)庫概念設計階段)概念設計階段(數(shù)據(jù)庫概念設計階段)

28./**//**/解析:C語言程序的注釋可以出現(xiàn)在程序基本單詞之間的任何地方,C語言程序的注釋以“/*”作為開始標記,并以“*/”作為結束標記。

29.前件前件

30.1371513715解析:本題中,定義了一個整型數(shù)組n并初始化,在for循環(huán)語句中,再對數(shù)組中各元素重新賦值。循環(huán)執(zhí)行第一次時,n[1]=n[0]*2+1=0+1=1,printf函數(shù)輸出1,然后i的值加1,比較i<=4成立,繼續(xù)執(zhí)行循環(huán)體語句,使后一個數(shù)為前一個數(shù)的2倍加1。所以最后輸出為1、3、7、15。

31.連接兩個字符數(shù)組中的字符連接兩個字符數(shù)組中的字符解析:strcat函數(shù)的作用是連接兩個字符數(shù)組中的字符串。

32.類類解析:在面向對象方法中,類描述的是具有相似性質的一組對象。所以,屬性與操作相似的一組對象稱為類。

33.11

34.輸出結果輸出結果解析:注意:測試的基本方法和步驟。

35.i=0j=20i=0j=20解析:本題考核的知識點是scanf()數(shù)的使用.該函數(shù)的第一個參數(shù)是格式字符串,主要由兩類字符組成,一類是非格式符要求原樣輸入,一類是格式符對應要輸入的變量,所以說本題中應該原樣輸入i=j=,后面分別給變量0和20,所以說空格處應該填入i=0,j=20。

36.棧棧解析:考查考生對棧和隊列概念的掌握。按'先進后出'原則組織數(shù)據(jù)的數(shù)據(jù)結構是棧;按'先進先出'原則組織數(shù)據(jù)的數(shù)據(jù)結構是隊列。

37.10111011解析:前綴自增運算時,表達式的值和變量自增之后的值相同;后綴自增運算時,表達式的值為變量自增之前的值。所以,本題程序輸出的兩個結果分別是m+1和n的值。而m在初始化時使用的是八進制常量011,轉換為十進制為9。故輸出結果是1011。

38.rewind()或fseek()rewind()或fseek()

39.層次模型用樹型結構表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為層次模型,用有向圖結構表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型,用二維表格結構表示實體及其聯(lián)系的數(shù)據(jù)模型稱為關系模型。

40.33解析:軟件系統(tǒng)結構圖的寬度:整體控制跨度(最大模塊數(shù)的層)的表示。

41.B解析:內模式(InternalSchemA)又稱物理模式(PhysicalSchemA),它給出了數(shù)據(jù)庫物理存儲結構與物理存取方法,如數(shù)據(jù)存儲的文件結構、索引、集簇及hash等存取方式與存取路徑。數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)具有高共享性和低冗余性,但不能完全避免數(shù)據(jù)冗余;數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)的不同出現(xiàn)應保持相同的值。

42.C算法執(zhí)行時所需要的存儲空間,包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所需要的額外空間,其中額外空間還包括算法程序執(zhí)行過程的工作單元以及某種數(shù)據(jù)結構所需要的附加存儲空間。這些存儲空間共稱為算法的空間復雜度。

43.C解析:本題考核的知識點是C語言中一些運算符的簡單應用。選項A中不是合法的賦值語句,將最右邊的第一個般值表達式加括號即為a=b+(b=b++)才正確,故選項A不正確;選項B中運算符“%”的對象必須是整型,而在選項B中(int)a+b為double型,故選項B不正確;選項a,b都為,double“==”應該改為“=”,故選項D不正確.所以,4個選項中選項C符合題意。

44.A解析:作為一個算法,一般應該具有下列4個特征:(1)可行性,即考慮到實際的條件能夠達到一個滿意的結果;(2)確定性,算法中的每一個步驟都必須是有明確定義的,(3)有窮性,一個算法必須在有限的時間內做完;(4)擁有足夠的情報。

45.B解析:在C語言中,宏定義是直接替換的,所以在c+a>b?a:b這個條件表達式中,c+a>b為真,所以用a的值作為整個表達式的值,而a的值為5,所以整個表達式的值為5。

46.C解析:在函數(shù)fun(char*s)中,首先用字符指針變量t指向s,而循環(huán)語句while(*t++);的功能是使指針變量t指向字符串變量s的末尾,這時退出循環(huán),因而語句return(t-s);返回的就是字符串s所指字符串的長度。

47.B解析:棧操作原則上“后進先出”,棧底至棧頂依次存放元素A、B、C、D,則表明這4個元素中D是最后進棧,B、C處于中間,A最早進棧。所以出棧時一定是先出D,再出C,最后出A。

48.C解析:程序中的*(t+i)相當于t[i]。由于for循環(huán)變量的增量為2,因此i分別取值0,2,4,6,8,因為t[0]=1,t[2]=3,t[4]=5,t[6]=7,t[8]=9,對其進行求和運算,結果為25。

49.D解析:在C語言中,函數(shù)參數(shù)的默認傳遞方式是傳值,即函數(shù)內部的形參只是調用時的實參的一個拷貝,改變形參,實參不會被改變.如果想要實現(xiàn)傳址調用只能使用傳遞指針的方式來實現(xiàn).利用指針作函數(shù)的參數(shù)時,無論形參指針還是實參指針所指的都是同一個內存地址,所以形參如果改變了這個地址中的內容,也就是改變了實參所指的地址內容.本題程序開頭定義了一個函數(shù)f(),在函數(shù)中用一個臨時變量t交換了兩個指針參數(shù)所指的地址內容,所以該函數(shù)的作用就是交換兩個參數(shù)所指的內容。在主函數(shù)中,首先定義了一個int型數(shù)組a,并定義了兩個int型指針p、q分別指向數(shù)組a的第一個元素和最后一個元素。然后使用一個while循環(huán)調用函數(shù)f()不斷交換兩個指針所指的內容,每次交換后p往后移動一個元素,q往前移動一個元素,直到q不再大于p,即直到兩個指針在數(shù)組a的中間相遇為止。所以,程序最終運行的結果是數(shù)組a中的所有元素全被反序排列一次。故應該選擇選項D。

50.C解析:a數(shù)組存放的是字符串,系統(tǒng)會自動在字符串的最后加上一個'\\0',所以a數(shù)組的長度為4,而b數(shù)組的長度為3,故a數(shù)組長度大于b數(shù)組長度。

51.D解析:本題主要是考查帶參數(shù)的宏定義及其相關運算。本題中宏運算過程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

52.C解析:本題考查函數(shù)的形參和實參的關系。函數(shù)sub將實參x的值傳給形參y,y值的改變不能使x的值發(fā)生改變,所以輸出的x值始終為0。

53.B解析:本題考核的知識點是C程序從編寫到生成可執(zhí)行文件的步驟。C語言采用編譯方式將源程序轉換為二進制的目標代碼,編寫好一個C程序到完成運行一般經(jīng)過以下幾個步驟:編輯;編譯,就是將已經(jīng)編輯好的源程序翻譯成二進制的目標代碼,經(jīng)編譯后的得到的二進制代碼還不能直接執(zhí)行,因為每一個模塊往往是單獨編譯的,必須把經(jīng)過編譯的各個模塊的目標代碼與系統(tǒng)提供的標準模塊連接后才能運行;連接,將各模塊的二進制目標代碼與系統(tǒng)標準模塊經(jīng)連接處理后,得到具有絕對地址的可執(zhí)行文件,它是計算機能直接執(zhí)行的文件;執(zhí)行,執(zhí)行一個經(jīng)過編譯和連接的可執(zhí)行的目標文件。由以上定義可知,選項A、C、D均不正確。所以,4個選項中選項B符合題意。

54.B解析:本題中定義了一個結點structNODE,在主函數(shù)中定義了三個結點變量指針p、q和r,接著通過malloc函數(shù)分配了三個結點并讓p、q和r分別指向他們,再接著給p、q和r所指向的結點的hum域賦值為1、2、3,然后讓結點p指向q,讓q指向r,r指向NULL。顯然q->next->num的值為指針r所指向結點的num域的值為3,p->num的值為指針p所指向結點的num域的值為1,故最后輸出s的值為3+1=4。所以,4個選項中選項B符合題意。

55.B解析:本題考核的知識點是算法的性質。算法是為解決某個特定問題而采取的確定的且有限的步驟,一個算法應當具有以下5個基本特性:1.有窮性,就是指一個算法應當包含有限個操作步驟。2.確定性,就是說算法中每一條指令必須有確切的含義,不能有二義性,對于相同的輸入必能得出相同的執(zhí)行結果。3.有零個或多個輸入。4.可行性,就是說算法中指定的操作,都可以通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次實現(xiàn),5.有一個或多個輸出。由此可知選項B不正確,所以,4個選項中選項B符合題意。

56.B解析:本題考查通過scanf函數(shù)輸入數(shù)據(jù)時的格式控制問題。變量j的格式控制為“%2d”,即只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入都會被保存到變量y中,因為y為浮點型數(shù)據(jù),所以輸出結果為選項B)。

57.D解析:面向對象的世界是通過對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機制協(xié)助進行,這樣的機制稱為消息。消息是一個實例與另一個實例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

58.C解析:C語言中的關鍵字有32個關鍵字(參見C語言教程),本題中只有C符合題意。

59.C

60.A解析:程序中使用了兩層for循環(huán),外層循環(huán)的作用是控制人數(shù),循環(huán)一次是求一個人的成績和,然后除以4得到平均成績。每個人的成績總和一開始時都必須清0,否則就會出現(xiàn)后面人的總成績越來越大?!皊um=0.0”;應在外層循環(huán)中。選項A正確。

61.D

\n主函數(shù)中語句fun(ss,aa)的功能是將字符串8a連接到字符串ss的末尾。

\n

62.A在c語言中,字符都是變?yōu)槠鋵腁SCII碼值來參加算術運算的,但字符間的相對位置關系還是不變的,字符5和字符1的ASCII碼值相差仍是4。

63.D

64.A通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。

65.D

66.C\n對于兩個關系的合并操作可以用笛卡爾積表示。設有n元關系R和in元關系s,它們分別有P和q個元組,則R與S的笛卡兒積記為R×S它是一個m+n元關系,元組個數(shù)是P×q由題意可得,關系T是由關系R與關系s進行笛卡爾積運算得到的。

\n

67.C由題目的已知條件函數(shù)fun的定義形式voidfun(charch,floatx){…)可知第一個形參為字符型,所以A不符合,第二個形參為精度型,所以D不符合,函數(shù)fun定義為void型(無論返回值型),故其沒有返回值,所以選項B錯誤。選項C的第一個實參的類型為字符型,第二個實參的類型為單精度型,與函數(shù)fun的形式參數(shù)的類型相符合,所以選項C為正確答案。

68.A【答案】:A【知識點】:二叉樹的性質

【解析】:由二叉樹的性質3可知,度為0的結點數(shù)(即葉子結點數(shù))=度為2的結點數(shù)+1。題目中給出葉子結點數(shù)為5個,利用性質3可計算出度為2的結點數(shù)為4個。在二叉樹只有三種結點:度為0的、度為1的、度為2的,總數(shù)為25個,所以度為1的結點數(shù)即為25-5-4=16個,所以答案為A。

69.BN-S圖的定義;在使用過程中,人們發(fā)現(xiàn)流程線不一定是必需的,為此,人們設計了一種新的流程圖,它把整個程序寫在一個大框圖內,這個大框圖由若干個小的基本框圖構成,這種流程圖簡稱N-S圖

70.Cchar類型用于存儲單個字符的簡單變量類型,它可以被指定為一個字符常量或一個整數(shù)。

71.C

72.D該題考查邏輯與”&&”和邏輯或”||”以及邏輯非”!¨符號的用法。選項A)即3&&4為真;選項B)即3<=4為真;選項C)是一個邏輯或與邏輯與的混合運算,只要執(zhí)行了邏輯或左半部分,程序將直接停止執(zhí)行邏輯或右半部

分程序,因為x的值為真;此時選項c)變?yōu)閘&&一1為真。選項D)不用計算,括號內邏輯或右邊的值為l,因而括號內的值為1,再進行邏輯非運算得0。

73.C賦值運算符的左邊只能是變量,而不能是常量或表達式。

74.C本題考查結構體數(shù)組。a[2].a(chǎn)ge為結構體a[2]的age成員,a[3].name為指向結構體a[3]的name成員的第一個元素的指針,即指向“2”,(a[3].name+2)將指針后移兩位指向第三個元素“A”,*(a[3].name+2)是取指針所指向地址的內容。

75.A

76.B本題是對基本知識點的理解,預處理命令行的位置沒有規(guī)定,只是習慣寫在起始位置而已,當需要時才用#include<stdio.h>頭文件,預處理的作用就是實現(xiàn)宏定義和條件編譯。

77.B

78.B

79.B解析:整型常量有十進制、八進制和十六進制3種表示:十進制整數(shù)以正號(+)或負號(-)開頭,由首位非0的一串十進制數(shù)字組成,正負號也可省略,表示正整數(shù);八進制整數(shù)以數(shù)字0開頭,后面接著干個八進制數(shù)字(0~7):十六進制整數(shù)以數(shù)字。和字母x(大、小寫均可)開頭,后面接若干個十六進制數(shù)字(數(shù)字0~9和字母A~F,大、小寫均可)。故本題是以無符號整數(shù)形式輸出一個十六進制整數(shù)FFFF,將其轉換為十進制就是65535,故本題應該選擇B。

80.A81.(1)錯誤:proc(intn)

正確:doubleproc(intk)

(2)錯誤:returnsum

正確:returnsum;

【解析】由主函數(shù)中的函數(shù)調用及函數(shù)proc()中的re-turn語句可知,函數(shù)proc()的返回值類型應為double型,因此“proc(intk)”前面應加上double;根據(jù)C語言的語法規(guī)則,每一條語句都必須以分號結束,因此語句“returns”后應加上分號。

82.voidfun(char*a){inti,j=0;for(i=0;a[i]!=\0;i++)if(a[i]!=*)a[j++]=a[i];//若不是要刪除的字符*則保留a[j]=\0;//最后加上字符串結束符\0}【解析】此題是刪除字符串中的星號。思路是通過for循環(huán)完成對字符串的遍歷,通過if判斷,找到不是“*”的字符,將其賦值到數(shù)組a中星號前的位置,“if(a[i]!=*)”“a[i++]=a[i]”,最后返回主函數(shù)將刪除*后的字符串輸出即可。2022年山東省菏澤市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

2.已知有double型變量x=2.5,y=4.7,整型變量a=7,則表達式x+a%3*(int)(x+y)%2/4的值是()。

A.2.4B.2.5C.2.75D.0

3.

4.s1和s2已正確定義并分別指向兩個字符串。若要求:當s1所指串大于s2所指串時,執(zhí)行語句s;則以下選項中正確的是()。

A.if(s1>s2)S;

B.if(strcmp(s1,s2))S;

C.if(strcmp(s2,sl)>O)S;

D.if(stremp(s1,s2)>O)S;

5.以下程序的輸出結果是_______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;print("%d%d%d,a[2],a[5],a[8]);}

A.258B.741C.852D.369

6.假設整型數(shù)i的地址為0x12345678,指針ip地址為0x21850043,則執(zhí)行以下后,k的值為()。A.0x12345678B.0x21850043C.100D.不確定

7.若有定義:inta,h;通過語句:scanf(”%d;%d”,&a,&B.;,能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是()。

A.35B.3,5C.3;5D.35

8.若有定義intx,y;并已正確給變量賦值,則以下選項中與表達式(x一y)(x++):(y++)中的條件表達式(x-y)等價的是()A.(x-y<0|x-y>0)B.x-y<0).C.(x-y>0)D.(x-y==)

9.以下關于結構化程序設計的敘述中正確的是()。

A.結構化程序使用goto語句會很便捷

B.在c語言中,程序的模塊化是利用函數(shù)實現(xiàn)的

C.一個結構化程序必須同時由順序、分支、循環(huán)三種結構組成

D.由三種基本結構構成的程序只能解決小規(guī)模的問題

10.下列關于棧的描述中錯誤的是()。A.棧是先進后出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入與刪除操作中,不需要改變棧底指針

11.第

42

若有說明語句

chara[]="Itismine";

char*p="Itismine";

則以下不正確的敘述是

A.a+1表示的是字符t的地址

B.p指向另外的字符串時,字符串的長度不受限制

C.p變量中存放的地址值可以改變

D.a中只能存放10個字符

12.以下程序輸出的結果為______。main(){char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX");char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPD.AEIM

13.設散列表長m=14,散列函數(shù)H(K)=K%11,已知表中已有4個結點:r(15)=4;r(38)=5;r(61)=6;r(84)=7,其他地址為空,如用二次探測再散列處理沖突,關鍵字為49的結點地址是_____。

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

14.有以下程序:#include<stdio.h>main(){intx=1,y=2,z=3;if(x>y)if(y<z) printf(“%d”,++z);else printf(“%d”,++y);printf(“%d\n”,x++);}程序的運行結果是()。

A.1B.41C.2D.331

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

A.用C語言編寫的程序只能放在一個程序文件中

B.C語言程序書寫格式嚴格,要求一行內只能寫一個語句

C.C語言程序中的注釋只能出現(xiàn)在程序的開始位置和語句的后面

D.C語言程序書寫格式自由,一個語句可以寫在多行上

16.設有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則

A.運行程序段后輸出0B.運行程序段后輸出1C.程序段中的控制表達式是非法的D.程序段執(zhí)行無限次

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

A.C語句必須以分號結束

B.復合語句在語法上被看作一條語句

C.空語句出現(xiàn)在任何位置都不會影響程序運行

D.賦值表達式末尾加分號就構成賦值語句

18.將數(shù)組a[0,1,…,m-1]作為循環(huán)隊列SQ的存儲空間,f為隊頭指示,r為隊尾指示,則執(zhí)行出隊操作的語句為()A.f=f+1B.f=(f+1)%mC.r=(r+1)%mD.f=(f+1)%(m+1)

19.定義int*swap()指的是______。

A.一個返回整型值的函數(shù)swap()

B.一個返回指向整型值指針的函數(shù)swap()

C.一個指向函數(shù)swap()的指針,函數(shù)返回一個整型值

D.以上說法均錯

20.設有定義:structcomplex{intreal,unreal;}data1={1,8},data2;則下列賦值語句中錯誤的是()。

A.data2=(2,6);

B.data2=data1;

C.data2.real=data1.real;

D.data2.real=data1.unreal;

二、2.填空題(20題)21.若有如下程序:

main()

{ints=8,a=3,b=5,c=6;

if(a>b)s=a;a=b;b=s;

if(a>c){s=a;a=c;b=s);

if(b>c)s=b;b=c;c=s;

printf("%d,%d,%d\n",a,b,c);

}

則程序運行后的輸出結果是【】。

22.數(shù)據(jù)庫管理系統(tǒng)是位于用戶與______之間的軟件系統(tǒng)。

23.在一個容量為32的循環(huán)隊列中,若頭指針front=3,尾指針rear=2,則該循環(huán)隊列中共有______個元素。

24.數(shù)據(jù)流圖的類型有【】和事務型。

25.下列程序的運行結果是______。

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

{staticinta[4]={1,2,3,4};

inti;

for(i=0;i<4;i++)a[i]+=a[i];

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

printf"\n");

}

26.在最壞情況下,冒泡排序的時間復雜度為【】。

27.數(shù)據(jù)庫設計分為以下6個設計階段:需求分析階段、______、邏輯設計階段、物理設計階段、實施階段、運行和維護階段。

28.C語言程序的注釋可以出現(xiàn)在程序中的任何地方,一個注釋以【】分別作為開始和結束。

29.在樹形結構中,樹根結點沒有______。

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

main()

{inti,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*2+1;

printf("%d",n[i]);

}

}

31.strcat函數(shù)的作用是【】。

32.在面向對象方法中,屬性與操作相似的一組對象稱為【】。

33.性結構中,第一個結點沒有前驅結點,其余每個結點有且只有【】個前驅結點;最后一個結點沒有后繼結點,其余每個結點有且只有【】個后繼結點。

34.為了便于對照檢查,測試用例應由輸入數(shù)據(jù)和預期的【】兩部分組成。

35.若有程序

main()

{inti,j;

scanf("i=%d,j=%d",&i,&j);

printf("i=%d,j-%d\n",i,j);

}

要求給i賦10,給j賦20,則應該從鍵盤輸入______。

36.按"先進后出"原則組織數(shù)據(jù)的數(shù)據(jù)結構是【】。

37.以下程序運行后的輸出結果是【】。

main()

{intm=011,n=11;

printf("%d%d\n",++m,n++);

}

38.在對文件操作的過程中,若要求文件的位置指針回到文件的開始處,應當調用的函數(shù)是【】。

39.用樹型結構表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為【】。

40.下列軟件系統(tǒng)結構圖的寬度為[]。

三、1.選擇題(20題)41.索引屬于()。

A.模式B.內模式C.外模式D.概念模式

42.算法執(zhí)行過程中所需要的存儲空間稱為算法的

A.時間復雜度B.計算工作量C.空間復雜度D.工作空間

43.有以下定義語句doublea,a;intw;longc;若各變量已正確賦值,則下列選項中正確的表達式是

A.a=a+b=b++B.w%((int)a+b)C.(c+w)%(int)aD.w=a==b

44.下列選項中,不是一個算法的基本特征的是()。

A.完整性B.可行性C.有窮性D.擁有足夠的情報

45.有如下程序段:#include<stdio.h>#defineMax(a,b)a>b?a:bmain(){inta=5,b=6,c=4,d;d=c+Max(a,b);printf("%d",d);}其輸出結果為______。

A.10B.5C.6D.編譯錯誤

46.有下列函數(shù):intfun(char*s){char*t=s;while(*t++);return(t-s);}該函數(shù)的功能是()。

A.比較兩個字符串的大小

B.計算s所指字符串占用內存字節(jié)的個數(shù)

C.計算s所指字符串的長度

D.將s所指字符串復制到字符串t中

47.棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,則出棧序列可能是

A.ABCEDB.DCBEAC.DBCEAD.CDABE

48.有以下程序:#include<stdio.h>main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);prinff("%d\n",s);

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

49.有以下程序voidf(int*x,int*y){intt;t=*X;*X=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7);while(p>q){f(p,q);p++;q--;}for(i=0;i<8;i++)printf("%d,",a[i]);}程序運行后的輸出結果是

A.8,2,3,4,5,6,7,1,

B.5,6,7,8,1,2,3,4,

C.1,2,3,4,5,6,7,8,

D.8,7,6,5,4,3,2,1,

50.已有定義:chara[]="xyz",b[]={'x','y','z'};,以下敘述中正確的是

A.數(shù)組a和b的長度相同B.a數(shù)組長度小于b數(shù)組長度C.a數(shù)組長度大于b數(shù)組長度D.上述說法都不對

51.下列程序段的輸出結果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.1B.4C.9D.0

52.請選出以下程序的輸出結果()。#include<stdio.h>sub(int*s,inty){staticintt=3;y=s[t];t--;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf("%d",x);}printf("\n");}

A.1234B.4321C.0D.4444

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

A.C語言的源程序不必通過編譯就可以直接運行

B.C語言中的每條可執(zhí)行語句最終都將被轉換成二進制的機器指令

C.C源程序經(jīng)編譯形成的二進制代碼可以直接運行

D.C語言中的函數(shù)不可以單獨進行編譯

54.有以下程序:

#inClude<stdlib.h>

structNODE{

intnum;

structNODE*next;

};

main()

{StructN00E*p,*q,*r;

intsum;0;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)malloc(sizeof(structNODE));

r=(structNODE*)malloc(Sizeof(structNODE));

p->num=1;q->num=2;r->num=3;

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

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

printf("%d\n",sum);

}

執(zhí)行后的輸出結果是

A.3B.4C.5D.6

55.一個算法應該具有“確定性”等5個特性,下面對另外4個特性的描述中錯誤的是()A.有零個或多個輸入B.有零個或多個輸出C.有窮性D.可行性

56.有以下程序段

intj;floaty;charname[50];

scanf("%2d%f%s",&j,&y,name);

當執(zhí)行上述程序段,從鍵盤上輸入555667777abe后,y的值為

A.55566.0B.566.0C.7777.0D.566777.0

57.在面向對象方法中,一個對象請求另一對象為其服務的方式是通過發(fā)送()。A.調用語句B.命令C.口令D.消息

58.下面一組中都是C語言關鍵字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

59.在C語言中,如果下面的變量都是血類型,則輸出的結果是______。sum=pad=5;pAd=sum++,pad++,++pAd;printf("%d\n",pad);

A.7B.6C.5D.4

60.以下程序的功能是:按順序讀入10名學生4門課程的成績,計算出每位學生的平均分并輸出,程序如下:main(){intn.k;floatscore.sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){scanf("%f",&score);sum+=score;}ave=sum/4.0;printf("NO%d:%f\n",n,ave);}}上述程序運行后結果不正確,調試中發(fā)現(xiàn)有—條語句出現(xiàn)在程序中的位置不正確。這條語句是

A.sum=0.0;

B.sum+=score;

C.ave=sun/4.0;

D.printf("NO%d:%f\n",n,ave);

四、選擇題(20題)61.

有以下程序:

#include<stdio.h>

voidfun(char*t,char*s)

{while(*t!=O)t++;

while((*t++=*s++)!=0);

}

main

{charss[10]="acc",aa[10]="bbxxyy";

fun(ss,aa);printf("%S,%s",ss,aa);

}

程序運行結果是()。

A.accxyy,bbxxyy

B.ace,bbxxyy

C.accxxyy,bbxxyy

D.accbbxxyy,bbxxyy

62.表達式'5'-'1'的值是()。A.A.整數(shù)4B.字符4C.表達式不合法D.字符6

63.

64.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

B.軟件從需求分析、設計、實現(xiàn)到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

65.

66.設有如下三個關系表

下列操作中正確的是()。

A.T=RnSB.T=RUSC.T=R×SD.T=R/S

67.設fun函數(shù)的定義形式為

voidfun(charch,floatx){…}

則下列對函數(shù)fun的調用語句中,正確的是()。A.A.fun("abc",3.0);B.t=fun('D'.16.5);

C.fun('65',2.8);

D.fun(32,32);

68.一棵二叉樹共有25個結點,其中5個是葉子結點,則度為1的結點數(shù)為()。

A.16B.10C.6D.4

69.為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為()。

A.PAD圖B.N—S圖C.結構圖D.數(shù)據(jù)流圖

70.有以下定義語句,編譯時會出現(xiàn)編譯錯誤的是()。

A.chara=a;B.chara=\nC.chara=aa;D.chara=\x2d;

71.

72.設x,y和z都是int型變量,且x=3,y=4,z=5,則下面表達式中,值為0的表達式是()。

A.

B.

C.

D.

73.在以下選項中,不正確的賦值語句是()。

A.i++;B.nl=(n2=(n3=0..;C.m+n=1;D.i=k==j;

74.定義下列結構體(聯(lián)合)數(shù)組:

structst

{charname[15];

intage;

}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);

執(zhí)行語句printf("%d,%C",a[2].a(chǎn)ge,*(a[3].name+2))的輸出結果為()。A.A.15,AB.16,HC.16,AD.17,H

75.

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

A.預處理命令行必須位于C源程序的起始位置

B.在C語言中,預處理命令行都以“#”開頭

C.每個C程序必須在開頭包含預處理命令行:#include

D.C語言的預處理不能實現(xiàn)宏定義和條件編譯的功能

77.

78.

79.有以下程序,其中%u表示按無符號整數(shù)輸出:

main

{

unsignedintx=0xFFFF;/*x的初值為十六進制數(shù)*/

printf("%u\n",x);

}

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

A.-1B.65535C.32767D.0xFFFF

80.(69)單個用戶使用的數(shù)據(jù)視圖的描述稱為()

A.外模式

B.概念模式

C.內模式

D.存儲模式

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:求S的值。

例如,當n為100時,函數(shù)的值應為1.566893。

請改正程序中的錯誤,使它能得出正確的結果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。

試題程序:

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數(shù)fun,其功能是:刪除字符串中所有的*號。編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。例如,字符串中的內容為“****A*BC*DEF*G****”,刪除后,字符串中的內容應當是“ABCDEFG”。注意:部分源程序給出如下。請勿改動maini)函數(shù)和其他函數(shù)中的任何內容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:#include<conio.h>#include<stdio.h>voidfun(chara){voidmain{chars[81];print{("Enterastring:\n");gets(s):fun(S);printf("Thestringafterdeleted:\n");puts(s);}

參考答案

1.B

2.B

3.D

4.D在C語言中,不能直接比較兩個字符串的大小,必須用特定的函數(shù)來完成,選項A錯誤;選項B不管大于還是小于都執(zhí)行S,不符合題意;選項C正好相反,當s2大于s1時,執(zhí)行語句S,可知選項D正確。

5.C解析:在本題運行時主要注意的是當i=9時,a[i]=10-9=1:i=8時,a[i]=10-8=2;i=7時,a[i]=10-7=3;……依此類推,直到i=0時,a[i]=10-0=10:此時,i的值已變?yōu)?1,判斷for的循環(huán)條件,不成立,然后輸出a[2],a[5],a[8]分別為8,5,2。

6.C

7.C輸入數(shù)據(jù)的格式必須與seanf()的格式控制串完全匹配,所以輸入時必須在3和5之間輸入“;”。

8.A條件表達式:x=表達式1,表達式2:表達式3的含義是:先求解表達式1,若為非0(真),則求解表達式2,將表達式2的值賦給x。若表達式1的值為0(假),則求解表達式3,將表達式3的值賦給x。在本題中與表達式1:(x-y等價的是(x-y>0)。

9.B濫用90t0語句將使程序的流程毫無規(guī)律,可讀性差,對于初學者來說盡量不要使用,所以A錯誤?!獋€結構化程序可以包含順序、分支、循環(huán)結構中的一種或多種,所以C錯誤。由三種基本結構構成的程序可以解決任何復雜的問題,所以D錯誤。

10.B棧是限定只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,它們的操作特點是先進后出,因此具有記憶作用。??梢圆捎庙樞虼鎯?,也可以采用鏈式存儲。

11.D在C程序中,可以用字符數(shù)組存放一個字符串,然后輸出該字符串,也可以用字符指針指向一個字符串。

題目中用字符數(shù)組a[]來存放字符串'Itismine',a為數(shù)組名,表示首元素的地址,即字母I的地址。a+1表示數(shù)組中第二個元素t的地址,選項A正確。當用字符串指針指向字符串時,只是將字符串的第一個元素的地址賦給指針,當該指針指向其他字符串時,只需將該字符串的第一個元素地址賦給這個指針即可,和字符串的長度沒有關系,選項B也是正確的。指針變量的值為元素的地址,和元素具體的值沒有關系,當指針指向不同的元素時,存放的地址也會發(fā)生改變,故選項C是正確的。數(shù)組a初始化時沒有指定數(shù)組長度,系統(tǒng)自動根據(jù)初值個數(shù)確定數(shù)組長度,題目中只是將10個有效字符存放到數(shù)組中,不能說明這個數(shù)組只能存放10個字符。

12.C解析:alpha[0]指向“ABCD”的首地址;alpha[1]指向“EFGH”的首地址;alpha[2]指向“IJKL”的首地址,依此類推。當執(zhí)行p=alpha后,p指向指針數(shù)組alpha的首地址。for循環(huán)中輸出了4個字符串。

13.D

14.Aelse總是與離它最近的if配對,所以當?shù)?個if語句的判斷條件不成立時,不再執(zhí)行第2個if語句以及與第2個if語句配對的else語句,而是直接執(zhí)行“x++”,輸出1。故本題答案為A選項。

15.D用C語言編寫的程序可以放置于多個程序文件中,所以A選項錯誤。C語言程序中的一行可以有多條語句,所以B選項錯誤。C語言中的注釋語句可以與原語句放在一行,也可以不放在一行,所以C選項錯誤。故本題答案為D選項。

16.B解析:本題考查while語句的使用。

溫馨提示

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

評論

0/150

提交評論