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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.

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

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

3.在數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的()結構。

A.邏輯B.存儲C.邏輯和存儲D.物理

4.有以下程序:#include<stdio.h>main(){intx=3,y=5,z1,z2;z1=y^x^y;z2=x^y^x;printf(“%d,%d\n”,z1,z2);}程序運行后的輸出結果是()。

A.7,7B.5,3C.8,8D.3,5

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

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

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

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

6.下面合法的C語言字符常量是()。

A.'\t'B."A"C.65D.A

7.為了避免在嵌套的條件語句ifelse中產(chǎn)生二義性,C語言規(guī)定,else子句總是與()配對。

A.縮排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if

8.若有如下定義,則__________是對數(shù)組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

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

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

10.有以下程序:#include<stdio.h>#defineSUB(x,y)(x)*(y)main(){inta=3,b=4;printf(“%d\n”,SUB(a++,b++));程序運行后的輸出結果是()。

A.15B.12C.16D.20

11.以下程序的輸出結果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

12.C語言中運算對象必須是整型的運算符是()。

A.%=B./C.=D.<=

13.設x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||114.有以下程序

#include<stdio.h>

main()

{ini,j,m=1;

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

{for(j=3;j>0;j--)

{if(i*j)>3)break;

m=i*j;

}

}

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

程序運行后的輸出結果是A.m=6B.m=2C.m=4D.m=5

15.標準庫函數(shù)fgets(str,n,fp)的功能是()。A.從fp所指的文件中讀取長度不超過n-1的字符串存入指針str所指的內(nèi)存

B.從fp所指的文件中讀取長度為n的字符串存入指針str所指的內(nèi)存

C.從fp所指的文件中讀取n個字符串存入指針str所指的內(nèi)存

D.從fp所指的文件中讀取長度為n-1的字符串存入指針str所指的內(nèi)存

16.fgetc函數(shù)的作用是從指定文件讀入—個字符,該文件的打開方式必須是______。

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

17.

18.對于如圖所示二叉樹采用中根遍歷,正確的遍歷序列應為()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

19.有以下程序:#include<stdio.h>main(){intx=072;printf(“>%d<\n”,x+1);}程序運行后的輸出結果是()。

A.>073<B.>73<C.>142<D.>59<

20.對線性表進行折半查找時,必須要求線性表()。

A.順序方式存儲B.鏈式方式存儲C.以順序方式存儲,且結點按關鍵字有序排列D.以鏈式方式存儲,且結點按關鍵字有序排列

二、2.填空題(20題)21.下面的程序可對指定字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#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(【】);

}

22.以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數(shù)中的最大值,輸出到屏幕上。請?zhí)羁铡?/p>

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

【】;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax=*pz;

printf("max=%d\n",max);}

23.當運行以下程序時,輸入abcd,程序的輸出結果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

24.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>

#include<stdioo.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

25.在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

26.函數(shù)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);

}

27.下面程序的輸出結果是()。#include<stdio.h>main(){staticchara[]="china";char*ptr=a;while(*ptr){printf("%c",*ptr-32);ptr++;}}

28.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

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

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");

}

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

29.當線性表的元素總數(shù)基本穩(wěn)定,且很少進行插入和刪除操作,并要求以很快的速度存取線性表中的數(shù)據(jù)元素時,應采用【】存儲結構。

30.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

31.下面程序的運行結果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

printf("%d\n",sizeof(A));

}

32.語句:x++;++x;x=1/x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

33.下面程序的功能是兩個整數(shù)進行交換,請?zhí)羁铡?/p>

sub(int*x,int*y)

{【】

z=*x;*x=*y;*y=z;

return;}

main()

{intm,n,*t1,*t2;

scanf("%d,%d",&m,&n);

t1=&m;t2=&n;

【】

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

34.以下程序用來輸出結構體變量ex所占存儲單元的字節(jié)數(shù):

structst

{charname[20];doublescore;};

main()

{structstex;

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

}

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

36.以下函數(shù)用以求x的y次方。補足所缺語句。

Doublefun(doublex,inty)

{inti;doublez=1;

for(i=1;i【】;i++)

z=【】;

returnz;

}

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

main()

{charch;

FILE*fp;

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

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

fputc(ch,fp);

______;

}

38.若有定義floatb[15],*p=b;,且數(shù)組b的首地址為200H,則p+13所指向的數(shù)組元素的地址為______。

39.有以下程序

voidf(inty,int*x)

{y=y+*x;*X=*X+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

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

40.有以下程序:

intf(intn)

{if(n==1)retum1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

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

三、1.選擇題(20題)41.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.gets(&s[0]);

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

C.gets(s);

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

42.若執(zhí)行以下程序時從鍵盤上輸入9,則輸出結果是______。main(){intn;scanf("%d:",&n);if(n++<10)printf("%d\n",n);elseprinf("%d\n",n--);}

A.11B.10C.9D.8

43.在C語言中提供的合法的關鍵詞是______。

A.swicthB.cherC.CaseD.default

44.下面程序的輸出結果()main(){unsigneda=32768;printf("a=%d\n",a);}

A.a=32768B.a=32767C.a=-32768D.a=-1

45.有以下程序: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=10*num+p[i][j]-'0';j+=2;}}printf("%d\n",num);}程序執(zhí)行后的輸出結果是()。

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

46.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"}*p=str;printf("%\n",strlen(p+20));}程序運行后的輸出結果是

A.0B.5C.7D.20

47.表達式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

48.設變量x為float型且已賦值,則以下語句中能將x中的數(shù)值保留到小數(shù)點后兩位,并將第三位四舍五入的是A.x=x*100+0.5/100.0;

B.x=(x*100+0.5)/100.0;

C.x=(int)(x*100+0.5)/100.0;

D.x=(x/100+0.5)*100.0;

49.下列程序的輸出結果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

50.下面程序段的運行結果是char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.無確定的輸出結果

51.有以下程序:main(){inta=0,b=0,C=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,D);}程序輸出()。

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.編譯有錯

52.有以下程序:

#include<stdlib.h>

structNODE{

intnurn;

structNODE*next;

};

main()

{structNODE*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

53.若程序中已包含頭文件stdio.h,以下選項能正確運用指針變量的程序段是()。

A.int*i=NULL;scanf("%d",i);

B.float*f=NULL;*f=10.5;

C.chart='m',*c;*c=&t;

D.long*L;L='\0';

54.有以下程序

#include<stdio.h>

main0

{inty=9;

for(;y>0;y--)

if(y%3==0)printf("%d",--y);

}

程序的運行結果是

A.741B.963C.852D.875421

55.下列有關格式輸入函數(shù)scanf的敘述中正確的是()

A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”

B.可以只有格式控制項,沒有地址列表項

C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);

D.當輸入數(shù)據(jù)時,必須指明變量地址

56.若有下列定義(設int類型變量占2個字節(jié)):floatx=123.4567;則下列語句:printf("x=%5.2f",x);輸出的結果是()。

A.x=123.46B.123.4567C.x=123.4567D.123.46

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

58.有以下結構體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的3個連續(xù)結點。structnode{intdata;structnode*next;}*p,*q,*r;

現(xiàn)要將q所指結點從鏈表中刪除,同時要保持鏈表的連續(xù),以下不能完成指定操作的語句是

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

B.p-next=p->next->next;

C.p->next=r;

D.p=q->enxt;

59.有以下程序段intn=0,p;do{scanf("%d",&p);n++;}while(p!=12345&&n<3);此處do-while循環(huán)的結束條件是()

A.p的值不等于12345并且n的值小于3

B.p的值等于12345并且n的值大于等于3

C.p的值不等于12345或者n的值小于3

D.p的值等于12345或者n的值大于等于3

60.執(zhí)行x=5>1+2&&2||2*4<4-!0后,x的值為______。

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

四、選擇題(20題)61.下列敘述中正確的是()。

A.程序執(zhí)行的效率與數(shù)據(jù)的存儲結構密切相關

B.程序執(zhí)行的效率只取決于程序的控制結構

C.程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量

D.以上三種說法都不對

62.有以下程序

63.

64.(4)下面描述中,符合結構化程序設計風格的是______。

A.使用順序、選擇和重復三種基本控制結構表示程序的控制邏輯

B.模塊只有一個入口,可以有多個出口

C.注重提高程序的執(zhí)行效率

D.不使用goto語句

65.

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

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

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

D.軟件的運行維護過程

67.

68.在面向對象方法中,()描述的是具有相似屬性與操作的一組對象。

A.屬性B.事件C.方法D.類

69.語句:“printf("%d",(a=)&&(b=-2));”的輸出結果是()。A.A.無輸出B.結果是不確定C.-1D.1

70.c源程序中不能表示的數(shù)制是()。

A.二進制B.八進制C.十進制D.十六進制

71.

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

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

73.執(zhí)行下述程序后,輸出的結果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

74.下列敘述中不正確的是。

A.算法的效率不僅與問題的規(guī)模有關,還與數(shù)據(jù)的存儲結構有關

B.算法的時間復雜度是指執(zhí)行算法所需要的計算工作量

C.數(shù)據(jù)的邏輯結構與存儲結構是一一對應的

D.算法的時間復雜度與空間復雜度不一定相關

75.

76.下面的程序段運行后,輸出結果是()。

A.9B.不確定值C.0D.18

77.

78.

79.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是

A.數(shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復制透明性

C.事物管理的集中性D.數(shù)據(jù)冗余

80.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術問題

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型參數(shù)m,計算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,則應輸出0.000162。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.假定輸人的字符串中只包含字母和*號。請編寫函數(shù)proc,它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應當是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>voidproc(char*str){}voidmain{charstr[81];printf("Enterastring:kn");gets(str);proc(str);printf("Thestringafterdeleted:kn");puts(str);}

參考答案

1.C

2.D

3.A

4.D是按位異或運算,其功能是參與運算的兩個數(shù),按位異或,如果兩個相應位相同,結果為0,否則為1。接位異或運算滿足如下規(guī)則:①滿足交換律;②一個數(shù)與0異或的結果仍是原數(shù);③一個數(shù)與1異或的結果是原數(shù)按位取反。所以題干中,“y^x^y”等價于等價于“y^y^x”,等價于“0^x”,等價于x,即“z1=x”;“x^y^x”等價于“x^x^y”,等價于“0^y”,等價于y,即“z2=y”,輸出結果為:3,5。故本題答案為D選項。

5.C

6.A

7.B解析:本題考查ifelse語句。C語言規(guī)定,else總是與它前面的最近的if配對。

8.D

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

10.B#define命令是C語言中的一個宏定義命令,標識符一般使用大寫,用標識符定義一個:字符串,該標識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標識符。后綴自增運算a++表示先運算,后自加。意思是遇到a++了,先把當前的a的值拿來參加運算,后面再自加。SUB(a++,b++)→(a++)*(b++)=3*4。故本題答案為B選項。

11.D本題可以寫成:a+a+(a-(a*a)),所以*的優(yōu)先級最高,其次是-=的,+的優(yōu)先級最低,因此先求a-=a*a=9,表達式變?yōu)閍+a+-=9,a即a=a-9=-6,再次變?yōu)閍+(-6)=-12,故選擇D選項。

12.A解析:C++語言規(guī)定:取余運算符的運算對象必須是整型,復合運算符“%=”中包含%運算,它的運算對象也必須是整型。

13.D本題考查邏輯運算符的使用。當“&&”的兩個運算對象都是邏輯1時,表達式返回值才是1;“||”的兩個運算對象至少有一個是邏輯1時,表達式返回值也是1,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

14.A

15.Afgets函數(shù)的功能是從fp所指文件中讀入n-1個字符放入以str為起始地址的空間內(nèi),讀取長度不超過n-1,讀入結束后,自動在最后添加’\\0’,選項A正確。本題答案為A選項。

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

17.B

18.D

19.D題干中x是一個整型變量,賦值為072。以0開頭的整數(shù)是八進制的表示形式。printf函數(shù)中,格式字符%d表示以十進制形式輸出“x+1”,所以需要將072轉換成十進制數(shù),即7×8+2=58,輸出“x+1”為59。故本題答案為D選項。

20.C

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

22.*pmax=*px*pmax=*px解析:首先將變量x的值放到max中,然后依次和變量y、z進行比較。若有比max大的數(shù),將該數(shù)存放到max中,這樣最后在max中的值就是x、y、z中的最大值。

23.a*b*c*d*a*b*c*d*解析:程序中的變量i用于存放字符串str的長度,執(zhí)行while語句,通過分析可知,字符串第2*i項的值可由第i項的值得到;第2*i-1項直接賦值為。號,i減1,如此反復直到不滿足i>0的條件時,輸出運行后的字符串。

24.s[i]>='0'&&s[i]<='9'或isdigit(s[i])s[i]>='0'&&s[i]<='9'或isdigit(s[i])解析:“chars[80],d[80];”定義了兩個字符型數(shù)組,可以放入80個字符。gets函數(shù)是C語言提供的一個專門用于讀字符串的函數(shù),它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數(shù)字字符,因為字符數(shù)據(jù)在內(nèi)存中以相應的ASCII碼存放,所以只需比較相應的字符是否在'0'到'9'之間,或使用庫函數(shù)isdigit(),來判斷是否為數(shù)字字符。如果是數(shù)字字符則將此字符存入d數(shù)組中,不是則繼續(xù)進行下一字符的比較,直至s結束(即'0'的出現(xiàn))。將'\\0'字符作為字符串d結束標志,最后調(diào)用puts函數(shù)輸出d。所以空白處應填入比較語句s[i]>>='0'&&s[i]<='9'或isdigit(s[i])以及其他任何等價表達式。

25.關系關系解析:關系模型用;維表表示,則每個;維表代表一種關系。

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

27.CHINA

28.154321,5,4,3,2解析:第一次調(diào)用函數(shù)f后aa[0]=5、aa[4]=1;第二次調(diào)用函數(shù)f后aa[1]=4、aa[4]=2;第三次調(diào)用函數(shù)f后aa[3]=3。正確答案為1,5,4,3,2。

29.順序順序

30.x+=1x+=1解析:本題考查“++”,“--”運算符?!?+”、“--”只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

31.8080解析:本題考查的知識點是共用體數(shù)組變量所占內(nèi)存的長度。數(shù)組a是共用體變量,共用體類型變量所占的內(nèi)存長度為最大成員的長度,即單精度數(shù)組的長度,為4×4=16,因此,數(shù)組a所占的內(nèi)存長度為5×16=80,所以最后輸出的s的值為80。

32.x+=1x+=1解析:本題考查'++'、'--'運算符。'++'、'--'只能作用于變量,不能用于表達式或常量;前綴形式是在使用變量之前先將其值增1或減1,后綴形式是先使用變量原來的值,使用完后再使其增1或減1。

33.intz;sub(t1t2);

34.ex或structstex或structst解析:求一個變量所占的存儲單元數(shù),用sizeof函數(shù),參數(shù)為該變量名或其變量類型。

35.55解析:分析程序,當a=3;b=4;c=5時,判斷語句a>b不成立,所以不執(zhí)行后面的語句,直接執(zhí)行“printf('%d\\n',c);”語句,輸出c的值,輸出結果為5。

36.<y+1z*x

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

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

39.8484解析:本題考核的知識點是函數(shù)的調(diào)用、值傳遞和地址傳遞的區(qū)別?!爸祩鬟f”指實參將值傳遞給形參后,實參與形參再無聯(lián)系。也就是說對行參的改變將不影響實參;地址傳遞是指地址或數(shù)組名作為形參時的參數(shù)傳遞,這種情況下對形參的改變將對實參產(chǎn)生影響.函數(shù)f(Y*x)的作用是讓y的值加上指針x所指向變量的值,讓指針x所指向變量的值加上y的值。由于形參y是傳值的,形參x是傳地址的,故調(diào)用該函數(shù)后,作為實參的y的值將不改變,而實參x的值將改變,故最后輸出的y的值為4,而x的值為8。

40.33解析:i=1時,f(1)=1,j=j+f(1)=0+1=1;i=2時,f2=f(1)+1=1+1=2,j=j+f(2)=1+3=3;此時循環(huán)結束,程序運行后的輸出結果是3。

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

42.B解析:n++是在語句結束后再加1,因此,if語句中相當于判斷的是9<10,當然是執(zhí)行if語句后面的printf語句,而這時,因為if語句被執(zhí)行,n的值也被加1,所以在打印時,n值為10,而n-是在printf語句執(zhí)行完畢后再減1的。

43.D解析:選項A應為多分支語句中的switch,選項B應為定義字符類型的char,選項C應為多分支語句中的分支關鍵詞case(小寫)。因此,選項A、B、C都有書寫上的錯誤,只有選項D正確。

44.C

45.C解析:通過賦值表達式指針數(shù)組*p[]等價于數(shù)組p[2][4];表達式“p[i][j]-'0'”可用來表示該字符數(shù)組元素的數(shù)值,故表達式“(p[i][j]-'0')%2”為判斷該字符數(shù)組元素的數(shù)值的奇偶性,表達式“num=10*num+p[i][j]-'0'”中的數(shù)值運算表示直接加該字符數(shù)組元素的數(shù)值。

46.C解析:本題考核的知識點是二維數(shù)組的初始化及庫函數(shù)strlen()的應用。主函數(shù)中定義了一個二維字符數(shù)組并初始化,初始化后的結果為str[0]='Hello',str[1]='Beijing',然后定義一個字符指針變量p并讓它指向數(shù)組的首地址,即指向str[0],而在C語言中無論是一維還是多維數(shù)組,其元素在內(nèi)存中都是順序存放的,故p+20后指針指向str[1],所以strlen(P+20);返回的是str[1]中的字符串的長度,即Beijing的長度為7,所以最后輸出的值為7,所以,4個選項中選項C符合題意。

47.D解析:*、/和%的優(yōu)先級要高于+和—,同級別的運算符從左至右運算。所以本題首先計算5/2和5%2,雖然我們都知道5/2的結果應該是2.5,但C語言中規(guī)定了兩個整數(shù)相除的結果為整數(shù),而且是截尾取整,所以5/2的結果是2;5%2表示的是5除以2所得的余數(shù),其結果為1。計算完后,表達式變?yōu)?.6-2+1.2+1,從左至右計算不難得出結果為3.8,故應該選擇D。

48.C解析:本題考核的知識點是實型變量中小數(shù)點的位數(shù)。選項A中0.5/100.0將保留小數(shù)點后六位,不滿足題目要求,故選項A不正確:選項B和選項D也將保留小數(shù)點后六位,不滿足題目要求,故選項B不正確:所以,4個選項中選項C符合題意。

49.C解析:本題考查ifelse語句。第一個if語句,先判斷條件,發(fā)現(xiàn)a<b成立,執(zhí)行下列的復合語句,得c=a*b=20,b、a的值不變。

50.C解析:對于字符串指針,其保留的是整個串的首地址,即為第一個字符的起始地址,當該指針做算術運算時,就是該指針根據(jù)其類型向后移動相應的存儲空間。

51.D解析:C語言規(guī)定最左邊變量所得到的新值就是賦值表達式的值,故“if(a=1)”條件表達式為真,b=1;else總是與上面最近的沒有被使用的if配對,導致不合法的if-else結構,if語句后面的兩條語句應用“{)”括起來。

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

53.D解析:本題考查指針變量的運用。選項A)、B)的指針定義錯誤,空指針NULL是對指針變量賦。值而得到的。例如:

#defineNULL0

int*p=NULL;

對指針變量賦。值和不賦值的時候意義是不同的:指針變量未賦值時,它是指向任意不確定的存儲單元,不能使用,否則將造成意外錯誤;而指針變量賦0值后,則可以使用,只是它不指向具體的變量而已。選項C)中的*c=&t;錯誤,因為&t是地址,而*c是值。選項D)是讓指針L指向字符串的末尾,即字符串的結束符。

54.C解析:本題考察變量的自加'++'和自減'--'問題。當y的值為9、6或3時,if語句的條件成立,執(zhí)行輸出語句,輸出表達式--y的值,y的自減要先于輸出語句執(zhí)行,故輸出結果為852。

55.D解析:如果是指針型變量或數(shù)組名,則變量前不加地址符號&,所以選項A的說法有誤。必須有地址列表項才能實現(xiàn)正確輸入,所以選項B的說法有誤。在輸入數(shù)據(jù)時,不可以指定實型數(shù)據(jù)的精度,所以選項C的說法有誤。只有選項D的說法正確。

56.A解析:本題考查printf函數(shù)的格式?!?5.2f”格式符中的“f”表示以帶小數(shù)點的形式輸出單精度或者雙精度數(shù):“5”表示指定數(shù)據(jù)輸出寬度為5;“.2”表示指定輸出數(shù)據(jù)小數(shù)位占2位數(shù),并對截去的第一位小數(shù)做四舍五入處理。

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

58.D解析:本題考查鏈表結點的刪除。q->next中存放的是r所指結點的首地址,將r所指結點的首地址存于p->next中,則實現(xiàn)刪除q所指結點的功能,并保持鏈表連續(xù),p所指結點與r所指結點相連。

59.D解析:本題中,循環(huán)執(zhí)行判斷條件為while后面括號里的表達式即p!=12345&&n<3(意思為p不等于12345且n小于3)是否為“真”,由此可得循環(huán)結束的條件為:p等于12345或者n大于等于3。所以4個選項中D正確。

60.C

61.A本題考查程序效率。程序效率是指程序運行速度和程序占用的存儲空間。影響程序效率的因素是多方面的,包括程序的設計、使用的算法、數(shù)據(jù)的存儲結構等。在確定數(shù)據(jù)邏輯結構的基礎上,選擇一種合適的存儲結構,可以使得數(shù)據(jù)操作所花費的時間少,占用的存儲空間少,即提高程序的效率。因此,本題選項A的說法是正確的。

62.A涵數(shù)將a[0]自增5次,所以答案選擇A)。

63.D

64.A

65.C

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

67.D

68.D解析:類(calss)描述的是具有相似屬性與操作的一組對象,而一個具體對象則是其對應類的一個實例。

69.D因為在邏輯表達式中,兩邊的賦值表達式都成立,即值為1,故選擇D選項。

70.AA?!窘馕觥緾語言源程序不能表示八進制,在C語言中,所有的數(shù)值型常量都帶有符號,所以整型數(shù)量只區(qū)別整型和長整型兩種形式,整型常量和長整型常量均可用十進制、二進制、十六進制3種形式表示,故A不正確。

71.A

72.A判斷循環(huán)條件一k,k值為4,條件為真,執(zhí)行輸出語句,其中k一=3執(zhí)行后,k為1,即輸出為1,然后判斷循環(huán)條件一k,值為0,為假,循環(huán)結束。答案選擇A)。

73.D本題j=要是考查帶參數(shù)的宏的定義,過程如下:inta=a/S(k+m)/S(k+m)=a/(k+m*k+m/k+m)=9/(3十2*3十2/3十2*3十2)=0。

74.C本題主要考查與算法有關的基本知識。算法是對一個問題求解步驟的描述,是求解問題的方法,它是指令的有限序列,其中的每條指令表示一個或多個操作。算法的效率不僅與問題的規(guī)模有關,還與數(shù)據(jù)的存儲結構有關。

算法的時間復雜度和空間復雜度是衡量一個算法好壞的度量,其中時間復雜度是指執(zhí)行算法所需要的計算工作量;空間復雜度是指算法在執(zhí)行過程中所需要的計算機存儲空間。算法的空間復雜度與時間復雜度不一定相關。

數(shù)據(jù)的邏輯結構反映的是數(shù)據(jù)的邏輯關系,與數(shù)據(jù)的存儲結構無關,是獨立于計算機的。因此,題目中說數(shù)據(jù)的邏輯結構與存儲結構一一對應的說法不正確。本題答案選C。

75.A

76.C本題主要考查的是用二維數(shù)組首地址和

下標來引用二維數(shù)組元素的方法。通過分析可知,程序中的雙重循環(huán)定義了一個如下的二維數(shù)組:

012

234

456

簪由于數(shù)組的下標是從0開始的,所以二維數(shù)組元素a[i][j]表示的是二維數(shù)組a的第i+1行、第j+1列對應位置的元素。

77.D

78.C

79.C分布式數(shù)據(jù)庫是一種將數(shù)據(jù)分布存儲,但數(shù)據(jù)在邏輯上保持整體性的一種數(shù)據(jù)庫。分布式數(shù)據(jù)庫系統(tǒng)具有以下幾個特點:

(1)數(shù)據(jù)的物理分布性。分布式數(shù)據(jù)庫的數(shù)據(jù)不是存儲在一個場地上,不是集中存儲,而是存儲在計算機網(wǎng)絡上多個場的設備上。

(2)數(shù)據(jù)的邏輯整體性。雖然數(shù)據(jù)分布在各個場地,但邏輯上是一個整體,它們被所有的用戶共享,并由一個DDBMS統(tǒng)一管理。

(3)位置透明性和復制透明性。位置透明性是指用戶不必關心數(shù)據(jù)的邏輯分區(qū),不必關心數(shù)據(jù)物理位置分布的細節(jié);而復制透明性是指用戶不用關心數(shù)據(jù)庫在網(wǎng)絡中各個結點的復制情況,被復制的數(shù)據(jù)的更新都由系統(tǒng)自動完成。

(4)場地自治性。各場地的數(shù)據(jù)由本地DBMS管理,具有自治處理能力,能執(zhí)行局部的應用請求。

(5)數(shù)據(jù)冗余及冗余透明性。與集中式數(shù)據(jù)庫系統(tǒng)追求低冗余度不同,DDBS通過數(shù)據(jù)的適當冗余來提高系統(tǒng)的可靠性、可用性和改善系統(tǒng)性能。但這種冗余對用戶是透明的,即用戶不必知道冗余的存在,冗余副本之間的數(shù)據(jù)一致性問題由系統(tǒng)負責。

(6)事務管理的分布性。數(shù)據(jù)的分布性必然造成事務執(zhí)行和管理的分布性,即一個全局事務的執(zhí)行可分解為在若干場地上子事務(局部事務)的執(zhí)行。事務的原子性、一致性、隔離性、持久性以及事務的恢復也都具有分布性特點。

80.C\r\n軟件工程是試圖用工程、科學和數(shù)學的原理與方法研制、維護計算機軟件的有關技術及管理方法。軟件工程的主要思想是強調(diào)在軟件開發(fā)工程中需要應用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進度無法控制、軟件質量難以保證、軟件不可維護或維護程度低、軟件得成本不斷提高、軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和應用需求的增長。軟件項目的管理、軟件產(chǎn)品的生產(chǎn)率、軟件開發(fā)中的技術都是軟件工程需要解決的部分問題。因此選項C正確。

81.(1)錯誤:proc(intm)

正確:doubleproc(intm)

(2)錯誤:for(i=100,i<=m,i+=100)

正確:for(i=100;i<=m;i+=100)

【解析】由主函數(shù)中的函數(shù)調(diào)用和函數(shù)proc()的返回值可知,函數(shù)proc()的返回值類型為double型數(shù)據(jù)。因此,“proc(intm)”應改為“doubleproc(iram)”;根據(jù)C語言的語法規(guī)則,for循環(huán)的3個條件之間為分號間隔,因此,“for(i=100。i<=m,i+=100)”應改為“for(i=100;i<=m;i+=100)”。

82.voidproc(char*str){char*p=str;while(*p==*)p++;//通過p的移動來達到使p指向第一個不是*號的字符for(;*p!=\0;p++,str++)//把從第一個不是*號的字符放到a中*str=*P:*str=\0;//最后用\0作為字符串結束標志}【解析】題目中要求將字符串中的前導*號全部刪除,首先將指針P移動到第一個不是*的字符,將指針P之后的字符放入原來的字符串中,并為新的字符串添加結束符。</y&&!z||1>2021年四川省南充市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.

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

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

3.在數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的()結構。

A.邏輯B.存儲C.邏輯和存儲D.物理

4.有以下程序:#include<stdio.h>main(){intx=3,y=5,z1,z2;z1=y^x^y;z2=x^y^x;printf(“%d,%d\n”,z1,z2);}程序運行后的輸出結果是()。

A.7,7B.5,3C.8,8D.3,5

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

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

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

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

6.下面合法的C語言字符常量是()。

A.'\t'B."A"C.65D.A

7.為了避免在嵌套的條件語句ifelse中產(chǎn)生二義性,C語言規(guī)定,else子句總是與()配對。

A.縮排位置相同ifB.其前面最近的ifC.其后面最近的ifD.同一行上的if

8.若有如下定義,則__________是對數(shù)組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

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

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

10.有以下程序:#include<stdio.h>#defineSUB(x,y)(x)*(y)main(){inta=3,b=4;printf(“%d\n”,SUB(a++,b++));程序運行后的輸出結果是()。

A.15B.12C.16D.20

11.以下程序的輸出結果是()。main{inta=3:printf("%d\n",(a+a-=a*a));}A.-6B.12C.0D.-12

12.C語言中運算對象必須是整型的運算符是()。

A.%=B./C.=D.<=

13.設x、y和z是int型變量,且x=4,y=6,z=8,則下列表達式中值為0的是()。

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||114.有以下程序

#include<stdio.h>

main()

{ini,j,m=1;

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

{for(j=3;j>0;j--)

{if(i*j)>3)break;

m=i*j;

}

}

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

程序運行后的輸出結果是A.m=6B.m=2C.m=4D.m=5

15.標準庫函數(shù)fgets(str,n,fp)的功能是()。A.從fp所指的文件中讀取長度不超過n-1的字符串存入指針str所指的內(nèi)存

B.從fp所指的文件中讀取長度為n的字符串存入指針str所指的內(nèi)存

C.從fp所指的文件中讀取n個字符串存入指針str所指的內(nèi)存

D.從fp所指的文件中讀取長度為n-1的字符串存入指針str所指的內(nèi)存

16.fgetc函數(shù)的作用是從指定文件讀入—個字符,該文件的打開方式必須是______。

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

17.

18.對于如圖所示二叉樹采用中根遍歷,正確的遍歷序列應為()A.ABCDEFB.ABECDFC.CDFBEAD.CBDAEF

19.有以下程序:#include<stdio.h>main(){intx=072;printf(“>%d<\n”,x+1);}程序運行后的輸出結果是()。

A.>073<B.>73<C.>142<D.>59<

20.對線性表進行折半查找時,必須要求線性表()。

A.順序方式存儲B.鏈式方式存儲C.以順序方式存儲,且結點按關鍵字有序排列D.以鏈式方式存儲,且結點按關鍵字有序排列

二、2.填空題(20題)21.下面的程序可對指定字符串進行從大到小排序,請將程序填完整。(注:程序采用了冒泡排序算法)

#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(【】);

}

22.以下程序的功能是:利用指針指向三個整型變量,并通過指針運算找出三個數(shù)中的最大值,輸出到屏幕上。請?zhí)羁铡?/p>

main()

{intx,y,z,max,*px,*py,*pz,*pmax;

scanf("%d%d%d",&x,&y,&z);

px=&x;py=&y;pz=&z;pmax=&max;

【】;

if(*pmax<*py)*pmax=*py;

if(*pmax<*pz)*pmax=*pz;

printf("max=%d\n",max);}

23.當運行以下程序時,輸入abcd,程序的輸出結果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

24.以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abcl23edf456gh,執(zhí)行程序后輸出:123456。請?zhí)羁铡?/p>

#include<stdioo.h>

#include<ctype.h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if(【】){d[j]=s[i];j++;}

d[j]='\0';

puts(d);

25.在關系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個______。

26.函數(shù)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);

}

27.下面程序的輸出結果是()。#include<stdio.h>main(){staticchara[]="china";char*ptr=a;while(*ptr){printf("%c",*ptr-32);ptr++;}}

28.有以下程序:

voidf(inta[],inti,intj)

{intt;

if(i<j)

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

f(a,i+1,j-1);

}

}

main()

{inti,aa[5]={1,2,3,4,5};

f(aa,0,4);

for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");

}

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

29.當線性表的元素總數(shù)基本穩(wěn)定,且很少進行插入和刪除操作,并要求以很快的速度存取線性表中的數(shù)據(jù)元素時,應采用【】存儲結構。

30.語句:x++;++x;x=1+x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

31.下面程序的運行結果是______。

typedefunionstudent

{

charname[10];

longsno;

charsex;

floatscore[4];

}STU;

main()

{

STUa[5];

printf("%d\n",sizeof(A));

}

32.語句:x++;++x;x=1/x;執(zhí)行后都使變量x中的值增1,請寫出一條同一功能的賦值語句______。

33.下面程序的功能是兩個整數(shù)進行交換,請?zhí)羁铡?/p>

sub(int*x,int*y)

{【】

z=*x;*x=*y;*y=z;

return;}

main()

{intm,n,*t1,*t2;

scanf("%d,%d",&m,&n);

t1=&m;t2=&n;

【】

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

34.以下程序用來輸出結構體變量ex所占存儲單元的字節(jié)數(shù):

structst

{charname[20];doublescore;};

main()

{structstex;

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

}

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

#include<stdio.h>

main()

{inta,b,c;

a=3;b=4;c=5;

if(a>b)

if(a>c)

printf("%d",a);

elseprintf("%d",b);

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

}

36.以下函數(shù)用以求x的y次方。補足所缺語句。

Doublefun(doublex,inty)

{inti;doublez=1;

for(i=1;i【】;i++)

z=【】;

returnz;

}

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

main()

{charch;

FILE*fp;

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

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

fputc(ch,fp);

______;

}

38.若有定義floatb[15],*p=b;,且數(shù)組b的首地址為200H,則p+13所指向的數(shù)組元素的地址為______。

39.有以下程序

voidf(inty,int*x)

{y=y+*x;*X=*X+y;}

main()

{intx=2,y=4;

f(y,&x);

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

}

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

40.有以下程序:

intf(intn)

{if(n==1)retum1;

elsereturnf(n-1)+1;}

main()

{inti,j=0;

for(i=1;i<3;i++)j+=f(i);

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

}

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

三、1.選擇題(20題)41.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是

A.gets(&s[0]);

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

C.gets(s);

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

42.若執(zhí)行以下程序時從鍵盤上輸入9,則輸出結果是______。main(){intn;scanf("%d:",&n);if(n++<10)printf("%d\n",n);elseprinf("%d\n",n--);}

A.11B.10C.9D.8

43.在C語言中提供的合法的關鍵詞是______。

A.swicthB.cherC.CaseD.default

44.下面程序的輸出結果()main(){unsigneda=32768;printf("a=%d\n",a);}

A.a=32768B.a=32767C.a=-32768D.a=-1

45.有以下程序: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=10*num+p[i][j]-'0';j+=2;}}printf("%d\n",num);}程序執(zhí)行后的輸出結果是()。

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

46.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"}*p=str;printf("%\n",strlen(p+20));}程序運行后的輸出結果是

A.0B.5C.7D.20

47.表達式3.6-5/2+1.2+5%2的值是A.4.3B.4.8C.3.3D.3.8

48.設變量x為float型且已賦值,則以下語句中能將x中的數(shù)值保留到小數(shù)點后兩位,并將第三位四舍五入的是A.x=x*100+0.5/100.0;

B.x=(x*100+0.5)/100.0;

C.x=(int)(x*100+0.5)/100.0;

D.x=(x/100+0.5)*100.0;

49.下列程序的輸出結果是()。main(){inta=4,b=5,c;if(a<B){c=a*b;printf("%d,%d,%d\n",b,a,C);}else{c=b/a;printf("%d,%d,%d\n",b,a,C);}}

A.4,5,12B.20C.5,4,20D.12

50.下面程序段的運行結果是char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.無確定的輸出結果

51.有以下程序:main(){inta=0,b=0,C=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%d\n",a,b,c,D);}程序輸出()。

A.0,1,2,0B.0,0,0,3C.1,1,2,0D.編譯有錯

52.有以下程序:

#include<stdlib.h>

structNODE{

intnurn;

structNODE*next;

};

main()

{structNODE*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

53.若程序中已包含頭文件stdio.h,以下選項能正確運用指針變量的程序段是()。

A.int*i=NULL;scanf("%d",i);

B.float*f=NULL;*f=10.5;

C.chart='m',*c;*c=&t;

D.long*L;L='\0';

54.有以下程序

#include<stdio.h>

main0

{inty=9;

for(;y>0;y--)

if(y%3==0)printf("%d",--y);

}

程序的運行結果是

A.741B.963C.852D.875421

55.下列有關格式輸入函數(shù)scanf的敘述中正確的是()

A.輸入項可以是C語言中規(guī)定的任何變量,并且在任何變量前必須加地址符號“&”

B.可以只有格式控制項,沒有地址列表項

C.在輸入數(shù)據(jù)時,必須規(guī)定精度。如:scanf("%4.2f",&d);

D.當輸入數(shù)據(jù)時,必須指明變量地址

56.若有下列定義(設int類型變量占2個字節(jié)):floatx=123.4567;則下列語句:printf("x=%5.2f",x);輸出的結果是()。

A.x=123.46B.123.4567C.x=123.4567D.123.46

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

58.有以下結構體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的3個連續(xù)結點。structnode{intdata;structnode*next;}*p,*q,*r;

現(xiàn)要將q所指結點從鏈表中刪除,同時要保持鏈表的連續(xù),以下不能完成指定操作的語句是

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

B.p-next=p->next->next;

C.p->next=r;

D.p=q->enxt;

59.有以下程序段intn=0,p;do{scanf("%d",&p);n++;}while(p!=12345&&n<3);此處do-while循環(huán)的結束條件是()

A.p的值不等于12345并且n的值小于3

B.p的值等于12345并且n的值大于等于3

C.p的值不等于12345或者n的值小于3

D.p的值等于12345或者n的值大于等于3

60.執(zhí)行x=5>1+2&&2||2*4<4-!0后,x的值為______。

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

四、選擇題(20題)61.下列敘述中正確的是()。

A.程序執(zhí)行的效率與數(shù)據(jù)的存儲結構密切相關

B.程序執(zhí)行的效率只取決于程序的控制結構

C.程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量

D.以上三種說法都不對

62.有以下程序

63.

64.(4)下面描述中,符合結構化程序設計風格的是______。

A.使用順序、選擇和重復三種基本控制結構表示程序的控制邏輯

B.模塊只有一個入口,可以有多個出口

C.注重提高程序的執(zhí)行效率

D.不使用goto語句

65.

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

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

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

D.軟件的運行維護過程

67.

68.在面向對象方法中,()描述的是具有相似屬性與操作的一組對象。

A.屬性B.事件C.方法D.類

69.語句:“printf("%d",(a=)&&(b=-2));”的輸出結果是()。A.A.無輸出B.結果是不確定C.-1D.1

70.c源程序中不能表示的數(shù)制是()。

A.二進制B.八進制C.十進制D.十六進制

71.

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

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

73.執(zhí)行下述程序后,輸出的結果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/s(k+m);printf("%d",a);}A.1B.4C.9D.0

74.下列敘述中不正確的是。

A.算法的效率不僅與問題的規(guī)模有關,還與數(shù)據(jù)的存儲結構有關

B.算法的時間復雜度是指執(zhí)行算法所需要的計算工作量

C.數(shù)據(jù)的邏輯結構與存儲結構是一一對應的

D.算法的時間復雜度與空間復雜度不一定相關

75.

76.下面的程序段運行后,輸出結果是()。

A.9B.不確定值C.0D.18

77.

78.

79.分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是

A.數(shù)據(jù)的物理分布性和邏輯整體性B.位置透明性和復制透明性

C.事物管理的集中性D.數(shù)據(jù)冗余

80.下列描述中正確的是()。

A.軟件工程只是解決軟件項目的管理問題

B.軟件工程主要解決軟件產(chǎn)品的生產(chǎn)率問題

C.軟件工程的主要思想是強調(diào)在軟件開發(fā)過程中需要應用工程化原則

D.軟件工程只是解決軟件開發(fā)中的技術問題

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:根據(jù)整型參數(shù)m,計算如下公式的值:y=1/(100100)+1/(200200)+1/(300300)+…+1/(mm)例如,若m=4000,則應輸出0.000162。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.假定輸人的字符串中只包含字母和*號。請編寫函數(shù)proc,它的功能是:將字符串中的前導*號全部刪除,中間和后面的*號不刪除。例如,若字符串中的內(nèi)容為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應當是a*bc*def*g****。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填入所編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>voidproc(char*str){}voidmain{charstr[81];printf("Enterastring:kn");gets(str);proc(str);printf("Thestringafterdeleted:kn");puts(str);}

參考答案

1.C

2.D

3.A

4.D是按位異或運算,其功能是參與運算的兩個數(shù),按位異或

溫馨提示

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

評論

0/150

提交評論