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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.若有說明charc[7]={'s','t','r','i','n','g'};則對元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

2.若有以下語句:typedefstructS{intg;charh;}T;以下敘述中正確的是()。A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

3.在一個單鏈表HL中,若要在指針q所指結(jié)點的后面插入一個由指針p所指向的結(jié)點,則執(zhí)行____。

A.q一>next=p一>next;p一>next=q;

B.q一>next=p一>next;p一>next=q;

C.p一>next=q一>next;q=p;

D.p一>next=q一>next;q一>next=p;

4.有以下程序:#include<stdio.h>main(){inti,data;scanf(“%d”,&data);for(i=0;i<8;i++){if(i<=data)continue;printf(“%d,”,i);}}程序運行時輸入5并按〈Enter〉鍵,則程序輸出結(jié)果為()。

A.5,6,7,B.0,1,2,3,4,C.6,7,D.6,7,8,

5.已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)

B.一個文件指針,指向要讀的文件

C.一個指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置

D.一個存儲區(qū),存放要讀的數(shù)據(jù)項

6.一個有7個頂點的完全三部圖,至少有存在幾條邊()

A.10B.11C.15D.16

7.若一組記錄的排序碼為(7,9,3,5,1,2,10),則利用堆排序的方法建立的初始堆為()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

8.下列各排序法中,最壞情況下的時間復雜度最低的是()

A.希爾排序B.快速排序C.堆排序D.冒泡排序

9.如果有n個節(jié)點用二叉樹來存儲,那么二叉樹的最小深度為()

A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2

10.有以下程序:#include<stdio.h>main(){char*s=“01234”;while(*(++s)!=‘\0’){switch(*s-‘0’){case0:case1:putchar(*s+1);break;case2:putchar(*s+1);break;case3:putchar(*s+1);default:putchar(*s+1);break;}}}程序運行后的輸出結(jié)果是()。

A.22345B.2345C.12345D.23445

11.一個模塊直接調(diào)用的下層模塊的數(shù)目稱為模塊的()。

A.扇入數(shù)B.扇出數(shù)C.寬度D.作用域

12.

13.設一個廣義表中結(jié)點的個數(shù)為n,則求廣義表深度算法的時間復雜度為____。

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

14.下列程序段的時間復雜度為()。A.O(n)B.O(n-1)C.O(n2)D.O(log2n)

15.具有n個結(jié)點的連通圖至少有()條邊。

A.n-1B.nC.n(n-1)/2D.2n

16.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

17.排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進行比較,將其放入已排序序列的正確位置上的方法,稱為()。

A.希爾排序B.冒泡排序C.插入排序D.選擇排序

18.下列關(guān)于信息系統(tǒng)的敘述中,錯誤的是()。

A.廣播電視是一種雙向的、點到多點的信息交互系自

B.網(wǎng)絡聊天是一種雙向的,以信息交互為主要目的系統(tǒng)

C.電話是一種雙向的、點對點的、以信息交互為主要的的系統(tǒng)

D.雷達是一種以感測和識別為主要目的的系統(tǒng)

19.

20.if語句的基本形式是“if(表達式)語句”,以下關(guān)于“表達式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

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

main()

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

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

22.以下程序的輸出結(jié)果是()。

#include<stdio.h>

main()

{intx=27;

while(x>20&&x<30)

{x++;

if(x/3){x++;break;}

else

continue;

}

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

}

23.如果兩個8位二進制數(shù)00010101與01000111相加,其結(jié)果用十進制表示為【】。

24.對于長度為n的順序存儲的線性表,當隨機插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。

25.在關(guān)系模型中,二維表的行稱為______。

26.以下程序的輸出結(jié)果是【】。

main()

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

inti;

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

printf("\n");}

27.設有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

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

28.下列程序的輸出結(jié)果是______。

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

29.以下函數(shù)用來在w數(shù)組中插入x。n所指向的存儲單元中存放w數(shù)組中字符個數(shù)。數(shù)組w中的字符已按從小到大的順序排列,插入后數(shù)組w中的字符仍有序。請?zhí)羁铡?/p>

voidfun(char*w,charx,int*n)

{inti,p;

p=0;

w[*n]=x;

while(x>w[p])p++;

for(i=*n;i>p;i--)w[i]=【】;

w[p]=x;

++*n;}

30.執(zhí)行下面程序后,輸出結(jié)果是【】。

main()

{chars[12]="verygood!";

printf("%d",strlen(s));

}

31.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

32.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達式為:______。

33.以下程序的輸出結(jié)果是【】。

main()

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

inti;

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

printf("\n");}

34.軟件需求規(guī)格說明書應具有完整性、無歧義性、正確性、可驗證性、可修復性等特性,其中最重要的是()。

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

36.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

37.設一棵完全二叉樹共有700個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。

38.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

main()

{inti,j,x;

for(j=4;j>0;j--)

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

{x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

}

39.設有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內(nèi)容。

fw=fopen("readme.txt",【】);

40.下列程序的運行結(jié)果是______。

#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");

}

三、1.選擇題(20題)41.有以下程序main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<=i;j++)printf("%4c",");for(j=______;j<4;j++)printf("%4d",num[i][j]);prrintf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應填入的是

A.i-1B.iC.i+1D.4-i

42.以下能正確定義二維數(shù)組的是()。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1},{2},{3,4}}:

43.若有說明語句:double*p,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

44.下列if語句非法的是()

A.if(a=B)x=1;

B.if(!3.9)

C.if('a'&&x==y(tǒng))y++;

D.if(x>y)scanf("%f",&y)elsescanf("%f",&x);

45.有如下定義:structperson{charname[9];intage;};structpersonclass[10]={"Johu",17,"Paul",19,"Mary",18,"Adam",16,};根據(jù)上述定義,能輸出字母M的語句是______。

A.printf("%c\n",class[3].name);

B.printf("%c\n",class[3].name[1]);

C.printf("%c\n",class[2].name[1]);

D.printf("%c\n",class[2].name[O]);

46.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

47.設intx=1,y=1;表達式(:x||y--)的值是______。

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

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

A.xyzabcABB.zabcABCC.yzabcABCD.xycbcABC

49.在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示()。

A.模塊之間的調(diào)用關(guān)系B.程序的組成成份C.控制程序的執(zhí)行順序D.數(shù)據(jù)的流向

50.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

51.下列屬于不合法的C語言整型常量的選項是()。A.-32679

B.0Xabc

C.069

D.3.00E+02B.C.D.

52.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為``

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

53.有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是()。

A.5B.24C.32D.40

54.若要打開A盤中user子目錄下名為aaa.txt的文本文件進行讀、寫操作,下面符合此要求的函數(shù)調(diào)用是()。

A.fopen("A:\user\aaa.txt","r")

B.fopen("A:\\user\\aaa.txt","r=")

C.fopen("A:\user\aaa.txt","rb")

D.fopen("A:\\user\\aaa.txt","w")

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

A.指令由操作數(shù)和操作碼兩部分組成

B.常用參數(shù)xxMB表示計算機的速度

C.計算機的一個字長總是等于兩個字節(jié)

D.計算機語言是完成某一任務的指令集

56.______是構(gòu)成C語言程序的基本單位。

A.函數(shù)B.過程C.子程序D.子例程

57.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運行后的輸出結(jié)果是______。

A.12353514B.12353513C.12343514D.12343513

58.有以下程序,程序運行后的輸出結(jié)果是______。intf(intb[][4]){inti,j,s=0;for(j=0;j<4;i++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6,},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(A));}

A.22B.11C.18D.16

59.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

60.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是

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

四、選擇題(20題)61.下列與char*pa[3][5]={"a","bb","ccc"}等價的是()。

A.char(*pa)[][5]={"a","bb","ccc"}

B.char*pa[3][]={"a","bb","ccc"}

C.charpa[3][]={"a","bb","ccc"}

D.都不等價

62.有以下程序:

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

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

63.利用E-R模型進行數(shù)據(jù)庫的概念設計,可以分成3步:首先設計局部E-R模型,然后把各個局部E-R模型綜合成一個全局的模型,最后對全局E-R模型進行(),得到最終的E-R模型。

A.簡化B.結(jié)構(gòu)化C.最小化D.優(yōu)化

64.有以下程序:

#include<stdio.h>

main()

{intx=1,y=0;

if(!x)y++;

elseif(x==0)

if(x)y+=2;

elsey+=3;

Drintf("%d\n"。v);

}

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

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

65.下面描述中,不屬于軟件危機表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

66.以下程序的輸出結(jié)果是()。

inta=5;

floatx=3.14;

a*=x*(‘E’-‘A’);

printf(“%f\n”,(float)a);

A.62.000000B.62.800000C.63.000000D.62

67.

下列程序執(zhí)行后的輸出結(jié)果是()。

main

{inta[3][3],*p,i};

p=&a[0][0];

for(i=p;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

A.3B.6C.9D.隨機數(shù)

68.有以下程序:

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

A.11B.9C.6D.7

69.有以下程序

70.有以下程序:

#include<stdio.h>

main()

{inta=-2,b=0;

while(a++++b);

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

}

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

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

71.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

72.設intx=7,則~x的值是()。

A.-8B.7C.-1D.1

73.對于一個正常運行的C程序,以下敘述中正確的是()。A.程序的執(zhí)行總是從main函數(shù)開始

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束

C.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

74.

75.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是()。

A.輸出字符a的ASCII碼B.輸出字符c的ASCII碼C.輸出字符cD.程序出錯

76.以下不能正確定義二維數(shù)組的選項是A.inta[2][2]={{1},{2}};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3};

D.inta[2][]={{1,2},{3,4}};

77.

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

#include<stdio.h>

voidmain

{ints=0,k;

for(k=7;k>1;k--)

{switch(k)

{case1:

case4:

case7:

s++:

break;

case2:

case3:

case6:break;

case0:

case5:

s+=2:

break;

}}

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

}

A.s=3B.s=4C.s=5D.無輸出結(jié)果

78.

79.

80.

五、程序改錯題(1題)81.假如整數(shù)數(shù)列中的數(shù)不重復,并存放在數(shù)組中。下列給定的程序中,函數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個數(shù)。請修改程序中的錯誤,使它能夠得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.函數(shù)fun的功能是:將S所指字符串中除下標為偶數(shù)同時ASCIl碼值也為偶數(shù)的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl23456”,其中字符A的ASCIl碼值為奇數(shù),因此應當刪除;字符8的ASCIl碼值為偶數(shù),但在數(shù)組中的下標為奇數(shù),因此也應當刪除;字符2的ASCIl碼值為偶數(shù),在數(shù)組中的下標也為偶數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是‘'246”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.C

2.B解析:語句typedefstructS{intg;charh;}T的作用是用T作為struetS{intg;charh;)的簡寫,所以選B。

3.D

4.Cmain函數(shù)首先定義一個整型變量data,使用scanf函數(shù)輸入一個整數(shù)賦給data。接著執(zhí)行for循環(huán),i的值為0~7。當i的值不大于data的值時,使用continue語句跳過當前循環(huán),進入下一輪循環(huán)。若從鍵盤輸入5,data的值為5,i取值為0~5時,都不執(zhí)行printf語句。當i取值為6、7時,執(zhí)行printf語句,輸出6,7。故本題答案為C選項。

5.C解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:fread(buffer,size,count,fp)。fread函數(shù)參數(shù)說明:“buffer”是一個指引,對fread來說,它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。

6.B

7.B

8.C

9.A

10.D程序首先定義一個字符指針s,指向一個常量字符串“01234”;接著while循環(huán)的循環(huán)條件每次將s指向下一個字符,然后判斷s指向的字符是否為空字符“\\0”,若不是,則執(zhí)行循環(huán)體,將當前字符與‘0’”的ASCII差值作為switch語句的常量表達式,執(zhí)行對應的case語句。指針s指向空字符“\\0”時,則終止循環(huán),程序結(jié)束。從常量字符串“01234”可知,循環(huán)過程中s指向的各個字符分別是1、2、3、4。當*s是字符“1”時,*s-‘0’的值為1,執(zhí)行case1語句,輸出*s+1,即字符“2”;當*s是字符“2”時,*s-‘0’的值為2,執(zhí)行case2語句,輸出*s+1,即字符“3”;當*s是字符“3”時,*s-‘0’的值為3,執(zhí)行case3和default語句,兩次輸出*s+1,即字符“4”;當*s是字符“4”時,*s-‘0’的值為4,執(zhí)行default語句,輸出*s+1,即字符“5”。綜上,程序輸出結(jié)果為23445。故本題答案為D選項。

11.B扇入數(shù)是指調(diào)用一個給定模塊的模塊個數(shù)。扇出數(shù)是指由一個模塊直接調(diào)用的其他模塊數(shù),即一個模塊直接調(diào)用的下層模塊的數(shù)目。本題答案為B選項。

12.B

13.D

14.B

15.A

16.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。

17.C

18.A廣播/電視是一種單向的、點對多點(面)的以信息傳遞為主要目的的系統(tǒng)。

19.D\r\n

20.Dif語句中的表達式可以是任意合法的數(shù)值,如常量、變量表達式。故本題答案為D選項。

21.11解析:本題是一個陷阱題。在if語句的判斷表達式中,使用的不是邏輯運算符==而是賦值運算符=,使該表達式返回的結(jié)果正好相反。如果是c==a,則結(jié)果為假。但是c=a則是將a賦給c,且表達式的結(jié)果是賦值之后的c的值,因此結(jié)果為1是真.故最后輸出c的值1。

22.2929解析:本題考查while循環(huán)和++運算,x=27符合循環(huán)條件,執(zhí)行循環(huán)體中x++后,x=28,if條件也成立,執(zhí)行x++后退出,x的值增1,結(jié)果x=29。

23.92

24.n/2n/2解析:刪除—個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2:所以總體平均移動元素個數(shù)為n/2。

25.元組元組解析:在關(guān)系型數(shù)據(jù)庫中,用二維表來表示關(guān)系,二維表的表名即關(guān)系名,二維表的行稱為關(guān)系的元組,二維表的列,稱為關(guān)系的屬性。

26.SOSO解析:題中需要注意兩個問題:一是for循環(huán)的修正表達式共執(zhí)行兩次“i-”操作;二是*p[i]是對某個字符的引用。

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

28.無定值無定值解析:for(i=1;i<7;i++)決定了循環(huán)次數(shù)為6次,每次執(zhí)行的操作是sum+=i,但由于sum沒有初始化,并不知道sum的初值是多少,所以結(jié)果無定值。

29.w[i-1]w[i-1]解析:在用數(shù)組實現(xiàn)的有序序列中插入內(nèi)容,必須先尋找插入位置。插入位置找到后,需將插入位置之后的元素向后移動一個位置,留出插入點。最后,將元素插入,并增加序列的元素個數(shù)。函數(shù)為了簡化尋找插入位置循環(huán)的循環(huán)條件,預先在序列的最后置入插入值。插入位置之后的元素向后移動一個位置必須從最后一個元素開始往前逆序移動,是將前一個元素向后移,所以在空框處應填入w[i-1]。

30.1010解析:strlen(s)函數(shù)的返回值為字符串s包含的字符個數(shù)<不計最后的'\\0')。

31.調(diào)試調(diào)試

32.p+=2*(p++)p+=2,*(p++)解析:由題可知a[2]=3,因此只要使指針p指向a[3],然后再引用指針的值就可以了。

33.SOSO解析:考查用指針引用字符串數(shù)組中元素的方法。題中需要注意兩個問題:一是for循環(huán)的修正表達式共執(zhí)行兩次'i--'操作;二是*p[i]是對某個字符的引用。

34.正確性正確性解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,通過建立完整的信息描述、詳細的功能和行為描述、性能需求和設計約束的說明、合適的驗收標準,給出對目標軟件的各種需求。軟件需求規(guī)格說明書的特點:①正確性;②無歧義性;③完整性;④可驗證性;⑤一致性;⑥可理解性;⑦可追蹤性。其中最重要的是正確性。

35.概念設計階段概念設計階段解析:數(shù)據(jù)庫設計分為以下六個設計階段:需求分析階段、概念設計階段、邏輯設計階段、物理設計階段、實施階段及數(shù)據(jù)庫運行和維護階段。

36.yearleap=1leap

37.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點。因此,設一棵完全二叉樹具有n個結(jié)點,若n為偶數(shù),則在該二叉樹中有n/2個葉子結(jié)點以及n/2-1個度為2的結(jié)點,還有1個是度為1的結(jié)點:若n為奇數(shù),則在該二叉樹中有[n/2]+1個葉子結(jié)點以及[n/2]個度為2的結(jié)點,沒有度為1的結(jié)點。本題中,完全二叉樹共有700個結(jié)點,700是偶數(shù),所以,在該二叉樹中有350個葉子結(jié)點以及349個度為2的結(jié)點,還有1個是度為1的結(jié)點。所以,本題的正確答案為350。

38.ii解析:外循環(huán)是遞減的,方陣中的每個元素為(j-1)*4+i,因此空格處填i。

39.aa解析:本題考查的是文件的打開方式。要向文本文件的末尾續(xù)寫內(nèi)容,需要使用方式“a”(追加)打開文件。

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

41.B解析:本題考查循環(huán)嵌套,外層循環(huán)控制每一行的輸出,內(nèi)層循環(huán)的第一個for循環(huán)控制空格的輸出,第二個for循環(huán)控制的輸出。而在第i行,輸出的第一個元素是num[i][i],所以下劃線處應填i。

42.B解析:(1)二維數(shù)組的定義

二維數(shù)組的定義方式為:類型說明符數(shù)組名[常量表達式][常量表達式]。

二維數(shù)組在內(nèi)存中是按行優(yōu)先的順序存放的,即先存放第一行的元素,再存放第二行的元素,依次類推。

(2)二維數(shù)組元素的引用

二維數(shù)組元素的表示形式為:數(shù)組名[下標][下標],下標可以是整型常量或整型表達式其范圍為:0~(常量表達式-1)。

(3)二維數(shù)組的初始化

可以用以下方法對二維數(shù)組元素初始化:

①分行給二維數(shù)組賦初值

例如:inta[2][2]={{1,2},{3,4}};

這種賦值方式比較直觀,把第1個大括號內(nèi)的數(shù)據(jù)賦給第1行的元素,第2個大括號內(nèi)的數(shù)據(jù)賦給第2行的元素,即按行賦值。

②可以將所有數(shù)據(jù)寫在一個大括號內(nèi),按數(shù)組排列的順序?qū)Ω鱾€元素賦初值。

③可以對部分元素賦初值,沒有初始化的元素值為0。

④如果對全部數(shù)組元素賦初值,則定義數(shù)組時對第一維的長度可以不指定,但第二維的長度不能省略。

43.D解析:double*p,a;語句表示定義了一個指向雙精度型的指針變量p和雙精度型變量a,而語句p=&a表示將變量a的地址賦給指針變量p;scanf'('%1f',p)表示用鍵盤輸入的數(shù)賦給指針變量p所指向的地址單元中。scanf()函數(shù)要求在輸入double型數(shù)據(jù),格式控制符必須用%1f(或%1e)。否則,數(shù)據(jù)不能正確輸入。所以選項D)為正確答案。

44.D

45.D解析:該題主要考查C語言數(shù)組下標的概念,即C語言中數(shù)組的下標是從。開始的。

46.A解析:條件表達式“a?b:c”的含義是:當a為真時,其值等于表達式b的值,當a為假時,其值等于表達式c的值。第一個表達式:w=6<x=4為假,所以返回x的值,即m=x=4;第二個表達式:m=4<y=3為假,所以返回y的值,即m=y=3。

47.B

48.D

49.D解析:在數(shù)據(jù)流圖中,用標有名字的箭頭來表示數(shù)據(jù)流。

50.B

51.C解析:C語言中,以0開頭的整型常量表示八進制數(shù),而八進制數(shù)只能由‘O’~‘7’八個字符組成,選項C中出現(xiàn)了數(shù)字9是錯誤的。故應該選擇C。

52.D解析:假設線性表的長度為n,則在最壞情況下,冒泡排序要經(jīng)過n/2遍的從前往后的掃描和n/2遍的從后往前的掃描,需要的比較次數(shù)為n(n-1)/2。

53.C解析:在for循環(huán)體中,首先判斷自變量i能否被5整除,然后再自加兩次,最后判斷i能否被8整除。當for循環(huán)執(zhí)行到第30次時,i的值為30能被5整除,然后i經(jīng)過兩次自加1運算,值變?yōu)?2,能被8整除,故執(zhí)行“printf('%d',i);”語句,即輸出32。本題的答案為選項C)。

54.B解析:選項A和C在字符串中用到特殊字符'\\',該字符在字符串中用作轉(zhuǎn)義字符的開始,所以不能單獨使用,若要在字符串常量顯示該字符可使用轉(zhuǎn)義字符'\\\\',故選項A和C不正確。選項D中fopen()函數(shù)的第二個參數(shù)w表示以只寫的方式打開文件,不符合題意,故應該選擇B。

55.A

56.A解析:C程序是由函數(shù)構(gòu)成的?!獋€C源程序至少包含—個main函數(shù),也可以包含—個main函數(shù)和若干個其他函數(shù),因此,函數(shù)是C程序的基本單位。

57.A解析:自增運算符“++”,放在變量之前表示在使用變量之前,先使變量的值加1;放在變量之后表示在使用變量之后,再使變量的值加1。第一條輸出語句,先輸出m=12,m再自加1,變成13,n先自加1再輸出,輸出n=35;第二條輸出語句,先輸出n=35,n再自加1,變成36,m先自加1再輸出,輸出m=14。

58.D解析:本題通過函數(shù)調(diào)用對數(shù)組a[0][0]、a[1][1]、a[2][2]、a[0][3]進行求和,然后用return語句返回s的值。

59.D解析:在格式輸入中,要求給出的是編譯的地址,而D)答案中給出的s[1]是一個值的表達式。

60.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正確。

61.D數(shù)組的二維下標不能省,一維的倒是可以省略,題目定義的是數(shù)組指針,A項錯誤,B,C項省略了數(shù)組下標所以錯誤。

62.A在函數(shù)point函數(shù)調(diào)用時,系統(tǒng)自動為函數(shù)的形參P分配內(nèi)存空間,并賦值為實參P的值。當執(zhí)行語句P+=3;時,系統(tǒng)操作的是形參P的內(nèi)存空間,更改形參P的內(nèi)容,而實參指針變量P的值未受影響,即指針變量作為函數(shù)參

63.D解析:在概念設計中按照模塊的劃分畫出每個模塊的E-R圖,然后把這些圖合成一張E-R圖作為全局模型,最后應該對全局E-R圖進行優(yōu)化,看看是否有重復和不合理的地方。不能只是進行簡單的合并。

64.D\n因為x!=0,所以下列的循環(huán)不執(zhí)行,只執(zhí)行y++,最后結(jié)果為0。

\n

65.A軟件危機主要表現(xiàn)在:軟件需求的增長得不到滿足;軟件開發(fā)成本和進度無法控制;軟件質(zhì)量難以保證;軟件不可維護或維護程度非常低;軟件的成本不斷提高;軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應用需求的增長。所以選擇A。

66.A

67.D

\n程序執(zhí)行在for循環(huán),當i=p時,i中放的是P的地址,類型不符合,因此輸出隨機數(shù),故選擇D進項.

\n

68.Cstrcpy:字符串拷貝函數(shù);strlen:求字符串長度函數(shù)(注意:不包含字符串結(jié)束標識符‘、0’);strcat:字符串連接函數(shù)。執(zhí)行完語句strcat(P,r);后,P數(shù)組中存儲的元素為a,b,c,d,a,b,C,d,8;執(zhí)行語句strcpy(P+strlen(q),q);得到的結(jié)果是將q所指向的字符串拷貝至P+strlen(q)開始的存儲位置,因為strlen的值為3,即從P+3開始存儲q中的元素。所以執(zhí)行完strcpy(P+str|en(q),q)語句后,字符數(shù)組P[20]的存儲元素為a,b,c,a,b,o;所以strlen(P)的結(jié)果為6。因此C選項正確。

69.Af函數(shù)將數(shù)組字符串轉(zhuǎn)換為對應的整數(shù),遇見不是數(shù)字字符停止,所以答案選擇A)。

70.D\n輸出的結(jié)果是:-1,1

\n0,2

\n1,2

\n

71.D解析:在C語言的標準中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應該選擇D。

72.A本題主要考查按位求反運算和C語言正負數(shù)的表示,“O”代表正數(shù),“1”代表負數(shù);x=7的二進制為00111,第一個0代表正數(shù),~x為11000,第一個l代表負數(shù),值為8。

73.A程序的執(zhí)行總是從main函數(shù)開始,在main函數(shù)中結(jié)束,其他函數(shù)通過main函數(shù)調(diào)用執(zhí)行,所以A)正確。

74.C

75.D解析:因為字符數(shù)組s1)中的數(shù)組名s表示的是一個地址常量。所以語句“s+=2;”不能將指針在當前位置的基礎(chǔ)上再向后移動兩位,因而程序編譯時出錯。

76.D解析:選項A)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,0;選項B)定義的數(shù)組按行各數(shù)組元素分別是:1,2,3,4;選項C)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,3;因為定義數(shù)組時,第一維的長度可以不指定,第二維的長度必須指定,所以選項D)錯。

77.B

\n運行程序,當k=7時switch(7)執(zhí)行case:7,s++后s=1,break跳出。k--,k=7繼續(xù)循環(huán)switch(6),執(zhí)行case6;直接跳出循環(huán),k--變成5,繼續(xù)循環(huán)switch(5),執(zhí)行case5后面的語句s+=2,也相當于s=s+2,此時s為3,break跳出,k變?yōu)?,繼續(xù)循環(huán),執(zhí)行case4為空,繼續(xù)執(zhí)行case7;s++為4跳出循環(huán),k--變?yōu)?,繼續(xù)循環(huán),執(zhí)行case3,空語句往下執(zhí)行case6,跳出,k--為2,繼續(xù)循環(huán),執(zhí)行case2;空語句往下執(zhí)行case3,空語句再執(zhí)行case7,跳出循環(huán),k--為1不符合循環(huán),退出,此時S=4。

\n

78.D

79.D

80.C

81.錯誤:arr[i+1]=arr[i];

正確:arr[i]=arr[i+1];

【解析】題目中要求刪除數(shù)列中值為x的元素,需要將數(shù)列中的每一個元素與指定數(shù)值x相比較。如果比較結(jié)果為第i個元素與x相等,則把第i個位置以后的元素前移一個位置,因此,“arr[i+1]=arr[i];”應改為“arr[i]=arr[i+1]”。

82.2021-2022年山西省忻州市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有說明charc[7]={'s','t','r','i','n','g'};則對元素的非法引用是()。

A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]

2.若有以下語句:typedefstructS{intg;charh;}T;以下敘述中正確的是()。A.可用S定義結(jié)構(gòu)體變量B.可用T定義結(jié)構(gòu)體變量C.S是struct類型的變量D.T是structS類型的變量

3.在一個單鏈表HL中,若要在指針q所指結(jié)點的后面插入一個由指針p所指向的結(jié)點,則執(zhí)行____。

A.q一>next=p一>next;p一>next=q;

B.q一>next=p一>next;p一>next=q;

C.p一>next=q一>next;q=p;

D.p一>next=q一>next;q一>next=p;

4.有以下程序:#include<stdio.h>main(){inti,data;scanf(“%d”,&data);for(i=0;i<8;i++){if(i<=data)continue;printf(“%d,”,i);}}程序運行時輸入5并按〈Enter〉鍵,則程序輸出結(jié)果為()。

A.5,6,7,B.0,1,2,3,4,C.6,7,D.6,7,8,

5.已知函數(shù)的調(diào)用形式:fread(buffer,size,count,fp);其中buffer代表的是()。

A.一個整型變量,代表要讀入的數(shù)據(jù)項總數(shù)

B.一個文件指針,指向要讀的文件

C.一個指針,是指向的輸入數(shù)據(jù)放在內(nèi)存中的起始位置

D.一個存儲區(qū),存放要讀的數(shù)據(jù)項

6.一個有7個頂點的完全三部圖,至少有存在幾條邊()

A.10B.11C.15D.16

7.若一組記錄的排序碼為(7,9,3,5,1,2,10),則利用堆排序的方法建立的初始堆為()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

8.下列各排序法中,最壞情況下的時間復雜度最低的是()

A.希爾排序B.快速排序C.堆排序D.冒泡排序

9.如果有n個節(jié)點用二叉樹來存儲,那么二叉樹的最小深度為()

A.Log2(n+1)B.Log2(n)C.Log2(n-1)D.n/2

10.有以下程序:#include<stdio.h>main(){char*s=“01234”;while(*(++s)!=‘\0’){switch(*s-‘0’){case0:case1:putchar(*s+1);break;case2:putchar(*s+1);break;case3:putchar(*s+1);default:putchar(*s+1);break;}}}程序運行后的輸出結(jié)果是()。

A.22345B.2345C.12345D.23445

11.一個模塊直接調(diào)用的下層模塊的數(shù)目稱為模塊的()。

A.扇入數(shù)B.扇出數(shù)C.寬度D.作用域

12.

13.設一個廣義表中結(jié)點的個數(shù)為n,則求廣義表深度算法的時間復雜度為____。

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

14.下列程序段的時間復雜度為()。A.O(n)B.O(n-1)C.O(n2)D.O(log2n)

15.具有n個結(jié)點的連通圖至少有()條邊。

A.n-1B.nC.n(n-1)/2D.2n

16.下列選項中非法的字符常量是()。

A.'\t'B.'\039'C.','D.'\n'

17.排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進行比較,將其放入已排序序列的正確位置上的方法,稱為()。

A.希爾排序B.冒泡排序C.插入排序D.選擇排序

18.下列關(guān)于信息系統(tǒng)的敘述中,錯誤的是()。

A.廣播電視是一種雙向的、點到多點的信息交互系自

B.網(wǎng)絡聊天是一種雙向的,以信息交互為主要目的系統(tǒng)

C.電話是一種雙向的、點對點的、以信息交互為主要的的系統(tǒng)

D.雷達是一種以感測和識別為主要目的的系統(tǒng)

19.

20.if語句的基本形式是“if(表達式)語句”,以下關(guān)于“表達式”值的敘述中正確的是()。

A.必須是邏輯值B.必須是整數(shù)值C.必須是正數(shù)D.可以是任意合法的數(shù)值

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

main()

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

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

22.以下程序的輸出結(jié)果是()。

#include<stdio.h>

main()

{intx=27;

while(x>20&&x<30)

{x++;

if(x/3){x++;break;}

else

continue;

}

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

}

23.如果兩個8位二進制數(shù)00010101與01000111相加,其結(jié)果用十進制表示為【】。

24.對于長度為n的順序存儲的線性表,當隨機插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。

25.在關(guān)系模型中,二維表的行稱為______。

26.以下程序的輸出結(jié)果是【】。

main()

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

inti;

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

printf("\n");}

27.設有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

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

28.下列程序的輸出結(jié)果是______。

main()

{inti,sum;

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

sum+=i;

printf("%d",sum);

}

29.以下函數(shù)用來在w數(shù)組中插入x。n所指向的存儲單元中存放w數(shù)組中字符個數(shù)。數(shù)組w中的字符已按從小到大的順序排列,插入后數(shù)組w中的字符仍有序。請?zhí)羁铡?/p>

voidfun(char*w,charx,int*n)

{inti,p;

p=0;

w[*n]=x;

while(x>w[p])p++;

for(i=*n;i>p;i--)w[i]=【】;

w[p]=x;

++*n;}

30.執(zhí)行下面程序后,輸出結(jié)果是【】。

main()

{chars[12]="verygood!";

printf("%d",strlen(s));

}

31.測試的目的是暴露錯誤,評價程序的可靠性;而______的目的是發(fā)現(xiàn)錯誤的位置并改正錯誤。

32.若有下列定義:inta[]={1,2,3,4,5,6,7,8,9,10},*p=a;,則值為3的表達式為:______。

33.以下程序的輸出結(jié)果是【】。

main()

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

inti;

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

printf("\n");}

34.軟件需求規(guī)格說明書應具有完整性、無歧義性、正確性、可驗證性、可修復性等特性,其中最重要的是()。

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

36.下列程序可以判斷輸入的年份是不是閏年。

#include

main()

{int【】,leap;

scanf("%d",&year);

if(year%4)

leap=0;

elseif(year%lO0)

【】;

elseif(year%400)

leap=0;

else

leap=1;

if(【】)

printf("%d年是閏年",year);

else

printf("%d年不是閏年\n",year);

}

37.設一棵完全二叉樹共有700個結(jié)點,則在該二叉樹中有【】個葉子結(jié)點。

38.以下程序的功能是輸出如下形式的方陣:

13141516

9101112

5678

1234

請?zhí)羁铡?/p>

main()

{inti,j,x;

for(j=4;j>0;j--)

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

{x=(j-1)*4+【】;

printf("%4d",x);

}

printf("\n");

}

}

39.設有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續(xù)寫內(nèi)容。

fw=fopen("readme.txt",【】);

40.下列程序的運行結(jié)果是______。

#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");

}

三、1.選擇題(20題)41.有以下程序main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j<=i;j++)printf("%4c",");for(j=______;j<4;j++)printf("%4d",num[i][j]);prrintf("\n");}}若要按以下形式輸出數(shù)組右上半三角1234678111216則在程序下劃線處應填入的是

A.i-1B.iC.i+1D.4-i

42.以下能正確定義二維數(shù)組的是()。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1},{2},{3,4}}:

43.若有說明語句:double*p,a;則能通過scanf語句正確給輸入項讀入數(shù)據(jù)的程序段是()。

A.*p=&a;sCanf("%1f",p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%1f",*p);

D.p=&a;scanf("%1f",p);

44.下列if語句非法的是()

A.if(a=B)x=1;

B.if(!3.9)

C.if('a'&&x==y(tǒng))y++;

D.if(x>y)scanf("%f",&y)elsescanf("%f",&x);

45.有如下定義:structperson{charname[9];intage;};structpersonclass[10]={"Johu",17,"Paul",19,"Mary",18,"Adam",16,};根據(jù)上述定義,能輸出字母M的語句是______。

A.printf("%c\n",class[3].name);

B.printf("%c\n",class[3].name[1]);

C.printf("%c\n",class[2].name[1]);

D.printf("%c\n",class[2].name[O]);

46.假定w、x、y、m均為int型變量,則執(zhí)行下列的語句后,m的值是()。w=6,x=4,y=3;m=(w<x)?w:x;m=(m<y)?m:y;

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

47.設intx=1,y=1;表達式(:x||y--)的值是______。

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

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

A.xyzabcABB.zabcABCC.yzabcABCD.xycbcABC

49.在數(shù)據(jù)流圖(DFD)中,帶有名字的箭頭表示()。

A.模塊之間的調(diào)用關(guān)系B.程序的組成成份C.控制程序的執(zhí)行順序D.數(shù)據(jù)的流向

50.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

51.下列屬于不合法的C語言整型常量的選項是()。A.-32679

B.0Xabc

C.069

D.3.00E+02B.C.D.

52.假設線性表的長度為n,則在最壞情況下,冒泡排序需要的比較次數(shù)為``

A.log2n

B.n2

C.O(n1.5)

D.n(n-1)/2

53.有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("\n");}執(zhí)行后的輸出結(jié)果是()。

A.5B.24C.32D.40

54.若要打開A盤中user子目錄下名為aaa.txt的文本文件進行讀、寫操作,下面符合此要求的函數(shù)調(diào)用是()。

A.fopen("A:\user\aaa.txt","r")

B.fopen("A:\\user\\aaa.txt","r=")

C.fopen("A:\user\aaa.txt","rb")

D.fopen("A:\\user\\aaa.txt","w")

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

A.指令由操作數(shù)和操作碼兩部分組成

B.常用參數(shù)xxMB表示計算機的速度

C.計算機的一個字長總是等于兩個字節(jié)

D.計算機語言是完成某一任務的指令集

56.______是構(gòu)成C語言程序的基本單位。

A.函數(shù)B.過程C.子程序D.子例程

57.有以下程序:main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}程序運行后的輸出結(jié)果是______。

A.12353514B.12353513C.12343514D.12343513

58.有以下程序,程序運行后的輸出結(jié)果是______。intf(intb[][4]){inti,j,s=0;for(j=0;j<4;i++){i=j;if(i>2)i=3-j;s+=b[i][j];}returns;}main(){inta[4][4]={{1,2,3,4},{0,2,4,6,},{3,6,9,12},{3,2,1,0}};printf("%d\n",f(A));}

A.22B.11C.18D.16

59.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

60.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是

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

四、選擇題(20題)61.下列與char*pa[3][5]={"a","bb","ccc"}等價的是()。

A.char(*pa)[][5]={"a","bb","ccc"}

B.char*pa[3][]={"a","bb","ccc"}

C.charpa[3][]={"a","bb","ccc"}

D.都不等價

62.有以下程序:

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

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

63.利用E-R模型進行數(shù)據(jù)庫的概念設計,可以分成3步:首先設計局部E-R模型,然后把各個局部E-R模型綜合成一個全局的模型,最后對全局E-R模型進行(),得到最終的E-R模型。

A.簡化B.結(jié)構(gòu)化C.最小化D.優(yōu)化

64.有以下程序:

#include<stdio.h>

main()

{intx=1,y=0;

if(!x)y++;

elseif(x==0)

if(x)y+=2;

elsey+=3;

Drintf("%d\n"。v);

}

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

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

65.下面描述中,不屬于軟件危機表現(xiàn)的是()A.軟件過程不規(guī)范B.軟件開發(fā)生產(chǎn)率低C.軟件質(zhì)量難以控制D.軟件成本不斷提高

66.以下程序的輸出結(jié)果是()。

inta=5;

floatx=3.14;

a*=x*(‘E’-‘A’);

printf(“%f\n”,(float)a);

A.62.000000B.62.800000C.63.000000D.62

67.

下列程序執(zhí)行后的輸出結(jié)果是()。

main

{inta[3][3],*p,i};

p=&a[0][0];

for(i=p;i<9;i++)p[i]=i+1;

printf("%d\n",a[1][2]);

}

A.3B.6C.9D.隨機數(shù)

68.有以下程序:

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

A.11B.9C.6D.7

69.有以下程序

70.有以下程序:

#include<stdio.h>

main()

{inta=-2,b=0;

while(a++++b);

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

}

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

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

71.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

72.設intx=7,則~x的值是()。

A.-8B.7C.-1D.1

73.對于一個正常運行的C程序,以下敘述中正確的是()。A.程序的執(zhí)行總是從main函數(shù)開始

B.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在main函數(shù)結(jié)束

C.程序的執(zhí)行總是從main函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

D.程序的執(zhí)行總是從程序的第一個函數(shù)開始,在程序的最后一個函數(shù)中結(jié)束

74.

75.有下列程序:main{chars[]="abcde";s+=2:printf("%d\n",s[0]);}執(zhí)行后的結(jié)果是()。

A.輸出字符a的ASCII碼B.輸出字符c的ASCII碼C.輸出字符cD.程序出錯

76.以下不能正確定義二維數(shù)組的選項是A.inta[2][2]={{1},{2}};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3};

D.inta[2][]={{1,2},{3,4}};

77.

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

#include<stdio.h>

voidmain

{ints=0,k;

for(k=7;k>1;k--)

{switch(k)

{case1:

case4:

case7:

s++:

break;

case2:

case3:

case6:break;

case0:

case5:

s+=2:

break;

}}

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

}

A.s=3B.s=4C.s=5D.無輸出結(jié)果

78.

79.

80.

五、程序改錯題(1題)81.假如整數(shù)數(shù)列中的數(shù)不重復,并存放在數(shù)組中。下列給定的程序中,函數(shù)proc()的功能是:刪除數(shù)列中值為x的元素。n中存放的是數(shù)列中元素的個數(shù)。請修改程序中的錯誤,使它能夠得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設計題(1題)82.函數(shù)fun的功能是:將S所指字符串中除下標為偶數(shù)同時ASCIl碼值也為偶數(shù)的字符外,其余的全部刪除;字符串中剩余字符所形成的新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為“ABCDEFGl23456”,其中字符A的ASCIl碼值為奇數(shù),因此應當刪除;字符8的ASCIl碼值為偶數(shù),但在數(shù)組中的下標為奇數(shù),因此也應當刪除;字符2的ASCIl碼值為偶數(shù),在數(shù)組中的下標也為偶數(shù),因此不應當刪除,其他依此類推。最后t所指的數(shù)組中的內(nèi)容應是‘'246”。注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.C

2.B解析:語句typedefstructS{intg;charh;}T的作用是用T作為struetS{intg;charh;)的簡寫,所以選B。

3.D

4.Cmain函數(shù)首先定義一個整型變量data,使用scanf函數(shù)輸入一個整數(shù)賦給data。接著執(zhí)行for循環(huán),i的值為0~7。當i的值不大于data的值時,使用continue語句跳過當前循環(huán),進入下一輪循環(huán)。若從鍵盤輸入5,data的值為5,i取值為0~5時,都不執(zhí)行printf語句。當i取值為6、7時,執(zhí)行printf語句,輸出6,7。故本題答案為C選項。

5.C解析:數(shù)據(jù)塊輸入/輸出函數(shù)的調(diào)用形式為:fread(buffer,size,count,fp)。fread函數(shù)參數(shù)說明:“buffer”是一個指引,對fread來說,它是讀入數(shù)據(jù)的存放地址;“size”是要讀寫的字節(jié)數(shù);“count”是要進行讀寫多少個size字節(jié)的數(shù)據(jù)項;“fp”是指文件型指針。

6.B

7.B

8.C

9.A

10.D程序首先定義一個字符指針s,指向一個常量字符串“01234”;接著while循環(huán)的循環(huán)條件每次將s指向下一個字符,然后判斷s指向的字符是否為空字符“\\0”,若不是,則執(zhí)行循環(huán)體,將當前字符與‘0’”的ASCII差值作為switch語句的常量表達式,執(zhí)行對應的case語句。指針s指向空字符“\\0”時,則終止循環(huán),程序結(jié)束。從常量字符串“01234”可知,循環(huán)過程中s指向的各個字符分別是1、2、3、4。當*s是字符“1”時,*s-‘0’的值為1,執(zhí)行case1語句,輸出*s+1,即字符“2”;當*s是字符“2”時,*s-‘0’的值為2,執(zhí)行case2語句,輸出*s+1,即字符“3”;當*s是字符“3”時,*s-‘0’的值為3,執(zhí)行case3和default語句,兩次輸出*s+1,即字符“4”;當*s是字符“4”時,*s-‘0’的值為4,執(zhí)行default語句,輸出*s+1,即字符“5”。綜上,程序輸出結(jié)果為23445。故本題答案為D選項。

11.B扇入數(shù)是指調(diào)用一個給定模塊的模塊個數(shù)。扇出數(shù)是指由一個模塊直接調(diào)用的其他模塊數(shù),即一個模塊直接調(diào)用的下層模塊的數(shù)目。本題答案為B選項。

12.B

13.D

14.B

15.A

16.B水平制表符中,'\t'表示的是橫向跳若干格;選項B中,'\039'錯誤,'\039'是八進制形式表的字符,最大數(shù)為7,但其中出現(xiàn)'9',','是字符逗號;選項D中,'\n'表示的是換行。

17.C

18.A廣播/電視是一種單向的、點對多點(面)的以信息傳遞為主要目的的系統(tǒng)。

19.D\r\n

20.Dif語句中的表達式可以是任意合法的數(shù)值,如常量、變量表達式。故本題答案為D選項。

21.11解析:本題是一個陷阱題。在if語句的判斷表達式中,使用的不是邏輯運算符==而是賦值運算符=,使該表達式返回的結(jié)果正好相反。如果是c==a,則結(jié)果為假。但是c=a則是將a賦給c,且表達式的結(jié)果是賦值之后的c的值,因此結(jié)果為1是真.故最后輸出c的值1。

22.2929解析:本題考查while循環(huán)和++運算,x=27符合循環(huán)條件,執(zhí)行循環(huán)體中x++后,x=28,if條件也成立,執(zhí)行x++后退出,x的值增1,結(jié)果x=29。

23.92

24.n/2n/2解析:刪除—個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2:所以總體平均移動元素個數(shù)為n/2。

25.元組元組解析:在關(guān)系型數(shù)據(jù)庫中,用二維表來表示關(guān)系,二維表的表名即關(guān)系名,二維表的行稱為關(guān)系的元組,二維表的列,稱為關(guān)系的屬性。

26.SOSO解析:題中需要注意兩個問題:一是for循環(huán)的修正表達式共執(zhí)行兩次“i-”操作;二是*p[i]是對某個字符的引用。

27.'\0''\\0'解析:本題涉及字符數(shù)組和指針的兩個知識點:①在C語言中,字符型數(shù)組在存放字符串時會自動在末尾加上字符串結(jié)束標識符'\\0'所以題中數(shù)組str有6個元素。②ptr指向數(shù)組str的首地址,ptr+5是指

溫馨提示

  • 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

提交評論