2021-2022年湖南省益陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁
2021-2022年湖南省益陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁
2021-2022年湖南省益陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁
2021-2022年湖南省益陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁
2021-2022年湖南省益陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁
已閱讀5頁,還剩67頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年湖南省益陽市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.一個有8個頂點的有向圖,所有頂點的入度出度之和與所有頂點的出度之和的差是()

A.16B.4C.0D.2

2.有以下程序#include<stdio.h>main(){chara[3O],b[30];scanf("%S",a);gets(b);printf("%s\n%s\\n",a,b);}程序運行時若輸入:howareyou?Iamfine<回車>則輸出結果是()。A.howareyou?Iamfine

B.howareyou?Iamfine

C.howareyou?Iamfine

D.howareyou?

3.對以下四個序列用直接插入排序方法由小到大進行排序時,元素比較次數最少的是()

A.89,27,35,78,41,15

B.27,35,41,16,89,70

C.15,27,46,40,64,85

D.90,80,45,38,30,25

4.設有定義“intk=0;”,以下選項的4個表達式中與其他3個表達式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

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

A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方

B.花括號"{"和"}"只能作為函數體的定界符

C.構成C程序的基本單位是函數,所有函數名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

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

A.C語言程序必須要有return語句

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

C.C語言程序中,只有int類型的函數可以未經聲明而出現(xiàn)在調用之后

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

7.已知shortint類型變量占用兩個字節(jié),若有定義:shortintx[10]={0,2,4};,則數組x在內存中所占字節(jié)數是()。

A.3B.6C.10D.20

8.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

9.C語言中,組成數據文件的成分是()。A.A.記錄

B.數據行

C.數據塊

D.字符(字節(jié))序列

10.表示關系a≤b≤c的C語言表達式為()。

A.(a<=B)&&(b<=C)

B.(a<=B)and(b<=C)

C.(a<=b<=C)

D.(a<=B)&(b<=C)

11.設一棵二叉樹有3個葉子節(jié)點,有8個度為1的節(jié)點,則該二叉樹中總的節(jié)點數為()

A.12B.13C.14D.15E.16F.17

12.不帶頭結點的單鏈表head為空的判定條件是()。

A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL

13.有以下程序:#include<stdio.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf(“%d,%d\n”,a,b);}程序運行后的輸出結果是()。

A.9,18B.8,11C.7,11D.10,14

14.對一個有A,B,C,D隨機組成的序列進行哈夫曼編碼,據統(tǒng)計,各個元素的概率分別為:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,請問該編碼的平均期望編碼長度為()bits。

A.1.45B.1.74C.1.85D.1.92

15.下列哪個算法是對一個list排序的最快方法()

A.快速排序B.冒泡排序C.二分插入排序D.線性排序

16.若有以下程序

則程序的輸出結果是

A.3B.7C.6D.10

17.

18.數據流圖用于抽象地描述一個軟件的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是()。

A.控制流B.加工C.數據存儲D.源和潭

19.有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){casel:case3:printf("%d\n",n);break;case2:case4:print?("%d\n",n);continue;case():exit(0);}printf("%d\n",n);}以下關于程序段執(zhí)行情況的敘述,正確的是()。A.for循環(huán)語句固定執(zhí)行8次

B.當產生的隨機數n為4時結束循環(huán)操作

C.當產生的隨機數n為1和2時不做任何操作

D.當產生的隨機數n為0時結束程序運行

20.執(zhí)行下列程序后,輸出的結果是()。

#include<stdio.h>

#defineS(X)X*X

voidmain()

{ihta=9,k=3,m=2;

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

printf("%d",A);

}

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

二、2.填空題(20題)21.數據庫系統(tǒng)其內部分為三級模式,即概念模式、內模式和外模式。其中,______是用戶的數據視圖,也就是用戶所見到的數據模式。

22.下面程序的輸出結果是【】。

main()

{inti=3,j=2;

char*a="DCBA";

printf("%c%c\n",a[i],a[j])

}

23.軟什是程序、數據和______的集合。

24.mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

25.以下程序的功能是調用函數fun計算:m=1-2+3-4+…+9-10,并輸出結果。請?zhí)羁铡?/p>

#include<stdio.h>

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;f=【】;}

returnm;

}

main()

{printf("m=%d\n",【】);}

26.若變量a,b已定義為int類型并分別賦值21和55,要求用printf函數以a=21,b=55的形式輸出,請寫出完整的輸出語句行:【】。

27.設有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內容,請將語句補充完整。

scanf("%d",【】);

printf("%d\n",【】);

28.有兩個C程序文件T18.c和myfun.c同在VC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();prinff("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!:'\n')s[n++]=c;

n--;

while(n>=0)prinff("%c",s[n--]);

}

當編譯連接通過后,運行程序T18時,輸入"Thank!”,則輸出結果是【】。

29.在軟件開發(fā)中,結構化方法包括結構化分析方法、結構化設計方法和結構化程序設計方法。詳細設計階段所采用的是【】方法。

30.下面程序的功能是輸出數組s中最大元素的下標,請?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

printf("%d\n",k);}

31.下列程序的輸出結果是______。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

32.執(zhí)行以下程序的輸出結果是()。

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf(”%d\n",k);

}

33.下列程序的輸出結果是______。

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

34.對一組記錄{54,38,96,23,15,72,60,45,83}進行直接插入排序時,當插入第5個記錄到有序表時,尋找插入位置需比較【】次。

35.設有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

36.與表達式a+=b等價的另一書寫形式是______。

37.以下程序的輸出是【】。

main()

{

charstr1[]=Howdoyoudo",*p=strl;

strcpy(str1+strlen(str1)\2"esshe");

pfinff("%s\n",p1);

}

38.有定義chara,b;若想通過&運算符保留a對應的二進制數的第3位和第6位的值,其余位置0,則b的二進制數應是【】。

39.下面程序把從終端讀入的文本(用#作為文本結束標志)復制到一個名為file.txt的新文件中。補足所缺語句。

main()

{charch;

FILE*fp;

if((fp=fopen(______))=NULL)exit(0);

while((ch=getchar())!='#')

fputc(ch,fp);

______;

}

40.函數fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

三、1.選擇題(20題)41.以下程序輸出的結果是#include<stdio.h>main(){inti=010,j=10;printf("%d,%d\n",++i,j--);}

A.11,10B.9,10C.010,9D.10,9

42.模塊本身的內聚是模塊獨立性的重要性度量因素之一。在7類內聚中,具有最強內聚的一類是__________。

A.順序性內聚B.過程性內聚C.邏輯性內聚D.功能性內聚

43.以下敘述中不正確的是

A.C語言中的文本文件以ASCII碼形式存儲數據

B.C語言中對二進制位的防問速度比文本文件快

C.C語言中,隨機讀寫方式不使用于文本文件

D.C語言中,順序讀寫方式不使用于二進制文件

44.若輸入60和13,以下程序的輸出結果是()#defineSURPLUS(a,b)((a)%(b))main(){inta,b;scanf("%d,%d",&a,&b);printf("%d\n",SURPLUS(a,b));}

A.60B.13C.73D.8

45.在下列選項中,沒有構成死循環(huán)的程序段是_____。

A.inti=100;while(1){i=i%100+1;if(i>100)break;}

B.for(;;);

C.intk=1000;do{++k;}while(k>=1000);

D.ints=36:while(s);--s;

46.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

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

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

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

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

D.線性表可以是空表

48.下列程序的輸出結果是()。#include<stdio.h>#include<string.h>main(){chara[]="\n123\\";printf("%d,%d\n",strlen(a),sizeof(a));}

A.5,6B.5,5C.6,6D.6,5

49.下列程序的輸出結果是()。#include<stdio.h>main(){inta=2,b=3,p;p=f(a,b);printf("%d",p);}intf(a,b){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}

A.-1B.0C.1D.2

50.對于下列定義,不正確的敘述是()。uniondata{inta;charb;doublec;}x=y;

A.變量x所占內存的長度等于成員c的長度

B.變量x的地址和它的各成員地址都是相同的

C.可以在定義時對x初始化

D.不能對變量x賦值,故x=y非法

51.設有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

52.下列選項中不是結構化程序基本結構的是

A.順序結構B.跳轉分支結構C.選擇結構D.循環(huán)結構

53.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:printf("*\n");casec:printf("**\n");}

54.執(zhí)行下列程序段后,變量a,b,c的值分別是()。intx=5,y=4;inta,b,c;a=(--x==y++)?x:++y;b=++x;c=y;

A.a=5,b=5,c=5

B.a=4,b=5,c=5

C.a=5,b=6,c=5

D.a=1,b=5,c=6

55.已定義ch為字符型變量,以下賦值語句中錯誤的是

A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';

56.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的運行結果是()。

A.1212B.117C.1111D.127

57.數據的存儲結構是指

A.數據所占的存儲空間量B.數據的邏輯結構在計算機中表示C.數據在計算機中的順序存儲方式D.存儲在外存中的數據

58.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}

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

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

59.下列程序運行后的輸出結果是______。main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);

A.0B.1C.2D.3

60.下列選項中不屬于結構化程序設計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復用

四、選擇題(20題)61.有以下程序

62.

63.以下語句的輸出結果是()。

inta=-1,b=4,k;

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

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

A.1,0,4B.1,0,3C.0,0,3D.0,0,4

64.

65.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對

66.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是()。A.A.isupper(c)B.'A'<=c<='Z'

C.'A'<=c&&c<='Z'

D.c<=('z'-32)&&('a'-32)<=c

67.

有下列程序:

main

{char*p[]={"3697","2584"};

inti,j;longnum=0;

for(i=0;i<2:i++)

{j=0;

while(p[i][j]!=\0)

{if((p[i][j]-\0)%2)num=1O*num+p

[j][j]-0;

j+=2;

}

}

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

}

程序執(zhí)行后的輸m結果是()。

A.35B.37C.39D.3975

68.

以下程序執(zhí)行后sum的值是()。

main

{inti,sum;

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

printf("1%d\n",sum):

}

A.15B.14C.不確定D.0

69.(29)用樹形結構來表示實體之間聯(lián)系的模型稱為()

A.關系模型

B.層次模型

C.網狀模型

D.數據模型

70.下列程序中c的二進制值是()。chara=2,b=4,c;c=a^b>>2;A.00000011B.00010100C.00011100D.00011000

71.下列說法中,不屬于數據模型所描述的內容的是()

A.數據結構B.數據操作C.數據查詢D.數據約束

72.以下選項中非法的表達式是()。

A.a+1=a+1

B.a=b==0

C.(Char.(100+100.

D.7<=X<60

73.

74.

75.已定義以下函數:

fun(int*p)

{return&p;}

該函數的返回值是()。

A.不確定的值

B.形參p中存放的值

C.形參p所指存儲單元中的值

D.形參p的地址值

76.相對于數據庫系統(tǒng),文件系統(tǒng)的主要缺陷有數據關聯(lián)差、數據不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

77.在長度為n的有序線性表中進行順序查找,最壞情況下需要比較的次數是

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

78.

79.有以下程序:

從第一列開始輸入以下數據(<CR>代表一個回車符.:

2743<CR>

程序的輸出結果是()。

A.66877B.668966C.6677877D.6688766

80.

五、程序改錯題(1題)81.下列給定程序中,函數proc的功能是:先將字符串s中的字符按順序存放到t中,然后把S中的字符按正序連接到t的后面。例如,當s中的字符串為WXYZ時,則t中的字符串應為WXYZWXYZ。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

printf("Theresultis:%s\n",t);

}

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數fun,其功能是:刪除字符串中所有的*號。編寫函

數時,不得使用c語言提供的字符串函數。

例如,字符串中的內容為:****A*BC*DEF*G*******刪除*后字符串中的內容應當

是:ABCDEFG。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

參考答案

1.C

2.B此題主要考查scanf函數和gets函數的區(qū)別。答案為B。

3.C

4.C表達式“++k”是先使得k的值自增1后再使用。表達式“k++”是先取得k的值再將k的值自增1。所以C選項中表達式的值為0,而其他3個選項中表達式的值均為1。故本題答案為C選項。

5.A解析:/*與*/之間的信息稱為注釋信息,在C語言中,允許在任何能夠插入空格符的位置插入注釋,但C語言的注釋不能進行嵌套,故選項A正確:在C語言中,函數體是從花括號{開始,到花括號}結束。但沒有規(guī)定花括號{和}只能作為函數體定界符,故選項B錯誤;選項C中前半句是正確的,C程序由一個或多個函數所組成,但不是所有的函數都由用戶自己命名,有些函數,比如主函數main()就不能由用戶來命名,故選C不正確;在C語言中明確規(guī)定每條語句以分號;結束,分號是語句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合題意。

6.C

7.D

8.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進制為0001001000101000,把01252化成二進制為0000001010101010,兩者相與得0000001000101000。

9.D解析:C語言中的文件是流式文件。流式文件是一種無結構文件,即整個文件是一串字符流或二進制流。文件的存取以字符或字節(jié)為單位。

10.A解析:本題考查邏輯與運算符&&。在C語言中使用運算符“&&”連接兩個表達式,也可以表示邏輯與運算符。在C語言中不允許出現(xiàn)a<=b<=c這種格式。

11.B

12.A

13.D第1次循環(huán),a的值為1,滿足條件,執(zhí)行“b+=a;”與“a+=2;”,則b的值變?yōu)?,a的值變?yōu)?。執(zhí)行“a++”,a的值為4,滿足條件進入第2次循環(huán),執(zhí)行完循環(huán)體后,b的值為7,a的值為6。執(zhí)行“a++”,a的值為7,滿足條件進入第3次循環(huán),執(zhí)行完循環(huán)體后,b的值為14,a的值為9。執(zhí)行“a++”,a的值為10。條件不滿足,退出循環(huán)。故本題答案為D選項。

14.C

15.A

16.D第—個if語句a!=1條件為假,所以執(zhí)行dse后的語句r=1。第二個if語句b==2條件成立,執(zhí)行r+=2,r的值變?yōu)?,第三個if語句c!=3條件為假,所以不做任何操作。執(zhí)行下面的r+=3操作,r的值變?yōu)?。判斷第四個訌條件,d==4條件成立,執(zhí)行r+=4操作,結果為10。

17.D

18.A解析:數據流圖包括四個方面,即加工(輸入數據經加工變換產生輸出)、數據流(沿箭頭方向傳送數據的通道,一般在旁邊標注數據流名)、存儲文件(數據源)(表示處理過程中存放各種數據的文件)、源和潭(表示系統(tǒng)和環(huán)境的接口,屬系統(tǒng)之外的實體),不包括選項中的控制流。

19.A程序中的if循環(huán)是固定地執(zhí)行8次,屬于計數器,程序是從中隨機抽取一個數,然后對5進行求余再輸出,共抽取8個數。所以答案為A。

20.D解析:本題主要是考查帶參數的宏定義及其相關運算。本題中宏運算過程如下: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。

21.外模式外模式解析:數據庫系統(tǒng)的三級模式分別是內模式、概念模式和外模式。其中,物理模式給出了數據庫的物理存儲結構和存取方法;概念模式是數據庫系統(tǒng)中全局數據邏輯結構的描述;外模式是用戶的數據視圖,也就是用戶所見到的數據模式。

22.AB

23.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數據以及相關文檔的完整集合。

24.str[i]或str+iistr[i]或str+i\r\ni

25.(-1)*ffun(10)(-1)*f\r\nfun(10)解析:本題利用一個fun函數來完成題目要求的計算。程序中變量f起的作用是控制i*f的符號,偶數位都為負值,第一處填(-1)*f。在main函數中要輸出fun函數返回的m值,因此第二處填fun(10),實參10傳給形參n。

26.printf("a=%db=%d"ab);printf('a=%d,b=%d',a,b);解析:根據printf函數的格式可知輸出語句應該為:printf('a=%d,b=%d',a,b);

27.k*kk\r\n*k解析:scanf()函數有兩個參數,第一個參數是格式控制部分(格式控制部分是字符串,主要由%號和格式字符組成)第二個參數是一地址列表(地址列表是由多個地址組成,可以是變量的地址,也可以是字符串的首地址)。而第一個空位于scanf()函數的第二個參數處,所以,第一個空應該填地址k。printf()函數有兩個參數,第一個參數是輸出格式字符串(輸出格式字符串是由控制輸出格式的字符和非格式字符組成,通常是字符常量。非格式字符作為輸出數據的間隔,輸出時原樣輸出)第二個參數為一輸出表達式表(輸出表達式表是由若干個需要計算和輸出的表達式組成的,表達式之間用逗號分隔開)。而第二個空位于printf()函數的第二個參數處,所以應該填*k。

28.!knahT!knahT解析:程序中myfun.c被包含在T18.c中進行編譯。fun函數中用getehar函數輸入字符并賦給數組s,每輸入一個字符,數組下標n加1,直到遇到回車鍵時輸入結束。while(n>=0)循環(huán)反序輸出字符中。所以myfun.c文件用于實現(xiàn)字符串反序的功能。

29.結構化設計結構化設計解析:在軟件開發(fā)中,結構化方法包括結構化分析方法、結構化設計方法和結構化程序設計方法。詳細設計階段所采用的是結構化設計方法。

30.k=p;k=p;解析:為要尋找數組中的最大元素的下標,需先預設1個臨時最大元素的下標,并順序逐一考查數組的元素,當發(fā)現(xiàn)當前元素比臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直至考查了數組的全部元素后,這臨時最大元素下標就是數組的最大元素下標。通常預設的最大元素下標是數組的首元素下標,考查是從首元素開始順序向后繼元素考查。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考查的循環(huán)控制變量。當發(fā)現(xiàn)當前元素s[p]比臨時最大元素s[k)更大時,應該用p更新k。所以在空框處應填入代碼“k=p;”。

31.44解析:本題考查函數的遞歸調用。在主函數中第1次調用子函數是調用的fun(11),返回11-fun(9):第2次調用子函數是調用的fun(9),返回9-tim(7);第3次調用子函數是調用的fun(7),返回7-fun(5);第4次調用子函數是調用的fun(5),返回5-fun(3);第5次調用子函數是調用的fun(3),返回3-fun(1);第6次調用子函數是調用的fun(1),返回3。總的返回值是:11-(9-(7-(5-(3-3))))=4。

32.5555解析:本題考查的重點是對宏定義的理解。#define指令定義一個標識符和一個串,編譯程序在對C源程序處理時.發(fā)現(xiàn)該標識符都用該串替換,因此,在語句k=N*N*5將替換成k=M+M*M+M*5后,M被替換成5,從而k=5+5*5+5*5=55。

33.3123,1,2解析:分析程序,第一個if語句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。

34.11解析:直接插入排序是在已排好序的序列中用順序查找法查找插入位置。第5個記錄是15,15和23比較,就知道15應放在原23放的位置,23及其以后的記錄后移。

35.'\0''\\0'解析:本題涉及字符數組和指針的兩個知識點:①在c語言中,字符型數組在存放字符串時會自動在末尾加上字符串結束標識符'\\0',所以題中數組str有6個元素。②ptr指向數組s仕的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

36.a=a+ba=a+b解析:a+=b與a=a+b等價,作用是把變量a的值加b后再賦給變量a。

37.HowdoessheHowdoesshe解析:strcpy(strl,sl):字符串拷貝函數,作用是將字符串sl拷貝到字符數組strl中去。strlen(str):測試字符串str的長度,函數的值為字符串中實際長度,不包括‘\\0’在內。本題中strlen(strl)的值為13,則strcpy(strl+strlen(strl)/2'esshe')相當于strcpy(strl+6'esshe');,因此可得答案為Howdoesshe。

38.100100100100解析:“&”運算符的運算規(guī)則是:兩個二進制數的對應二進制位只要有一個為0,則結果為0;二者都為1時,結果為1。因此,要想保留某位可用1,屏蔽某位用0。

39.file.txt"w"fclose(fp)。file.txt,'w'fclose(fp)。解析:向文件中寫數據,并且該文件是新文件,應當使用文件打開方式'w',文件操作結束時要用函數fclose關閉文件,以防數據丟失。

40.字符串a和b的長度之和字符串a和b的長度之和解析:本題首先通過第一個while循環(huán)計算字符串a的長度,再通過第二個循環(huán),將字符串a和b相連,最后返回連接后的總長度。

41.B解析:本題考核的知識點是自增運算符和自減運算符的使用.程序中i的值用八進制表示(十進制為8),++i是在變量使用前自身先加1,而j--是在變量使用后自身減1。所以,4個選項中B符合題意。

42.D解析:內聚性是一個模塊內部各元素間彼此結合的緊密程度的度量。內聚是從功能角度來度量模塊內的聯(lián)系。內聚共有7類,它們之㈨的內聚性由弱到強排列順序為:偶然內聚、邏輯內聚、時間內聚、過程內聚、通信內聚、順序內聚和功能內聚。

43.D解析:本題考核的知識點是文件的讀寫方式。在C語言中文本文件是以ASCII碼形式存放的,每個字符占一個字節(jié)。由于數據在計算機中是以;進制形式存放的,因此二進制文件中的數據可以直接讀出,而不需要像文本文件那樣把ASCH碼轉換成二進制,因此速度較快。在文本文件中,數據以ASCII碼形式存放的,用戶很難判定一個數據到底占幾個字節(jié),所以不適合使用隨機讀寫方式。數據以二進制形式存放,占有的字節(jié)數是固定的,所以可以進行隨機讀寫,當然也可以順序讀寫。所以,D選項為所選。

44.D

45.C

46.C解析:本題中首先定義一個整型變量a并給它賦初值為3,在表達式中,從右開始執(zhí)行,即先執(zhí)行“a-=a*a;”等價于a=a-a*a即a=3-3*3=-6,此時a的值為-6,接著執(zhí)行“a+=a-;”相當于執(zhí)行a=a+a即a=-6+(-6)=-12,此時a的值為-12。所以,4個選項中選項C符合題意。

47.CC.【解析】線性表是一種線性結構,由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結點沒有前件,最后一個結點沒有后件,其他結點有且只有一個前件和后件,所以選項C.是錯誤的。

48.A解析:轉義字符'\\n'表示換行,'\\\\'表示反斜杠,函數strlen()是計算字符串的長度,不包括文件結束標志('\\0'),函數sizeof()統(tǒng)計字符串所占的字節(jié)數。

49.A解析:本題考查ifelse語句。在intf(a,b)中:第一個if語句,先判斷條件,發(fā)現(xiàn)a>b條件不成立,則執(zhí)行與其配對的else語句;第二個if語句,先判斷條件,發(fā)現(xiàn)a==b條件不成立,則執(zhí)行與其配對的else語句,c=-1。

50.C解析:本題主要考查的知識點是聯(lián)合體的內存使用。聯(lián)合體所占用的內存空間為最長的成員所占用的空間,各個成員分量全部是從低地址方向開始使用內存單元。不能在定義共用體變量時對它初始化。

51.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。

52.B解析:結構化程序由順序結構、選擇結構和循環(huán)結構組成。

53.C解析:switch后的括號中只能是整型或字符型表達式,選項A中使用的是浮點型變量x,故不正確。選項B在switch的括號后面多了一個分號,故也不正確。switch的case標號后只能是常量或常量表達式,而不能是變量,所以選項D也不正確。故應該選擇C。

54.B解析:本題考查自加(++)、自減(--)運算符的使用。“++i,--i”,在使用i之前,先使i的值加1或者減1,再使用此時的表達式的值參與運算:“i++,i--”,先使用此時的i的值參與運算,在使用i之后,再使i的值加1或者減1。

對于第1個表達式--x=4,y++=4。兩者相等,--x==y++為真,所以a=x=4,執(zhí)行完此語句后y的值是5。

第2個表達式b=++x,x的值先加1,然后賦給b,即b=x+1=5第一個表達式c=y=5。

55.A解析:字符型變量用來存放字符常量,且只能存放一個字符。賦值反斜杠線“\\”,必須用轉義字符實現(xiàn),即ch='\\\\',所以選項A)錯誤;字符型變量可以賦0~255之間的ASCII碼值,整型數據和字符型數據有時可以通用,所以選項B)正確;可以將NULL賦給一個字符型變量,NULL代表一個空字符,相當于0,選項C)正確;'\\xaa'表示的是1~2位16進制數所代表的字符,所以選項D)正確。

56.B解析:題目中第1條要替換的語句i1=f(2);展開后是i1=(2*M);再展開為i1=(2*N+1);最后展開為i1=(2*5/1),結果使i1=11。而第2條語句i2=f(1+1);展開后為i2=(1+1*M);再展開為i2=(1+1*N+1);最后展開為i2=(1+1*5+1),結果使i2=7。故應該選擇B。

57.B解析:數據的存儲結構是數據元素在計算機存儲器內的表示。數據的存儲結構是邏輯結構用計算機語言的實現(xiàn),即建立數據的機內表示。

58.C解析:統(tǒng)計1~9九個數中的奇數和,此題考察指向數組的指針。C語言規(guī)定數組名代表數組的首地址,也就是第一個元素的地址。因此*(t+i)代表數組的第i+1個元素。程序運行的結果是1+2+3+4+5+6+7+8+9=25。

59.C

60.D解析:20世紀70年代以來,提出了許多軟件設計方法,主要有①逐步求精:對復雜的問題,應設計一些子目標作過渡,逐步細化;②自頂向下:程序設計時應先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。不要一開始就過多追求眾多的細節(jié),先從最上層總目標開始設計,逐步使問題具體化;⑧模塊化:一個復雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為分目標,再進一步分解為具體的小目標,把每個小目標稱為一個模塊,而可復用是面向對象程序設計的一個優(yōu)點。

61.A第一次循環(huán)i值為3,j值分別為l和2,所以輸出為4和5;第二次循環(huán)i值為2,j值分別為l和2,所以輸出為3和4;第三次循環(huán)i值為l,j值分別為l和2,所以輸出為2和3,答案選擇A)。

62.D

63.D

64.A

65.A\n解釋程序是將源程序(如BASIC)作為輸入,解釋一句后就提交計算機執(zhí)行一句,并不形成目標程序。編譯程序是把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,進行翻譯轉換,產生出機器語言的目標程序,然后再讓計算機執(zhí)行這個目標程序,得到計算結果。

\n

66.B選項B先計算關系表達式“'A'<=c”的值是0還是l,再比較該值與字符'z'之間的大小關系,不能實現(xiàn)題目所要求的功能。

67.D

\n執(zhí)行第一次for循環(huán)時,用表達式p[i][j]!=\0來判斷字符串數組指針P是否到達字符串的結尾,如果沒有到達,繼續(xù)執(zhí)行while中的語句。if語句表示(p[i][j]-\0)除2的余數不為0時,即字符串所有奇數,執(zhí)行后面的語句。所以退出第1次for的循環(huán)體時,輸出為397,執(zhí)行第2次循環(huán)體。對字符串“2584”進行處理,輸出結果為5,因而最后輸出結果為3975。

\n

68.C

\nsum+=i等價于sun+i,在本題中sum沒有賦初值,而題中只輸出sum的值,因此整個結果為不確定值。

\n

69.B

70.A本題主要者查右移運算和按位異或。把b化為二進制數為00000100,右移兩位后為00000001,a的二進制為00000010,兩者異或為00000011。

71.C通俗地講,數據模型就是現(xiàn)實世界的模擬和抽象。數據模型是把現(xiàn)實生活中的具體事務轉換成計算機能夠處理的數據工具。任何一種數據庫系統(tǒng)都必須建立在一定的數據模型之上。由于現(xiàn)實世界的復雜性,不可能直接從現(xiàn)實世界中建立數據模型,所以,人們通常采用如下的處理過程。

現(xiàn)實世界抽象至信息世界,再轉化為機器世界

把整個過程劃分成三個世界和兩個階段。首先要把現(xiàn)實世界抽象為信息世界,并建立信息世界中的數據模型,即概念模型,然后進一步把概念模型轉化為可以在計算機中實現(xiàn)的且最終支持數據庫系統(tǒng)的數據模型?,F(xiàn)實世界,簡單地說,就是人們賴以生存的生活環(huán)境,它是具體事物和抽象概念的總和。信息世界也稱為概念世界,現(xiàn)實世界在人們頭腦中的反映就是信息世界,信息世界不是現(xiàn)實世界的錄像,必須從具體事務出發(fā)抽象其概念。當信息世界進入計算機后,就成為了機器世界。

一般地講,任何一種數據模型都是嚴格定義的概念的集合。這些概念必須能夠精確地描述系統(tǒng)的靜態(tài)特性、動態(tài)特性和完整性約束條件。因此,數據模型通常都是由數據結構、數據操作和完整性約束三個要素組成的。因此本題的正確答案選C。

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

73.A

74.D

75.D&p是p自己的地址值,p所代表的存儲單元里的值為p所指的存儲單元的地址。

76.D解析:文件系統(tǒng)所管理的數據文件基本上是分散的、相互獨立的,因此相對于數據庫系統(tǒng),以此為基礎的數據處理存在3個缺點,數據冗余大、數據的不一致性、程序與數據的相互依賴(簡稱為數據依賴)。注意:文件系統(tǒng)和數據庫系統(tǒng)各自的特點,人工管理階段及數據庫系統(tǒng)三代的特點。

77.A在有序的線性表中進行查找,最差的情況為從表頭查找到表尾都沒有所需要的值。長度為n的線性表從表頭開始每次取出一個值比較,若不符合,再取下一個值,依次比較,一直到最后一個,需要比較n次。

78.D

79.A本題主要考查了字符輸入輸出函數get—char和putchar的使用。getchar函數用來從標準輸入設備上讀人一個字符,putchar(C)函數是將字符變量c中的字符輸出到標準輸出設備上,并且字符可以看作整數參與運算。

80.C

81.\n\t錯誤:t[i]=s[l];

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

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

82.

【考點分析】

要刪除字符串中所有*號需要用循環(huán)語句遍歷字符串,用

判斷語句判斷字符是否為*號,由此可以決定該程序應使用循

環(huán)判斷結構。

【解題思路】

2021-2022年湖南省益陽市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.一個有8個頂點的有向圖,所有頂點的入度出度之和與所有頂點的出度之和的差是()

A.16B.4C.0D.2

2.有以下程序#include<stdio.h>main(){chara[3O],b[30];scanf("%S",a);gets(b);printf("%s\n%s\\n",a,b);}程序運行時若輸入:howareyou?Iamfine<回車>則輸出結果是()。A.howareyou?Iamfine

B.howareyou?Iamfine

C.howareyou?Iamfine

D.howareyou?

3.對以下四個序列用直接插入排序方法由小到大進行排序時,元素比較次數最少的是()

A.89,27,35,78,41,15

B.27,35,41,16,89,70

C.15,27,46,40,64,85

D.90,80,45,38,30,25

4.設有定義“intk=0;”,以下選項的4個表達式中與其他3個表達式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

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

A.C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方

B.花括號"{"和"}"只能作為函數體的定界符

C.構成C程序的基本單位是函數,所有函數名都可以由用戶命名

D.分號是C語句之間的分隔符,不是語句的一部分

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

A.C語言程序必須要有return語句

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

C.C語言程序中,只有int類型的函數可以未經聲明而出現(xiàn)在調用之后

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

7.已知shortint類型變量占用兩個字節(jié),若有定義:shortintx[10]={0,2,4};,則數組x在內存中所占字節(jié)數是()。

A.3B.6C.10D.20

8.設x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

9.C語言中,組成數據文件的成分是()。A.A.記錄

B.數據行

C.數據塊

D.字符(字節(jié))序列

10.表示關系a≤b≤c的C語言表達式為()。

A.(a<=B)&&(b<=C)

B.(a<=B)and(b<=C)

C.(a<=b<=C)

D.(a<=B)&(b<=C)

11.設一棵二叉樹有3個葉子節(jié)點,有8個度為1的節(jié)點,則該二叉樹中總的節(jié)點數為()

A.12B.13C.14D.15E.16F.17

12.不帶頭結點的單鏈表head為空的判定條件是()。

A.head=NULLB.head->next=NULLC.head->next=headD.head!=NULL

13.有以下程序:#include<stdio.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf(“%d,%d\n”,a,b);}程序運行后的輸出結果是()。

A.9,18B.8,11C.7,11D.10,14

14.對一個有A,B,C,D隨機組成的序列進行哈夫曼編碼,據統(tǒng)計,各個元素的概率分別為:P(A)=0.4,P(B)=0.35,P(C)=0.2,P(D)=0.05,請問該編碼的平均期望編碼長度為()bits。

A.1.45B.1.74C.1.85D.1.92

15.下列哪個算法是對一個list排序的最快方法()

A.快速排序B.冒泡排序C.二分插入排序D.線性排序

16.若有以下程序

則程序的輸出結果是

A.3B.7C.6D.10

17.

18.數據流圖用于抽象地描述一個軟件的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是()。

A.控制流B.加工C.數據存儲D.源和潭

19.有以下程序段:inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){casel:case3:printf("%d\n",n);break;case2:case4:print?("%d\n",n);continue;case():exit(0);}printf("%d\n",n);}以下關于程序段執(zhí)行情況的敘述,正確的是()。A.for循環(huán)語句固定執(zhí)行8次

B.當產生的隨機數n為4時結束循環(huán)操作

C.當產生的隨機數n為1和2時不做任何操作

D.當產生的隨機數n為0時結束程序運行

20.執(zhí)行下列程序后,輸出的結果是()。

#include<stdio.h>

#defineS(X)X*X

voidmain()

{ihta=9,k=3,m=2;

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

printf("%d",A);

}

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

二、2.填空題(20題)21.數據庫系統(tǒng)其內部分為三級模式,即概念模式、內模式和外模式。其中,______是用戶的數據視圖,也就是用戶所見到的數據模式。

22.下面程序的輸出結果是【】。

main()

{inti=3,j=2;

char*a="DCBA";

printf("%c%c\n",a[i],a[j])

}

23.軟什是程序、數據和______的集合。

24.mystrlen函數的功能是計算str所指字符串的長度,并作為函數值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

25.以下程序的功能是調用函數fun計算:m=1-2+3-4+…+9-10,并輸出結果。請?zhí)羁铡?/p>

#include<stdio.h>

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;f=【】;}

returnm;

}

main()

{printf("m=%d\n",【】);}

26.若變量a,b已定義為int類型并分別賦值21和55,要求用printf函數以a=21,b=55的形式輸出,請寫出完整的輸出語句行:【】。

27.設有定義:intn,*k=&n;以下語句將利用指針變量k讀寫變量n中的內容,請將語句補充完整。

scanf("%d",【】);

printf("%d\n",【】);

28.有兩個C程序文件T18.c和myfun.c同在VC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();prinff("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!:'\n')s[n++]=c;

n--;

while(n>=0)prinff("%c",s[n--]);

}

當編譯連接通過后,運行程序T18時,輸入"Thank!”,則輸出結果是【】。

29.在軟件開發(fā)中,結構化方法包括結構化分析方法、結構化設計方法和結構化程序設計方法。詳細設計階段所采用的是【】方法。

30.下面程序的功能是輸出數組s中最大元素的下標,請?zhí)羁铡?/p>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

printf("%d\n",k);}

31.下列程序的輸出結果是______。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0‖x==1)

return3;

else

p=x-fun(x-2);

returnp;

}

voidmain()

{printf("\n%d",fun(11));

32.執(zhí)行以下程序的輸出結果是()。

#include<stdio.h>

#defineM5

#defineNM+M

main()

{intk;

k=N*N*5;printf(”%d\n",k);

}

33.下列程序的輸出結果是______。

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

34.對一組記錄{54,38,96,23,15,72,60,45,83}進行直接插入排序時,當插入第5個記錄到有序表時,尋找插入位置需比較【】次。

35.設有下列的程序段:

charstr[]="Hello";

char*ptr;

ptr=-str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

36.與表達式a+=b等價的另一書寫形式是______。

37.以下程序的輸出是【】。

main()

{

charstr1[]=Howdoyoudo",*p=strl;

strcpy(str1+strlen(str1)\2"esshe");

pfinff("%s\n",p1);

}

38.有定義chara,b;若想通過&運算符保留a對應的二進制數的第3位和第6位的值,其余位置0,則b的二進制數應是【】。

39.下面程序把從終端讀入的文本(用#作為文本結束標志)復制到一個名為file.txt的新文件中。補足所缺語句。

main()

{charch;

FILE*fp;

if((fp=fopen(______))=NULL)exit(0);

while((ch=getchar())!='#')

fputc(ch,fp);

______;

}

40.函數fun的返回值是【】。

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')num++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

三、1.選擇題(20題)41.以下程序輸出的結果是#include<stdio.h>main(){inti=010,j=10;printf("%d,%d\n",++i,j--);}

A.11,10B.9,10C.010,9D.10,9

42.模塊本身的內聚是模塊獨立性的重要性度量因素之一。在7類內聚中,具有最強內聚的一類是__________。

A.順序性內聚B.過程性內聚C.邏輯性內聚D.功能性內聚

43.以下敘述中不正確的是

A.C語言中的文本文件以ASCII碼形式存儲數據

B.C語言中對二進制位的防問速度比文本文件快

C.C語言中,隨機讀寫方式不使用于文本文件

D.C語言中,順序讀寫方式不使用于二進制文件

44.若輸入60和13,以下程序的輸出結果是()#defineSURPLUS(a,b)((a)%(b))main(){inta,b;scanf("%d,%d",&a,&b);printf("%d\n",SURPLUS(a,b));}

A.60B.13C.73D.8

45.在下列選項中,沒有構成死循環(huán)的程序段是_____。

A.inti=100;while(1){i=i%100+1;if(i>100)break;}

B.for(;;);

C.intk=1000;do{++k;}while(k>=1000);

D.ints=36:while(s);--s;

46.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。

A.-3B.9C.-12D.6

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

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

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

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

D.線性表可以是空表

48.下列程序的輸出結果是()。#include<stdio.h>#include<string.h>main(){chara[]="\n123\\";printf("%d,%d\n",strlen(a),sizeof(a));}

A.5,6B.5,5C.6,6D.6,5

49.下列程序的輸出結果是()。#include<stdio.h>main(){inta=2,b=3,p;p=f(a,b);printf("%d",p);}intf(a,b){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}

A.-1B.0C.1D.2

50.對于下列定義,不正確的敘述是()。uniondata{inta;charb;doublec;}x=y;

A.變量x所占內存的長度等于成員c的長度

B.變量x的地址和它的各成員地址都是相同的

C.可以在定義時對x初始化

D.不能對變量x賦值,故x=y非法

51.設有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。

A.p=1;B.*q=2;C.q=p;D.*p=5;

52.下列選項中不是結構化程序基本結構的是

A.順序結構B.跳轉分支結構C.選擇結構D.循環(huán)結構

53.若有定義:floatx=1.5;inta=1,b=3,c=2;則正確的switch語句是()。

A.switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+b){case1:printf("*\n");case2+1:printf("**\n");}

D.switch(a+b){case1:printf("*\n");casec:printf("**\n");}

54.執(zhí)行下列程序段后,變量a,b,c的值分別是()。intx=5,y=4;inta,b,c;a=(--x==y++)?x:++y;b=++x;c=y;

A.a=5,b=5,c=5

B.a=4,b=5,c=5

C.a=5,b=6,c=5

D.a=1,b=5,c=6

55.已定義ch為字符型變量,以下賦值語句中錯誤的是

A.ch='\';B.ch=62+3;C.ch=NULL;D.ch='\xaa';

56.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的運行結果是()。

A.1212B.117C.1111D.127

57.數據的存儲結構是指

A.數據所占的存儲空間量B.數據的邏輯結構在計算機中表示C.數據在計算機中的順序存儲方式D.存儲在外存中的數據

58.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}

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

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

59.下列程序運行后的輸出結果是______。main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);

A.0B.1C.2D.3

60.下列選項中不屬于結構化程序設計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復用

四、選擇題(20題)61.有以下程序

62.

63.以下語句的輸出結果是()。

inta=-1,b=4,k;

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

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

A.1,0,4B.1,0,3C.0,0,3D.0,0,4

64.

65.計算機高級語言程序的運行方法有編譯執(zhí)行和解釋執(zhí)行兩種,以下敘述中正確的是A.C語言程序僅可以編譯執(zhí)行B.C語言程序僅可以解釋執(zhí)行C.C語言程序既可以編譯執(zhí)行又可以解釋執(zhí)行D.以上說法都不對

66.已有定義:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判斷c中的字符是否為大寫字母的表達式是()。A.A.isupper(c)B.'A'<=c<='Z'

C.'A'<=c&&c<='Z'

D.c<=('z'-32)&&('a'-32)<=c

67.

有下列程序:

main

{char*p[]={"3697","2584"};

inti,j;longnum=0;

for(i=0;i<2:i++)

{j=0;

while(p[i][j]!=\0)

{if((p[i][j]-\0)%2)num=1O*num+p

[j][j]-0;

j+=2;

}

}

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

}

程序執(zhí)行后的輸m結果是()。

A.35B.37C.39D.3975

68.

以下程序執(zhí)行后sum的值是()。

main

{inti,sum;

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

printf("1%d\n",sum):

}

A.15B.14C.不確定D.0

69.(29)用樹形結構來表示實體之間聯(lián)系的模型稱為()

A.關系模型

B.層次模型

C.網狀模型

D.數據模型

70.下列程序中c的二進制值是()。chara=2,b=4,c;c=a^b>>2;A.00000011B.00010100C.00011100D.00011000

71.下列說法中,不屬于數據模型所描述的內容的是()

A.數據結構B.數據操作C.數據查詢D.數據約束

72.以下選項中非法的表達式是()。

A.a+1=a+1

B.a=b==0

C.(Char.(100+100.

D.7<=X<60

73.

74.

75.已定義以下函數:

fun(int*p)

{return&p;}

該函數的返回值是()。

A.不確定的值

B.形參p中存放的值

C.形參p所指存儲單元中的值

D.形參p的地址值

76.相對于數據庫系統(tǒng),文件系統(tǒng)的主要缺陷有數據關聯(lián)差、數據不一致性和()。

A.可重用性差B.安全性差C.非持久性D.冗余性

77.在長度為n的有序線性表中進行順序查找,最壞情況下需要比較的次數是

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

78.

79.有以下程序:

從第一列開始輸入以下數據(<CR>代表一個回車符.:

2743<CR>

程序的輸出結果是()。

A.66877B.668966C.6677877D.6688766

80.

五、程序改錯題(1題)81.下列給定程序中,函數proc的功能是:先將字符串s中的字符按順序存放到t中,然后把S中的字符按正序連接到t的后面。例如,當s中的字符串為WXYZ時,則t中的字符串應為WXYZWXYZ。

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

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

voidproc(char*s,char*t)

{

inti,s1;

s1=strlen(s);

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

//****found****

t[i]=s[s1];

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

t[s1+i]一s[i];

t[2*s1]=\O0;

}

voidmain

{

chars[100],t[100];

system("CLS");

print{("\nPleaseenterstrings:");

scanf("%s",s);

proc(s,t);

printf("Theresultis:%s\n",t);

}

六、程序設計題(1題)82.規(guī)定輸入的字符串中只包含字母和*號。編寫函數fun,其功能是:刪除字符串中所有的*號。編寫函

數時,不得使用c語言提供的字符串函數。

例如,字符串中的內容為:****A*BC*DEF*G*******刪除*后字符串中的內容應當

是:ABCDEFG。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。

參考答案

1.C

2.B此題主要考查scanf函數和gets函數的區(qū)別。答案為B。

3.C

4.C表達式“++k”是先使得k的值自增1后再使用。表達式“k++”是先取得k的值再將k的值自增1。所以C選項中表達式的值為0,而其他3個選項中表達式的值均為1。故本題答案為C選項。

5.A解析:/*與*/之間的信息稱為注釋信息,在C語言中,允許在任何能夠插入空格符的位置插入注釋,但C語言的注釋不能進行嵌套,故選項A正確:在C語言中,函數體是從花括號{開始,到花括號}結束。但沒有規(guī)定花括號{和}只能作為函數體定界符,故選項B錯誤;選項C中前半句是正確的,C程序由一個或多個函數所組成,但不是所有的函數都由用戶自己命名,有些函數,比如主函數main()就不能由用戶來命名,故選C不正確;在C語言中明確規(guī)定每條語句以分號;結束,分號是語句不可缺少的一部分,故選項D不正確。所以,4個選項中選項A符合題意。

6.C

7.D

8.A本題考查按位與運算,按位與就是相同為1,不同為0,把x

溫馨提示

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

評論

0/150

提交評論