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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.下列程序的運行結果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

2.以下程序的輸出結果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

3.對于哈希函數H(key)=key%13,被稱為同義詞的關鍵字是_______

A.35和41B.23和39C.15和44D.25和51

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

B.O(n2)

C.O(log2n)

D.O(nlog2n)

5.

有以下結構體說明和變量的定義,且指針P指向變量a,指針q指向變量b,則不能把結點b連接到結點a之后的語句是()。

structnode

{chardata;

structnode*next:

}a,b,*p=&a,*q=&b;

A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

6.有以下程序:voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);print("%d\n",aa[0]);}程序運行后的輸出結果是______。

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

7.有下列程序:程序執(zhí)行后的輸出結果是()。A.eeaabmmnhhirrstu

B.efgabcdmnopqhijkIrstuvwxyz

C.efgacdmopqhjkIrvwxyz

D.eefgaabcdmmnopqhhijkIrrstuvwxyz

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

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

9.程序運行后的輸出結果是()。A.10B.11C.20D.21

10.在一個C程序中

A.main函數必須出現在所有函數之前

B.main函數可以在任何地方出現

C.main函數必須出現在所有函數之后

D.main函數必須出現在固定位置

11.

12.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的運行結果是()

A.zB.0C.元素ch[5]的地址D.字符y的地址

13.鏈表不具有的特點是()。A.A.不必事先估計存儲空間

B.可隨機訪問任意元素

C.插入、刪除不需要移動元素

D.所需空間與線性表長度成正比

14.在下列模式中,能夠給出數據庫物理存儲結構與物理存取方法的是()。

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

15.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十進制代碼為97,則執(zhí)行上述程序段后輸出結果是()。A.因變量類型與格式描述符的類型不匹配輸出無定值

B.輸出項與格式描述符個數不符,輸出為零值或不定值

C.a,97,12k=12

D.a,97,k=12

16.下列關系表達式中,結果為“假”的是()。A.(3+4)>6B.(3!=4)>2C.3<=4||D.(3<4)=1

17.

18.

19.

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

A.0,-1,-1,-1

B.0,-1,-1,0

C.0,-1,-1,0,-1,0

D.0,-1,-1,-1,-1,-1

二、2.填空題(20題)21.下面程序的功能是調用sub函數計算數組a中字符串的長度,請?zhí)羁铡?/p>

sub(chars[])

{intn;

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

return【】;

}

main()

{char*a;intk;

gets(a);

【】

printf("%d",k);

22.下面的程序可列指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

for(i=0;i<n;i++

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

23.有以下程序:

main()

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

p=&a[0][0];

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

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

}

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

24.設a、b、c為整數,且a=2、b=3、c=4,則執(zhí)行完語句a*=18+(b++)-(++c);后,a的值是【】。

25.在程序設計階段應該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而用某種程序設計語言寫成程序。

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

27.設有如下程序:

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序運行后,如果從鍵盤上輸入1298,貝愉出結果為【】。

28.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

29.下面程序的功能:將字符數組a中下標值為偶數的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

main()

{chara[]="clanquage",t;

inti,j,k;

k=strlen(A);

for(i=0;i<=k-2;i+=2)

for(j=i+2;j<k;j+=2)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;}

puts(A);

printf("\n");

}

30.關系可以有3種類型,即基本關系(又稱基本表或基表)、查詢表和【】。

31.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

32.設有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEF<CR>QTHRG<CR>,則程

序的輸出結果是______。

33.在E-R圖中,矩形表示【】。

34.若有定義:inta[4][4]={{l,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

35.函數delete(s,i,n)的作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

36.下列程序的輸出結果是16.00,請?zhí)羁眨?/p>

main()

}

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

37.函數fun的功能是使一個字符串按逆序存放。請?zhí)羁铡?/p>

voidfun(charstr[])

{charm;inti,j;

for(i=0,j=strlen(str);i<【】;i++,j--)

{m=str[i];

str[i]=【】;

str[j-1]=m;

}

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

}

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

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

p=a;

39.設在主函數中有以下定義和函數調用語句,且fun函數為void類型;請寫出fun函數的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}

40.若輸入字符串:(圖片),則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

三、1.選擇題(20題)41.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序運行后的輸出結果是______。

A.22111B.21021C.122D.12

42.有如下程序main(){inty=3,x=3,z=1;printf("%d\n",(++x,y++),z+2);}運行該程序的輸出結果是_____。

A.34B.42C.43D.33

43.以下程序段中,不能正確賦字符串(編譯時系統(tǒng)會提示錯誤)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

44.下列程序執(zhí)行后的輸出結果是()。voidfuncl(inti);voidfunc2(inti);charst[]="hello,friend!";voidfuncl(inti){printf("%C",st[i]);if(i<3){i+=2;func2(i);)}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){inti=0;funcl(i);printf("\n");)

A.hlmB.hloC.helloD.he1

45.下面程序輸出的結果是

main()

{inti;

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

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

printf("%d",a[2-i][i]);}

A.159B.753C.357D.591

46.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序運行后的輸出結果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

47.已知函數的調用形式:fread(buf,size,count,fp),參數buf的含義是

A.一個整型變量,代表要讀入的數據項總數

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

C.一個指針,指向要讀入數據的存放地址

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

48.若i是int型變量,且有下面的程序段:for(i=4;i<6;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);上面程序段的輸出結果是______。

A.**4##5B.##4**5C.**4**5D.##4##5

49.以下程序的輸出結果是______。#include<stdio.h>main(){inta=200;#definea100printf("%dd",a);#undefaprintf("%d",a);}

A.200100B.100100C.100200D.200200

50.下列程序執(zhí)行后的輸出結果是______。main(){intx='f';printf("%c\n",'A'+(x-'a'+l));}

A.GB.HC.ID.J

51.設有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0\},*p;p=&a[0];下面其值為6的表達式為______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

52.以下程序的輸出結果是()#include<stdlib.h>inta[3][3]={1,2,3,4,5,6,7,8,9},*p;main(){p=(int*)malloc(sizeof(int));f(p,a);printf("%d\n",*p);}f(int*s,intp[][3]){*s=p[1][1];}

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

53.fgetc函數的作用是從指定文件讀入一個個字符,該文件的打開方式必須是______。

A.只讀B.追加C.讀或讀寫D.以上均正確

54.下列程序執(zhí)行后的輸出結果是main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}

A.3B.6C.9D.隨機數

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

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

56.以下敘述中正確的是A.A.C程序中的注釋只能出現在程序的開始位置和語句的后面

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

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

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

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

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

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

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

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

58.設變量x和y均已正確定義并賦值。下列if語句中,在編譯時將產生錯誤信息的是()。

A.if(x++);

B.if(x>y&&y!=0);

C.if(x>0)x--

D.if(y<0){;}elsey++;elsex++;

59.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n')switch(c-'2'){case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+4);case4:putchar(c+4);break;}printf("\n");}輸入以下數據,<CR>代表一個回車符,2743<CR>程序的輸出結果是()。

A.877B.966C.778D.766

60.當a=4,b=5,c=7,d=6時,執(zhí)行下面一段程序:if(a<B)if(c<D)x=1;elseif(a<C)if(b<C)x=2:elsex=3;elsex=4;elsex=5;程序執(zhí)行后,x的值為()。

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

四、選擇題(20題)61.下列能正確定義且賦初值的語句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

62.當執(zhí)行下面的程序時,如果輸入ABC,則輸出結罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

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

A.c語言規(guī)定必須用main作為主函數名,程序將從此開始執(zhí)行

B.可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執(zhí)行

C.c語言程序將從源程序中第一個函數開始執(zhí)行、

D.main的各種大小寫拼寫形式都可以作為主函數名,如MAIN,Main等

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

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

65.

66.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的運行結果是

A.A.331

B.41

C.2

D.1

67.有以下程序段:

以下選項中表達式的值為11的是()。

A.

B.

C.

D.

68.

69.

70.下面各選項中,均是C語言中合法標識符的選項組是

A.forchinatoB.long_123short56_do

C.voidunion_342D.text_023_3ew

71.有以下程序:

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

A.4B.34C.31D.32

72.

執(zhí)行下列程序中的輸出語句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

73.在數據管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段和數據庫系統(tǒng)階段。其中數據獨立性最高的階段是()。

A.數據庫系統(tǒng)B.文件系統(tǒng)C.人工管理D.數據項管理

74.

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

#include<stdio.h>

main

{structst

{inty,x,z;

};

union

{longi;

intj;

chark;

}un;

printf("%d,%d\n",sizeof(structst),sizeof(un))

}

A.6,2B.6,4C.8,4D.8,6

75.設有定義:char*C;以下選項中能夠使C正確指向一個字符串的是()。

A.charstr()=”string”;C=str;

B.scanf(”%s”,C.;

C.c=getchar();

D.*c=”strin9”;

76.

77.設有定義:charp[]={1,2,3),*q=p;,以下不能計算出一個char型數據所占字節(jié)數的表達式是()。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

78.有以下程序:

當執(zhí)行程序時,按下列方式輸人數據(從第l列開始,<CR>代表回車,注意,回車也是—個字符)l<CR>

234<CR>

則輸出結果是()。

A.34

B.134

C.123

D.1234

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

A.一對一B.一對多C.多對一D.多對多

80.

有下列程序:

main

{intx=5;

do

{printf("%d",X-=4);)

while(!(--x));

}

程序的輸出結果是()。

A.1B.20C.1-4D.死循環(huán)

五、程序改錯題(1題)81.下列給定程序中,proc()函數的功能是:根據形參m,計算下列公式的值。t=1+1/2+1/3+1/4+…+1/m例如,若輸入10,則應輸出2.928968。請修改程序中的錯誤,使它能計算出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.輸出1900~2000年中所有的閏年。每輸出3個年號換一行。(判斷閏年的條件為下面二者之一:能被4整除,但不能被100整除?;蛘吣鼙?00整除。)

參考答案

1.B解析:本題考查帶參數的宏的定義及相關運算:S=m+n+m+n*k=1+2+1+2*3=10。

2.B從題目中可知,\O、\t、\\分別為一個字符,而sizeof是求字節(jié)個數的函數,其中包括\O占的字節(jié),strlen函數是求數組長度的函數;其以\0結束,因此strlen的值為5,sizeof的值為20。

3.D

4.C解析:二分查找法也稱為折半查找法。它的基本思想是:將n個元素分成個數大致相同的兩半,取a[n/2]與欲查找的x作比較,如果x=a[n/2],則找到x,算法終止;如果x<a[n/2],則只要在數組a的左半部繼續(xù)搜索x(這里假設數組元素呈升序排列);如果x>a[n/2],則只要在數組a的右半部繼續(xù)搜索x。每次余下n/(2i)個元素待比較,當最后剩下一個時,即n/(2i)=1。故n=2i;所以i=log2n。

5.B

\n本題考查結構體指針變量的賦值方法,要把結點b連接到結點;l的后面,必須把b的地址給a的next指針。故8正確。

\n

6.D解析:C語言覿定,實參變量對形參變量的數據傳遞是“值傳遞”,只由實參傳給形參,而不能由形參傳回來給實參。函數調用結束后,形參單元被釋放,實參單元仍保留并維持原值。本題要求輸出aa[0]的值,結果應為1。

7.C程序定義一個二維字符數組a,使用5個字符串對其初始化。另外定義字符指針數組P。for循環(huán)中,每次將數組a當前下標為i的字符串首地址賦給P[i],再求得P[i]的長度賦給len,第1個printf輸出p[i]字符串的首字母,第2個printf輸出p[i]字符串下標從len/2開始的子字符串。當下標i=0時輸出efg;當下標i=l時輸出acd;當下標i=2時輸出mopq;當下標i=3時輸出hjkl;當下標i=4時輸出rvwxyz。所以程序輸出:efgacdmopqhjklrvwxyz。本題答案為C選項。

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

9.D[解析]聲明data是結構S數組。初始化data[0].a=10;data[O]b=100;data[1].a=20;data[]b=200.主函數中p=data[1];即p.a=data[1].a;p.b=data[1].b;執(zhí)行語句prit("%odn",++(pa);打印輸出時p.a先增1再打印。p.a=data\u3000\u3000[1].a=20.先增1等于21.

10.B解析:一個完整的C語言程序有且僅有一個主函數(main()函數)。程序總從main()函數的第一條語句開始執(zhí)行,到main()函數的最后一條語句結束,其他函數都是在執(zhí)行main()函數時,通過函數調用或嵌套調用而得以執(zhí)行的。C語言規(guī)定,main()函數在程序中的位置是任意的,故選項A、選項C和選項D均不正確。所以,B選項為所選。

11.B

12.A語句“pc=ch;”使得指針變量pc指向字符數組ch的首地址,即指向字符‘u’。而“pc+5”指向的是指針向后移動5位所指的字符,即指向字符‘z’,所以輸出的“*(pc+5)”的值為‘z’。故本題答案為A選項。

13.B鏈表采用的是鏈式存儲結構,它的結點空間可以動態(tài)申請和釋放;它的數據元素的邏輯次序靠結點的指針來指示,插入、刪除不需要移動數據元素。但是鏈式存儲結構也有不足之處:每個結點中的指針域需額外占用存儲空間,它是一種非隨機存儲結構。

14.B數據庫有三層模式結構,邏輯模式是數據的全局邏輯結構的描述,外模式也稱為子模式,是局部數據的邏輯結構描述,而內模式也稱為存儲模式,是數據庫物理存儲結構和存取方法的描述。

15.D解析:在用基本輸出函數printf時,格式說明與輸出項的個數應該相同。如果格式說明的個數少于輸出項的個數,多余的輸出項不予輸出;如果格式說明個數多于輸出項個數,則對于多余的格式項輸出不定值或0。

16.B在一個表達式中,括號的優(yōu)先級高,先計算3!=4,為真即是l,1>2為假。

17.D\r\n

18.C

19.C

20.A程序定義整型變量a和b,初值分別是1,-2。for語句中循環(huán)條件式為“a--&&b++”,因為--和++的優(yōu)先級高于邏輯與運算符&&,所以循環(huán)條件式等價于“(a--)&&(b++)”,自左向右運算。第1輪循環(huán),a、b的值為1,-2,首先執(zhí)行a--,a--的值為1,執(zhí)行完后a的值為0;繼續(xù)執(zhí)行b++,b++的值為-2,執(zhí)行完后b的值為-1。整個表達式“a--&&b++”的值為真,程序輸出0,-1。第2輪循環(huán),a、b的值分別為0,-1,首先執(zhí)行a--,a--的值為0,執(zhí)行完后a的值為-1,由于a--的值為0,根據邏輯與運算的短路原則,表達式“a--&&b++”的值一定為假,表達式b++不再執(zhí)行,循環(huán)結束,執(zhí)行循環(huán)體外的printf語句,輸出a、b的值分別為:-1,-1。所以本題輸出結果為:0,-1,-1,-1。本題答案為A選項。

21.s[n]!='\0';或s[n];nk=sub(a);s[n]!='\\0';或s[n];\r\nn\r\nk=sub(a);解析:函數sub()通過for循環(huán)計算字符串的長度,當字符串沒有結束時循環(huán),因此判斷循環(huán)與否的條件是看字符串是否結束。故第1空應該填寫s[n];或其他等價表達式。循環(huán)結束返回字符串長度值,循環(huán)變量n中累計了循環(huán)的次數即字符串的長度,故第2空應該填n。主函數中的空白處應該是一條調用函數sub()的語句,將字符串的首地址作為實參傳遞給形參,并將返回值賦值給變量k。故第3空應該填k=sub(a);。

22.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本題要求將字符串str中的字符用冒泡排序算法從大到小排列,其實現過程是將相鄰兩個字符進行比較,如果當前字符小于下一個字符,則通過中間變量temp將字符兩兩交換,所以第一空應填:str[i],第二空應填:str[i+l]。最終打印輸出得到的字符串str,所以第三空應填:'%s',str。

23.66解析:本題定義了二維數組a和指針變量p,p指向數組的首地址,for循環(huán)語句的功能是給數組元素賦值,結果為a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函數的輸出結果為6。

24.3232解析:b++是先使用b的值參加運算,再對b加1。++c是先對c加1,再使用c的值參加運算。a*=18+(b++)-(++c)等價于a=a*(18+(b++)-(++c))則a=2*(18+3-5)=32。

25.自頂而下自頂而下

26.111,1解析:POWER(i++)中先引用i的值1,再將i的值加1,POWER(i++)=1*1=1。

27.89218921解析:本題的程序的功能是將輸入的整數反向輸出。

28.存儲結構

29.a[j]<a[i]a[j]<a[i]解析:本題考查排序算法,題目中通過雙循環(huán)嵌套來實現,外層循環(huán)跳出待排序的元素,內層循環(huán)具體實現a[i]到a[k-2]之間偶數下標元素的排序,每次將最小的放在a[i]中。所以空中填a[j]<a[i]。

30.視圖表視圖表解析:關系數據庫中通常有3種關系,即基本關系(又稱基本表或基表)、查詢表和視圖表?;颈硎窃跈C器中實際存儲數據的表。查詢表是查詢的結果所對應的臨時表。視圖表是由基本表或其他視圖表導出的表,是不實際存儲數據的表。視圖表是一個虛表。

31.軟件開發(fā)

32.QTHRGQTHRG解析:函數strcmp(t,s)用來比較t和s所指字符串的大小,若t>s,則函數值大于0;若t=s,則函數值等于0:若t<s,則函數值小于0。函數strcpy(t,s)的功能是,把字符數組s所指字符串的內容復制到字符數組t所指存儲空間中。本題中,t[10]='CDEF'。第一次循環(huán),s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執(zhí)行第二次循環(huán),s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執(zhí)行下列的語句,將字符數組s所指字符串的內容復制到字符數組t所指存儲空間中,然后輸出字符數組t。

33.實體實體解析:E-R模型中,有3個基本的抽象概念:實體、聯系和屬性。在E-R圖中,用矩形框表示實體,菱形框表示聯系,橢圓形框表示屬性。

34.88解析:二維數組可以看成是按矩陣形式排列的,題目中給二維數組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數組,其數組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數組都有,4個元素,a[0]的元素為a[0][0]、a[0][1]、a[O][2]、a[0][3]。

35.length++i<lengthlength++\r\ni<length解析:第—個循環(huán)極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是從第i個到笫i+n或最后—個間的所有字符。刪除前,應判斷i<=length。由于已經進行了-i運算,故實際應填入i<length。

解析:本題,已知結果z=16.00,即16.0=a/2+b*x/y+1/2,分別把a、b代入,得到16.0=(9/2+2*x/1.1+1/2。因為a=9,a是整型,所以9/2的值在沒有進行類型轉換時,等于4,1/2同理,等于0。代入求一元一次方程,很容易就可以得出x=6.6。

37.strlen(str)/2str[j-1]

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

39.

40.00解析:函數getchar()是從鍵盤得到用戶輸入的一個字符。用戶輸入的第1個字符是a,不管后面輸入的是什么ch的值都是'a',因此條件(ch=getchar())=='e'為假,這個循環(huán)不會被執(zhí)行。

41.C解析:程序中for循環(huán)了三次,第一次i=0,執(zhí)行switch語句中case0:分支,直到遇到default語句,退出switch,這里共執(zhí)行了三個輸出語句分別輸出0,0,0,第二次循環(huán)i=1,switch語句中沒有匹配的分支,故只執(zhí)行default語句輸出1,退出switch語句;第三次循環(huán)i=2,從switch語句中的case2:開始執(zhí)行,共執(zhí)行了兩個輸出語句輸出2、2。最后輸出的結果為000122。

42.D解析:逗號表達式(++x,y++)的值應該是y++的值,由于y++是先引用后自增,所以y++的值是3。

43.C解析:選項A中定義了一個字符型數組并賦初值,故選項A正確;選項B定義了一個字符型數組t并初始化,然后定義了一個指針變量s并讓它指向t,故選項B正確;選項C先定義?一個長度為10的字符型數組,然后在給它賦值,這時應該分別給數組中的每個元素賦值,故選項C不正確;選項D中先定義了一個長度為10的字符型數組s,然后通過字符串拷貝函數將字符串“abedefs”賦值給它,選項D正確。所以,4個選項中選項C符合題意。

44.B解析:本題定義了兩個很相似的子函數互相調用,子函數首先輸出st[i],然后判斷i是否小于3,是的話就讓i增2后調用另一個子函數。在主函數中只調用了一次funcl(0),funcl()輸出st[0],然后調用func2(2),func2()輸出st[2],又調用func1(4),此時i不小于3,所以funcl()只輸出st[4]就返回了。故最終輸結果為h1o,正確答案為B。

45.B解析:本題用循環(huán)的方法考查對數組概念的掌握。首先,當i=0時,數組中的位置是a[2][0]=7,當然,如果用排除法,就不用考慮后面的循環(huán),因為在4個選項中,第1個數為7的選項只有B)。本題執(zhí)行第2次循環(huán)時,i的值為1,則pfintf函數中的數組指向為a[1][1]=5,依次循環(huán),可求出答案。

46.B解析:在內存中,字符數據以ASCII碼存儲,它的存儲形式就與整數的存儲形式相類似。C語言使字符型數據和整型數據之間可以通用。也可以對字符數據進行算術運算,此時相當于對它們的ASCII碼進行算術運算,在本題中,s++相當于s=s+1,即讓s指向數組中的下一個元素。

47.C本題主要考查成塊讀函數fread。在C語言中,提供了一種成塊的讀寫方式來操作文件,使其數組或結構體等類型可以進行一次性讀寫。成塊讀文件函數的調用形式為:

intfread(void*buf,intsize,intcount,FILE*stream)

fread()函數的意思是從stream指向的流文件讀取count(字段數)個字段,每個字段為size(字段長度)個字符長,并把它們放到buf(緩沖區(qū))指向的字符數組中,然后進行讀取操作。fread()函數返回實際已讀取的字段數。

從上面的分析我們可以知道,參數buf是一個無返回類型的指針,指向要讀入數據的存放地址,它其實是一個緩沖區(qū)。因此本題正確的答案選C。

48.B解析:函數printf中的參數是三目條件表達式,循環(huán)控制變量i值為4時,i%2為0,格式控制字符串為'##%d\\n',輸出為##4;循環(huán)控制變量i值為5時,i%2為1,格式控制字符串為'**%d\\n',輸出為*5,兩次輸出不在同一行。

49.C解析:#define宏名的有效范圍為定義命令之后到本源文件結束,可以在程序中使用#undef命令終止宏定義的作用域。本題由于#undef的作用,使a的作用范圍在#definea100到#undefa之間,故答案為C。

50.A

51.D解析:p指向數組的第1個元素,由于運算符->優(yōu)先級高于運算符++,可知選項A應先取p->n的值5,再使p++指向下一個元素;選項B,先取p->n的值5作為表達式的值,再使p->n的值加1;選項C與選項B等價:選項D,先使p->n的值增1(即值為6),再以此值作為表達式的值,本題應選擇選項D。

52.D

53.D解析:fgetc函數是指從指定的文件讀入一個字符,該文件必須是以讀或讀寫方式打開的。fgetc函數的調用形式為:ch=fgetc(fp);。

54.B解析:本題中,a[1][2]是二維數組中的第6個元素,對應for循環(huán)中i的值為5,p[5]=5+1。

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

56.C

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

58.C解析:選項A)和選項B)在條件判斷語句的后面是空語句,什么都不做;在選項D)if后面是一個復合空語句;而在選項C)中,在x--后面少了一個分號,所以程序段在編譯時,會出現語法錯誤。

59.A解析:本題通過一個while循環(huán)向鍵盤緩沖區(qū)讀取字符,直到讀到的字符是回車鍵結束循環(huán)。當讀到的c為'2'時,c-'2'為0,switch語句中沒有case0:所以沒有輸出,繼續(xù)讀下一個;當c為'7'時,c-'2'=5,也沒有輸出;當c為'4'時,c-'2'=2,執(zhí)行case2:后面的語句輸出一個字符c+4='4'+4='8';當c為'3'時,c-'2'=1,執(zhí)行case1:后面的語句,連續(xù)輸出兩次c+4='3'+4='7'。故程序輸出結果是877,應該選擇A。

60.B

61.B在c語言規(guī)定中,可以在定義變量的同時給變量賦初值,選項A中n2沒有定義;選項C中不能在賦值表達式的右邊出現變量本身,選項D中字母E后面的數應該為整數,所以不對。

62.A當執(zhí)行gets(ss)后,ss數組中的元素為ABC,再執(zhí)行strcat(ss,"6789"),strcat的作用,是把6789連接到了ss數組后面,執(zhí)行完后SS數組為ABC6789,故選擇A選項。

63.AC語言中的主函數只能是main()函數,不能任意指定,所以B選項錯誤。C語言從主函數main()開始,到主函數main()結束,所以C選項錯誤。主函數必須寫成小寫的main,不能混淆大小寫,所以D選項錯誤。

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

65.C

66.D本題考查if-else語句的使用。if-else語句可以在條件為“真”或為“假”時執(zhí)行指定的動作,由if引導條件為“真”時執(zhí)行的操作;由else引導條件為“假”時執(zhí)行的操作。else語句要與上面最近的if語句進行匹配,如果要嵌套調用if-else語句,需要將嵌套部分用{}括起來,避免程序報錯。題目中給出了一個if語句和一個if-else語句,if-else語句為第一個if語句的子語句。首先執(zhí)行外層if語句,執(zhí)行條件為x>y,由于x=1,y=2,故該條件為假,不執(zhí)行if的子語句,直接執(zhí)行語句printf("%d\\n",x++);,該語句先輸出x的值,然后進行x++操作。x的初始值為1,輸出結果為1。

67.C→的運算優(yōu)先級比++高,此時,pt→x=10,執(zhí)行自加運算后為11。

68.A

69.C

70.D本題主要考查標識符的定義。對標識符的定義是歷次考試中??嫉膬热葜?。標識符主要由數字、下畫線和字母組成,其中數字不能放在首位,另外,用戶自定義標識符時,不能將標識符定義為C語言中已定義的關鍵字,如short、for、void等。

根據上面對標識符的分析,我們不難看出本題的正確答案是D。在選項A中,for是一個已經被定義的關鍵字,不符合標識符定義的規(guī)定;在選項B中,short是C語言系統(tǒng)中已經定義了的關鍵字,且56_do以數字開頭,不符合標識符定義的規(guī)定;在選項C中,void、union都是已被定義的關鍵字,因此不正確。

71.C本題重點考察二維數組名作為實參進行參數傳遞,在主函數中調用了fun函數,實參為二維數組名a和兩個整數4.0,這樣對應定義fun函數首部有三種形式,這里采用了第一種形式——行指針,這樣在fun函數對s[i][j]進行操作實際上就是對主函數中的a[i][j]進行操作,再分析fun函數的作用便可知,是求二維數組第0列中最大的那個元素。因此C選項正確。

72.C解析:本題考查逗號表達式。本題的返回值是a+7,a=2*3=6,a+7=13(注意:本題問的是a的值,而不是程序的輸出值)。

73.A在數據管理技術的發(fā)展過程中,經歷了人工管理階段、文件系統(tǒng)階段和數據庫系統(tǒng)階段。其中數據獨立性最高的階段是數據庫系統(tǒng)這一階段。數據庫系統(tǒng)階段用數據模型來表示復雜的數據,有較高的數據獨立性。數據庫系統(tǒng)為用戶提供了方便的用戶接口,用戶既可使用查詢語言或終端命令操作數據庫,也可以用程序方式來操作。數據庫管理系統(tǒng)提供了數據控制功能。

74.B

\n本題主要考查結構和聯合內存使用的一些區(qū)別:結構中每個成員相互獨立,一個結構所占內存空間的大小是結構中每個成員所占內存空間大小的總和;聯合所占用內存空間是指最長的成員占用的空間。

\n

75.AA選項為正確用法,先將字符串存于字符數組中,然后將數組名賦給字符指針(數組名代表數組首地址,定義數組時為其分配確定地址)。C選項錯誤,getchar()函數只能輸入一個字符給字符型變量,而不是字符指針。B選項和D選項有類似的錯誤,兩個選項并無語法錯誤,但運行時可能會出現問題。因為在B選項和D選項中,字符指針沒有被賦值,是個不確定的值,指向一個不確定的內存區(qū)域,這個區(qū)域可能存放有用的指令或數據。在這個不確定的區(qū)域重新存放字符串,可能會發(fā)生無法預知的錯誤。因此A選項正確。

76.C

77.A選項A計算的是p口字符數組首地址所占的內存字節(jié)數。選項8、C和D都能計算出一個字符型數據所占的字節(jié)數。

78.C程序根據用戶輸入分別給字符型變量a、

79.B解析:兩個實體間的聯系可以歸納為3種類型:一對一聯系:一對一的聯系表現為主表中的每一條記錄只與相關表中的一條記錄相關聯。一對多聯系或多對一:一對多的聯系表現為主表中的每一條記錄與相關表中的多條記錄相關聯。多對多聯系:多對多的聯系表現為一個表中的多個記錄在相關表中同樣有多個記錄與其匹配。一間宿舍可以住多個學生,但每個學生只能住一個宿舍,所以實體宿舍和學生之間的聯系為一對多的聯系。

80.C

\n本題考查do-while循環(huán)。先執(zhí)行do的內容,也就是printf語句,x=x-4=1,輸出1,判斷while循環(huán)的控制條件,--x=0,則!(--x)為非零,循環(huán)條件成立,執(zhí)行下一次循環(huán);x=x-4=-4,輸出-4,判斷while循環(huán)的條件,--X=-5,則!(--x)為零,循環(huán)條件不成立,結束循環(huán)。

81.(1)錯誤:t+=1.0/k;

正確:t+=1.o/i;

(2)錯誤:returni;

正確:returnt;

【解析】根據for循環(huán)可知,變量i中存放每一項的分母,變量k在函數procee沒有定義,因此t+=l.0/k;應改為t+=1.0/i;。變量t中存放各項的和,題目要求將各項的和返回給主函數,因此returni應改為returnt。

82.\n#include”stdio.h”

\nmain

\n{intI,n;

\nfor(n=0,I=1900;I<=2000;I++)

\n{if(I%4==0I0!=0||I@0==0)

\n{printf(“%d”,I);n++;}

\nif(n%3==0)

\nprintf(“\\n”);}}}

\n2021年湖南省婁底市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列程序的運行結果是()。#include<stdio.h>#defineADD(x)x+xmain(){intm=1,n=2,k=3;ints=ADD(m+n)*k;printf("s=%d",s);}

A.sum=18B.sum=10C.sum=9D.sum=25

2.以下程序的輸出結果是()。main(){charst[20]="hell0\O\t\\\”;printf("%d%d\n",strlen(st),sizeof(st));}A.99B.520C.1320D.2020

3.對于哈希函數H(key)=key%13,被稱為同義詞的關鍵字是_______

A.35和41B.23和39C.15和44D.25和51

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

B.O(n2)

C.O(log2n)

D.O(nlog2n)

5.

有以下結構體說明和變量的定義,且指針P指向變量a,指針q指向變量b,則不能把結點b連接到結點a之后的語句是()。

structnode

{chardata;

structnode*next:

}a,b,*p=&a,*q=&b;

A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

6.有以下程序:voidsum(int*a){a[0]=a[1];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=1;i>0;i--)sum(&aa[i]);print("%d\n",aa[0]);}程序運行后的輸出結果是______。

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

7.有下列程序:程序執(zhí)行后的輸出結果是()。A.eeaabmmnhhirrstu

B.efgabcdmnopqhijkIrstuvwxyz

C.efgacdmopqhjkIrvwxyz

D.eefgaabcdmmnopqhhijkIrrstuvwxyz

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

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

9.程序運行后的輸出結果是()。A.10B.11C.20D.21

10.在一個C程序中

A.main函數必須出現在所有函數之前

B.main函數可以在任何地方出現

C.main函數必須出現在所有函數之后

D.main函數必須出現在固定位置

11.

12.有以下程序:#include<stdio.h>main(){charch[]=“uvwxyz”,*pc;pc=ch;printf(“%c\n”,*(pc+5));}程序的運行結果是()

A.zB.0C.元素ch[5]的地址D.字符y的地址

13.鏈表不具有的特點是()。A.A.不必事先估計存儲空間

B.可隨機訪問任意元素

C.插入、刪除不需要移動元素

D.所需空間與線性表長度成正比

14.在下列模式中,能夠給出數據庫物理存儲結構與物理存取方法的是()。

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

15.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十進制代碼為97,則執(zhí)行上述程序段后輸出結果是()。A.因變量類型與格式描述符的類型不匹配輸出無定值

B.輸出項與格式描述符個數不符,輸出為零值或不定值

C.a,97,12k=12

D.a,97,k=12

16.下列關系表達式中,結果為“假”的是()。A.(3+4)>6B.(3!=4)>2C.3<=4||D.(3<4)=1

17.

18.

19.

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

A.0,-1,-1,-1

B.0,-1,-1,0

C.0,-1,-1,0,-1,0

D.0,-1,-1,-1,-1,-1

二、2.填空題(20題)21.下面程序的功能是調用sub函數計算數組a中字符串的長度,請?zhí)羁铡?/p>

sub(chars[])

{intn;

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

return【】;

}

main()

{char*a;intk;

gets(a);

【】

printf("%d",k);

22.下面的程序可列指定字符串中的字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#include<stdio.h>

#include<string.h>

main()

{char*str="ABCDabcd",temp;

intn,i;

n=strlen(str);

while(n->1)

for(i=0;i<n;i++

if(str[i]<str[i+1])

{temp=【】;

str[i]=str[i+1];

【】=temp;

}

printf(【】);

}

23.有以下程序:

main()

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

p=&a[0][0];

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

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

}

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

24.設a、b、c為整數,且a=2、b=3、c=4,則執(zhí)行完語句a*=18+(b++)-(++c);后,a的值是【】。

25.在程序設計階段應該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而用某種程序設計語言寫成程序。

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

27.設有如下程序:

main()

{intn1,n2;

scanf("%d",&n2);

while(n2!=0)

{n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序運行后,如果從鍵盤上輸入1298,貝愉出結果為【】。

28.數據結構分為邏輯結構與存儲結構,線性鏈表屬于【】。

29.下面程序的功能:將字符數組a中下標值為偶數的元素從小到大排列,其他元素不變。請?zhí)羁铡?/p>

#include<stdio.h>

#include<string.h>

main()

{chara[]="clanquage",t;

inti,j,k;

k=strlen(A);

for(i=0;i<=k-2;i+=2)

for(j=i+2;j<k;j+=2)

if(【】)

{t=a[i];a[i]=a[j];a[j]=t;}

puts(A);

printf("\n");

}

30.關系可以有3種類型,即基本關系(又稱基本表或基表)、查詢表和【】。

31.軟件工程研究的內容主要包括:【】技術和軟件工程管理。

32.設有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEF<CR>QTHRG<CR>,則程

序的輸出結果是______。

33.在E-R圖中,矩形表示【】。

34.若有定義:inta[4][4]={{l,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

35.函數delete(s,i,n)的作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

36.下列程序的輸出結果是16.00,請?zhí)羁眨?/p>

main()

}

inta=9,b=2;

floatx=【】,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

37.函數fun的功能是使一個字符串按逆序存放。請?zhí)羁铡?/p>

voidfun(charstr[])

{charm;inti,j;

for(i=0,j=strlen(str);i<【】;i++,j--)

{m=str[i];

str[i]=【】;

str[j-1]=m;

}

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

}

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

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

p=a;

39.設在主函數中有以下定義和函數調用語句,且fun函數為void類型;請寫出fun函數的首部【】(要求形參名為b)。main(){doubles[10][22];intn;……fun(s);……}

40.若輸入字符串:(圖片),則以下while循環(huán)體將執(zhí)行【】次。

while((ch=getchar())=='e')printf("*");

三、1.選擇題(20題)41.有以下程序main(){inti;for(i=0;i<3;i++)switch(i){case0:printf("%d",i);case2:printf("%d",i);default:printf("%d",i);}}程序運行后的輸出結果是______。

A.22111B.21021C.122D.12

42.有如下程序main(){inty=3,x=3,z=1;printf("%d\n",(++x,y++),z+2);}運行該程序的輸出結果是_____。

A.34B.42C.43D.33

43.以下程序段中,不能正確賦字符串(編譯時系統(tǒng)會提示錯誤)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

44.下列程序執(zhí)行后的輸出結果是()。voidfuncl(inti);voidfunc2(inti);charst[]="hello,friend!";voidfuncl(inti){printf("%C",st[i]);if(i<3){i+=2;func2(i);)}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;func1(i);}}main(){inti=0;funcl(i);printf("\n");)

A.hlmB.hloC.helloD.he1

45.下面程序輸出的結果是

main()

{inti;

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

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

printf("%d",a[2-i][i]);}

A.159B.753C.357D.591

46.有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;}}main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",strl);}程序運行后的輸出結果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

47.已知函數的調用形式:fread(buf,size,count,fp),參數buf的含義是

A.一個整型變量,代表要讀入的數據項總數

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

C.一個指針,指向要讀入數據的存放地址

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

48.若i是int型變量,且有下面的程序段:for(i=4;i<6;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);上面程序段的輸出結果是______。

A.**4##5B.##4**5C.**4**5D.##4##5

49.以下程序的輸出結果是______。#include<stdio.h>main(){inta=200;#definea100printf("%dd",a);#undefaprintf("%d",a);}

A.200100B.100100C.100200D.200200

50.下列程序執(zhí)行后的輸出結果是______。main(){intx='f';printf("%c\n",'A'+(x-'a'+l));}

A.GB.HC.ID.J

51.設有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0\},*p;p=&a[0];下面其值為6的表達式為______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

52.以下程序的輸出結果是()#include<stdlib.h>inta[3][3]={1,2,3,4,5,6,7,8,9},*p;main(){p=(int*)malloc(sizeof(int));f(p,a);printf("%d\n",*p);}f(int*s,intp[][3]){*s=p[1][1];}

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

53.fgetc函數的作用是從指定文件讀入一個個字符,該文件的打開方式必須是______。

A.只讀B.追加C.讀或讀寫D.以上均正確

54.下列程序執(zhí)行后的輸出結果是main(){inta[3][3],*p,i;p=&a[0][0];for(i=1;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}

A.3B.6C.9D.隨機數

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

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

56.以下敘述中正確的是A.A.C程序中的注釋只能出現在程序的開始位置和語句的后面

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

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

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

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

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

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

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

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

58.設變量x和y均已正確定義并賦值。下列if語句中,在編譯時將產生錯誤信息的是()。

A.if(x++);

B.if(x>y&&y!=0);

C.if(x>0)x--

D.if(y<0){;}elsey++;elsex++;

59.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n')switch(c-'2'){case1:putchar(c+4);case2:putchar(c+4);break;case3:putchar(c+4);case4:putchar(c+4);break;}printf("\n");}輸入以下數據,<CR>代表一個回車符,2743<CR>程序的輸出結果是()。

A.877B.966C.778D.766

60.當a=4,b=5,c=7,d=6時,執(zhí)行下面一段程序:if(a<B)if(c<D)x=1;elseif(a<C)if(b<C)x=2:elsex=3;elsex=4;elsex=5;程序執(zhí)行后,x的值為()。

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

四、選擇題(20題)61.下列能正確定義且賦初值的語句是()。

A.intn1=n2=1;

B.charC=99;

C.floatf=f+1;

D.doublex=1.2E5.6;

62.當執(zhí)行下面的程序時,如果輸入ABC,則輸出結罘是()。#include<stdio.h>#include<string.h>main(){charss[10]="1,2,3,4,5":gets(ss);strcat(ss,"6789");printf("%s\n",ss);}A.ABC6789B.ABC67C.12345ABC6D.ABC456789

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

A.c語言規(guī)定必須用main作為主函數名,程序將從此開始執(zhí)行

B.可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執(zhí)行

C.c語言程序將從源程序中第一個函數開始執(zhí)行、

D.main的各種大小寫拼寫形式都可以作為主函數名,如MAIN,Main等

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

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

65.

66.有以下程序

#include<stdio.h>

main()

{intx=1,y=2,z=3;

if(x>y)

if(y<z)printf("%d",++z);

elseprintf("%d",++y);

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

}

程序的運行結果是

A.A.331

B.41

C.2

D.1

67.有以下程序段:

以下選項中表達式的值為11的是()。

A.

B.

C.

D.

68.

69.

70.下面各選項中,均是C語言中合法標識符的選項組是

A.forchinatoB.long_123short56_do

C.voidunion_342D.text_023_3ew

71.有以下程序:

程序

溫馨提示

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

評論

0/150

提交評論