2021-2022年湖北省荊門市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2021-2022年湖北省荊門市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2021-2022年湖北省荊門市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2021-2022年湖北省荊門市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2021-2022年湖北省荊門市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡介

2021-2022年湖北省荊門市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列語句組中,正確的是()。

2.設(shè)有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序為主存儲,a11為第一元素,其存儲地址為1,每個元素占一個地址空間,則a85的地址為()。

A.13B.33C.18D.40

3.對于順序存儲的線性表,訪問結(jié)點和增加、刪除結(jié)點的時間復(fù)雜度為()。

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

4.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

5.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

6.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序的運(yùn)行結(jié)果是()。

A.55B.50C.45D.60

7.有以下程序,程序中庫函數(shù)islower(ch)用以判斷ch中的字母是否為小寫字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

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

A.一個算法的空間復(fù)雜度打,則其時間復(fù)雜度也必定大

B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定小

C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度也必定小

D.算法的時間復(fù)雜度與空間復(fù)雜度沒有直接相關(guān)

9.若x,i,j和k都是int型變量,則執(zhí)行下面表達(dá)式后x的值為()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

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

A.在C語言中,函數(shù)中的自動變量可以賦初值,每調(diào)用一次賦一次初值

B.在C語言中,在調(diào)用函數(shù)時,實參和對應(yīng)形參在類型上只需賦值兼容

C.在C語言中,外部變量的隱含類型是自動存儲類別

D.在C語言中,函數(shù)形參的存儲類型是自動(auto)類型的變量

11.在計算機(jī)中,算法是指()

A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法

12.

有以下程序:

main

{intx=102,y=012;

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

}

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

A.10,01B.02,12C.102,10D.02,10

13.下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

14.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序運(yùn)行后的輸出結(jié)果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

15.算法應(yīng)該是()

A.程序B.問題求解步驟的描述C.要滿足五個基本特性D.B和C

16.

17.

18.體育課的鈴聲響了,同學(xué)們都陸續(xù)地奔向操場,按老師的要求從高到矮站成一排。每個同學(xué)按順序來到操場時,都從排尾走向排頭,找到第一個比自己高的同學(xué),并站在他的后面。這種站隊的方法類似于()算法。

A.快速排序B.插入排序C.冒泡排序D.歸并排序

19.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請輸人2個數(shù):");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時產(chǎn)生錯誤,其出錯原因是()。A.定義語句出錯,case是關(guān)鍵字,不能用做用戶自定義標(biāo)識符

B.定義語句出錯,printF不能用做用戶自定義標(biāo)識符

C.定義語句無錯,scanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出case的值

20.

二、2.填空題(20題)21.下列函數(shù)從字符數(shù)組s[]中刪除和c一樣的字符,請在下面橫線處填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}

22.條件“20<x<30或x<-100”的C語言表達(dá)式是【】。

23.算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。

24.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

25.已有文本文件test.txt,其中的內(nèi)容為:Hello,everyone!。以下程序中,文件test.txt已正確為“讀”而打開,由此文件指針fr指向該文件,則程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{FILE*fr;charstr[40];

fgets(str,5,fr);

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

felose(fr);

}

26.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

}

27.下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計有多少個單詞,單詞間用空格分隔。補(bǔ)充所缺語句。

#include<stdio.h>

main()

{charss[80],c1,c2='';

inti=0,num=0;

gets(s);

while(s[i]!='\0')

{c1=s[i];

if(i==0)c2='';

elsec2=s[i-1];

if(【】)num++;

i++;

}

printf("Thereare%dwords,\n",num);

}

28.下列程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0||i%11==0)a[j++]=i;

*n=j;

}

main()

{intaa[M],n,k;

fun(10,aa,&n);

for(k=0;k<n;k++)

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");

}

29.軟件工程學(xué)把軟件從開始研制到最終軟件被廢棄的整個階段叫做軟件的【】。

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

main()

{inta=0;

a+=(a=8);

printf(“%d\n”,A);

}

31.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

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

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

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

printf("\n");

}

}

32.以下程序運(yùn)行后的輸出結(jié)果是______。

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

33.軟件工程的出現(xiàn)是由于【】。

34.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

則程序運(yùn)行后的輸出結(jié)果是【】。

35.以下程序運(yùn)行后的輸出結(jié)果是______。

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

36.funl函數(shù)的調(diào)用語句為:fun1(&a,&b,&c);它將3個整數(shù)按由大到小的順序調(diào)整后依次放入a、b、c這3個變量中,a中放最大數(shù)。

voidfun2(int*x,int*y)

{intt;

t=*x;*X=*y;*y=t;

}

voidfunl(int*pa,int*pb,int*pc)

{if(*pc>*pb)fun2(【】);

if(*pa<*pc)fun2(【】);

if(*pa<*pb)fun2(【】);

}

37.下列程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

38.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對象的______性來實現(xiàn)的。

39.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);[];}

while(n!=0);

printf("\n');

}

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

main()

{charc=′z′;

printf("%c",c-25);}

三、1.選擇題(20題)41.在16位IBM-PC機(jī)上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是()。

A.1B.2C.7D.11

42.下面關(guān)于算法的敘述中,正確的是()

A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

C.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

D.以上三種描述都正確

43.下面被調(diào)用函數(shù)sub的函數(shù)值的類型是()sub(floatA){floatb;b=a*a+1;returnb;}

A.單精度型B.雙精度型C.空類型D.整型

44.以下4個程序中,完全正確的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

45.在下列關(guān)于C語言的局部變量和全局變量所采取的存儲類別的敘述中,錯誤的一條是()

A.對于動態(tài)局部變量來說,一旦離開函數(shù),其值就消失

B.對于靜態(tài)局部變量來說,離開函數(shù),其值仍保留

C.對于寄存器變量來說,一旦離開函數(shù),其值就消失

D.靜態(tài)外部變量既可在本文件中引用,又可在其他文件中引用

46.以下程序運(yùn)行后,輸出結(jié)果是()#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45

47.執(zhí)行下面程序的正確結(jié)果是()。main(){floata=1.9;switch(a){case0:printf("0000");case1:printf("1111");case2:printf("3333");}printf("%f",a);}

A.1.9B.111133331.9C.33331.9D.1111233331.9

48.下列程序段的運(yùn)行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

49.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是()

A.邏輯設(shè)計B.需求分析C.詳細(xì)設(shè)計D.物理設(shè)計

50.在面向?qū)ο蠓椒ㄖ?,一個對象請求另一對象為其服務(wù)的方式是通過發(fā)送()。A.調(diào)用語句B.命令C.口令D.消息

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

A.構(gòu)成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

52.以下對枚舉類型名的定義中正確的是______。

A.enuma={one,two,three};

B.enuma{one=9,two=1,three};

C.enuma={"one","two","three"};

D.enuma{"one","two","three"};

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

A.在C語言中的保留字必須小寫

B.變量的存儲類型決定了變量的存儲位置及其生存期

C.宏定義以#define開頭,行末必須加分號

D.在C語言中的注釋行可以出現(xiàn)在程序的任何位置

54.在c語言中,變量的隱含存儲類別是()。

A.autoB.staticC.externD.無存儲類別

55.設(shè)p1和p2是指向同一個int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

56.請讀程序片段(字符串內(nèi)沒有空格字符):printf("%d\n",stlen("ATS\n012\1\\”));上面程序片段的輸出結(jié)果是()

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

57.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

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

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

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

A.在模塊化程序設(shè)計中,一個模塊應(yīng)該盡量多的包括與其他模塊聯(lián)系的信息

B.在自頂向下、逐步細(xì)化的設(shè)計過程中,首先應(yīng)設(shè)計解決問題的第一個細(xì)節(jié)

C.在模塊化程序設(shè)計中,一個模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則

D.在程序設(shè)計過程中,不能同時采用結(jié)構(gòu)化程序設(shè)計方法與模塊化程序設(shè)計方法

59.有以下程序:intfa(intx){returnx*x;)intfb(intx){returnx*x*x;}intf(int(*f1)().int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);printf("%d\n",i);}程序運(yùn)行后的輸出結(jié)果是()。

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

60.下面程序運(yùn)行后的輸出結(jié)果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=-s[0].a+s[1].b;printf("%d\n",t);}

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

四、選擇題(20題)61.

62.

63.鏈表不具有的特點是()。

A.不必事先估計存儲空間B.可隨機(jī)訪問任意元素C.插入、刪除不需要移動元素D.所需空間與線性表長度成正比

64.函數(shù)fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是()。

A.文件開始B.文件末尾C.文件當(dāng)前位置D.以上都不對

65.下面不屬于需求分析階段任務(wù)的是()。

A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.需求規(guī)格說明書評審D.制定軟件集成測試計劃

66.程序中已構(gòu)成如下圖所示的不帶頭結(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點,指針變量s總是作為指針指向鏈表的第一個結(jié)點。

若有以下程序段:

該程序段實現(xiàn)的功能是()。

A.刪除尾結(jié)點B.尾結(jié)點成為首結(jié)點C.刪除首結(jié)點D.首結(jié)點成為尾結(jié)點

67.

68.

69.有如下程序段:

其輸出結(jié)果是()。

A.123.141593B.1,23.141593C.12,3.141593D.123.1415930

70.設(shè)有以下語句:typedefstructTY{charC;inta{41;}CIN;

則下面敘述中正確的是()。

A.CIN是structTr類型的變量

B.TT是struct類型的變量

C.可以用,lr定義結(jié)構(gòu)體變量

D.可以用CIN定義結(jié)構(gòu)體變量

71.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。A.定義語句中的*號是一個間址運(yùn)算符

B.定義語句中的*號是一個說明符

C.定義語句中的p只能存放double類型變量的地址

D.定義語句中,*p=&a把變量a的地址作為初值賦給指針變量P

72.

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

A)對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出

B)數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變

C)當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越界的出錯信息”

D)可以通過賦初值的方式確定數(shù)組元素的個數(shù)

74.有以下程序:

#include<stdio.h>

main()

{chara=H;

a=(a>=Aa<=2)?(a-A+a):a;

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

}

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

A.AB.aC.HD.h

75.

有下列程序:

#include<stdio.h>

main

{inta=6,b=7,m=1;

switch(a%2)

{case0:m++;break;

case1:m++;

switch(b%2)

{default:m++;

case0:m++;break;

}

}

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

}

程序的運(yùn)行結(jié)果是()。

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

76.以下()不是標(biāo)準(zhǔn)的HTTP消息頭字段。

A.StatusB.HostC.AcceptD.Referer

77.

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

A.數(shù)據(jù)庫不需要操作系統(tǒng)的支持

B.數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)

C.數(shù)據(jù)庫是存儲在計算機(jī)存儲設(shè)備中的、結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合

D.數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致

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

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

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

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

80.有以下程序main(){intc=35;printf("%d\n",c&c);}程序運(yùn)行后的輸出結(jié)果是______。

A.0B.70C.35D.1

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計算n!。例如,若輸人:6,則輸出:6!=720.000000。

請修改程序中的錯誤,使它能得出正確的結(jié)果。

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

試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),該函數(shù)的功能是將M行N列的二維數(shù)組中的數(shù)據(jù),按行的順序依次放到一維數(shù)組中,一維數(shù)組中數(shù)據(jù)的個數(shù)存放在形參n所指的存儲單元中。例如,若二維數(shù)組中的數(shù)據(jù)為333333334444444455555555則一維數(shù)組中的內(nèi)容應(yīng)該為333333334444444455555555。注意:部分源程序在文件prog1.c中。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:

參考答案

1.A字符型指針變量可以用選項A)的賦值方法:char*s;s=”O(jiān)lympictt;,選項C)的寫法:char*s,s={1.Olympic”};是錯誤的。字符數(shù)組可以在定義的時候初始化:chars[]_IfIOlympic”l;或者chars[]=”O(jiān)lympic'1.都是正確的,但是不可以在定義字符數(shù)組后,對數(shù)組名賦值(數(shù)組名是常量,代表數(shù)組首地址)。所以選項B)和選項D)都是錯誤的。對于本例,選項B)、D)中字符數(shù)組S的大小至少為8,才能存放下字符串(字符串的末尾都有結(jié)束標(biāo)志“\0”)。

2.B

3.C

4.A解析:本題考查的是getchar()函數(shù)。getchar()函數(shù)執(zhí)行時將從鍵盤緩沖區(qū)中讀取用戶的輸入,而不管輸入的是否可打印字符,所以當(dāng)輸入a<回車>后,鍵盤緩沖區(qū)被輸入的實際上是兩個字符:'a'和'\\n'。故選項A的說法是正確的。

5.B解析:scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址。選項A不是C語言中的輸入語句,故選項A不正確;選項C中輸入的是變量字符串而不是地址字符串,不滿足scanf()函數(shù)要求將輸入的數(shù)據(jù)存入變量所在的地址,故選項C不正確;選項D不是C語言中的輸入語句,故選項D不正確:所以,4個選項中選項B符合題意。

6.D靜態(tài)變量是始終存在的,當(dāng)函數(shù)變量退出后,靜態(tài)變量會保存數(shù)據(jù),再次調(diào)用該函數(shù)時,以前的靜態(tài)變量值仍然保留著。fun(a,5)的值是15,再次調(diào)用后sum=15,所以fun(b,4)=45,s=45+15=60。故本題答案為D選項。

7.D調(diào)用缸函數(shù)后,實參數(shù)組名sl傳給形參指針P,P也指向數(shù)組sl。m函數(shù)的功能是遍歷字符數(shù)組中的所有字符,如果某一個字符是空格并且前一個字符是小寫字母的話,就把前一個字符轉(zhuǎn)換為大寫。程序中語句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是將P[i一1]中的字符轉(zhuǎn)換為大寫。因此D選項正確。

8.D

9.C

10.C解析:外部變量在編譯時由系統(tǒng)分配永久的內(nèi)存空間,所以外部變量的類型不是自動存儲類別。

11.B在計算機(jī)中,算法被定義為對一個問題求解步驟的一種描述,是求解問題的方法,它是指令的有限序列,其中每條指令表示一個或者多個操作。算法具有有窮性、確定性、可行性、輸入和輸出五大特點。

在本題中,選項A、C、D的說法明顯偏離了算法的定義,因此正確答案選B。

12.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個十進(jìn)制整數(shù),每個整數(shù)域?qū)捠?。而在C語言中規(guī)定:當(dāng)域?qū)捫∮趯嶋H寬度時域?qū)挷黄鹱饔茫磳嶋H寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進(jìn)制整數(shù)12,等于十進(jìn)制的10)。所以,4個選項中選項C符合題意。

13.B解析:本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在函數(shù)調(diào)用時,static變量在函數(shù)調(diào)用結(jié)束后所做的所有變化均保持(即上次調(diào)用結(jié)束時的值)。

在主函數(shù)中,第一次循環(huán),i=0,調(diào)用k-f(a++)=f(2),調(diào)用完之后才將a加1,a變?yōu)?,在f(2)中,先將c=3賦值給a返回,然后將c加1,得到k=a=3,c=4。

第二次循環(huán),i=1,調(diào)用k=f(a++)=f(3),調(diào)用完之后才將a加1,a變?yōu)?,在f(3)中,先將c=4賦值給a返回,然后將c加1,得到k=a=4,c=5。

14.C在main函數(shù)中調(diào)用了f函數(shù)使形參s指向數(shù)組a。執(zhí)行“S[1]+=6”;語句,則“a[1]=8;”執(zhí)行“*s=7;”語句,則“a[0]=7”;執(zhí)行“s+=2;”語句,則s指向數(shù)組的第3個元素并返回s。調(diào)用后,函數(shù)返回值賦給指針P,則*P=3,因此輸出的結(jié)果為7,8,3。故本題答案為C選項。

15.B

16.D

17.D

18.B

19.A本題中定義了整形變量case,但case是關(guān)鍵字,關(guān)鍵字不能用做標(biāo)識符。單精度printF不是關(guān)鍵字,因為標(biāo)識符區(qū)分大小寫。所以A不正確。

20.D

21.s[i]!='\0's[i]!='\\0'解析:本題是要刪除字符數(shù)組中和c一樣的字符,for循環(huán)實現(xiàn)的功能是逐個讀出字符數(shù)組s中的元素,并和字符c做比較,直到遇到字符串結(jié)束標(biāo)志'\\0',結(jié)束循環(huán),所以橫線上應(yīng)該填s[i]!='\\0'。

22.(20<x)&&(x<30)||(x<-100)或20<x&&x<30||x<-100(20<x)&&(x<30)||(x<-100)或20<x&&x<30||x<-100

23.空間空間解析:程序在計算機(jī)上運(yùn)行時所耗費(fèi)的時間由程序運(yùn)行時所需輸入的數(shù)據(jù)總量、對源程序進(jìn)行編譯所需時間、計算機(jī)執(zhí)行每條指令所需時間、程序中的指令重復(fù)執(zhí)行的次數(shù)等決定。習(xí)慣上常常把語句重復(fù)執(zhí)行的次數(shù)作為算法運(yùn)行時間的相對量度,稱作算法的時間復(fù)雜度。算法在運(yùn)行過程中需輔助存儲空間的大小稱為算法的空間復(fù)雜度。

24.10410\r\n4解析:結(jié)構(gòu)體變量所占內(nèi)存長度是各成員占的內(nèi)存長度之和。每個成員分別占有其自己的內(nèi)存單元。int占2個字節(jié),float占4個字節(jié),共用體變量所占的內(nèi)存長度等于最長的成員的長度。所以,sizeof(a.share)的值是4,sizeof(a)的值是2+2+2+4=10。

25.HellHell解析:文件的字符串讀寫函數(shù)fgets()有3個參數(shù),第三個參數(shù)是文件指針指向要讀取數(shù)據(jù)的文件,第二個參數(shù)是一個整數(shù)(假設(shè)為n),表示從文件中讀取n-1個字符并在其后加一個'0',第一個參數(shù)為存放讀取的字符串的內(nèi)存區(qū)的起始地址,讀取得數(shù)據(jù)保存在其中??梢姳绢}的輸出結(jié)果為:Hell。

26.220.000000220.000000解析:注意區(qū)分運(yùn)算符的優(yōu)先級。先是給c賦值,然后計算x=f*=n/=50,得x=f*=2,最后有x=20。x輸出是按浮點數(shù)的形式輸出的,小數(shù)點后的0不能少。

27.c1!==''&&c2==''

28.77解析:程序中的if(i%7==0||i%11==0)是找出能被7或11整除的所有整數(shù),a[j++]=i是將滿足條件的數(shù)放到a數(shù)組中,變量j記錄了滿足條件的數(shù)據(jù)個數(shù),main函數(shù)通過變量n得到此數(shù)據(jù)個數(shù)。如果m的值為50,即表達(dá)式fun(10,aa,&n)為fun(50,aa,&n)時,輸出結(jié)果為:711142122283335424449

29.生命期生命期解析:軟件的生存周期是軟件工程最基本的重要概念。軟件產(chǎn)品和其他產(chǎn)品的生產(chǎn)一樣,都要經(jīng)過分析、設(shè)計、制造、檢測和運(yùn)行使用幾個階段。通常,把軟件從開始研制(形成概念)到最終軟件被廢棄這整個過程稱為軟件的生命期。

30.1616解析:在程序中首先將8賦值給變量a,然后再進(jìn)行復(fù)合賦值運(yùn)算。即a=a+a=8+8=16,所以該空格處應(yīng)該填16。

31.123056009123\r\n056\r\n009解析:數(shù)組a中元素的初值為: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[12][0]=7、a[2][1]=8、a[2][2]=9。執(zhí)行第1個for循環(huán)后a[1][0]=0、a[2][0]=0、a[2][1)=0;第2個for循環(huán)的功能是將數(shù)組元素按照3行3列的格式輸出。

32.30253025解析:本題考核的知識點是變量的存儲屬性和算術(shù)運(yùn)算的應(yīng)用。本題涉及了自動變量、靜態(tài)變量和外部變量。外部變量是定義在所有函數(shù)之外的變量,本題中inta=5定義了一個外部變量a,它是一個全局變量,即作用域是從定義的位置開始到本文件的結(jié)束;靜態(tài)變量的存儲空間在程序的整個運(yùn)行期間是固定的(static),本題函數(shù)fun()中staticinta=10定義個一個靜態(tài)變量a,此靜態(tài)變量a是個靜態(tài)的局部變量,即它的值只能在本函數(shù)中使用;自動變量是C程序中使用最多的一種變量,它的建立和撤消都是由系統(tǒng)在程序執(zhí)行過程中自動進(jìn)行的,auto是自動變量的存儲類別標(biāo)識符,如果省略auto,系統(tǒng)隱含認(rèn)為此變量為auto,本題中main()中intc=20定義了一個自動變量c,此自動變量c是個靜態(tài)的局部變量.算術(shù)運(yùn)算中a+=b++相當(dāng)于a=a+b,b=b+1.所以,在第一個ptine('%d',a)中a=a+b=10+20=30,第二個printf('%d',a)中a=a+c=5+20=25,即輸出3025。

33.軟件危機(jī)的出現(xiàn)軟件危機(jī)的出現(xiàn)

34.310

35.abcfgabcfg解析:本題考查的是字符數(shù)組用作函數(shù)參數(shù)。C語言中數(shù)組名可以看作該數(shù)組首地址的常量指針、因此可以直接傳遞給指針類型的參數(shù)。本題的主函數(shù)調(diào)用fun(s,3,strlen(s));后,函數(shù)中for循環(huán)就是for(i=3;i<strlen(s)-1;i++),即i從3遞增到字符數(shù)組s的長度-2位置,循環(huán)中讓s[i]=s[i+2],所以函數(shù)fun()實現(xiàn)的功能簡單來說就是將字符串s下標(biāo)為p+2~k范圍的字符整體復(fù)制到字符串s下標(biāo)為p~k-2的位置上。在本題中strlen(s)返回s的長度7,所以復(fù)制的字符為s[5]~s[7],即'f'、'g','\\0'三個字符,復(fù)制到s[3]~s[5],故最終輸出的字符串為abcfg(因為s[5]為'\\0',所以后面的字符不會輸出)。

36.pcpb或pbpcpcpa或papcpbpa或papbpc,pb或pb,pc\r\npc,pa或pa,pc\r\npb,pa或pa,pb

37.b=14b=14解析:分析程序可知,n的初始值為1,因此,while(n<=3)循環(huán)3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。當(dāng)n=4時,判斷條件不滿足,退出循環(huán)。

38.封裝封裝

39.n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10n/=10或n=n/10或n=(n-s)/10或n=(n-n%10)/10解析:根據(jù)s=n%10可知:此操作可以將輸入的數(shù)據(jù)n的最后—位賦給s,根據(jù)題目的要求是要將輸入的數(shù)據(jù)逆序輸出,現(xiàn)在已經(jīng)將原數(shù)據(jù)的個位輸出,在其后如果執(zhí)行n/=10司將原數(shù)據(jù)的個位數(shù)去掉,滿足do....while的條件繼續(xù)s=n%10操作,此時可求出十位上的數(shù)進(jìn)行輸出,繼續(xù)執(zhí)行n/=10操作,與上相同最后將百位上的數(shù)進(jìn)行輸出,所以該題答案為:\u3000n/=10。

40.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運(yùn)算后,得97,以字符形式輸出是a。

41.D解析:結(jié)構(gòu)體變量所占用內(nèi)存的字節(jié)數(shù)是其所有成員所占用內(nèi)存字節(jié)數(shù)之和。本題中整型變量i所占用的內(nèi)存是2字節(jié),字符型變量ch所占用的內(nèi)存是1字節(jié),雙精度型變量f所占用的內(nèi)存是8字節(jié),三者相加即可。

42.BB)【解析】算法在運(yùn)行過程t}1需輔助存儲空間的大小稱為算法的空間復(fù)雜度。算法的有窮性是指個算法必須在執(zhí)行有限的步驟以后結(jié)束。

43.D

44.B解析:選項A在定義main()函數(shù)時,函數(shù)頭后面多了一個分號,故選項A不正確;C語言中的注釋是不能嵌套的,故選項C不正確:選項D在使用預(yù)編譯指令#include時漏掉了#號,所以也是錯誤的。故應(yīng)該選擇B。

45.B

46.B

47.B解析:switch語句只接受int型變量,如果不是則隱式轉(zhuǎn)換為int,由于C語言中float到int的轉(zhuǎn)換是截尾取整,故在switch中從case1:標(biāo)號處開始執(zhí)行,首先輸出4個1。此時又因為case2:之前并沒有break;之類的跳轉(zhuǎn)語句,所以case2:標(biāo)號處的語句也被執(zhí)行,輸出4個3。最后以默認(rèn)的浮點數(shù)格式輸出變量a,變量a在switch語句中并未被改變,故最后輸出為1.900000,所以應(yīng)該選擇B。

48.B解析:先定義了一個指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因為字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。

49.BB)【解析】軟件開發(fā)階段包括需求分析、總體設(shè)計、詳細(xì)設(shè)計、編碼和測試_五個階段。其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。

50.D解析:面向?qū)ο蟮氖澜缡峭ㄟ^對象與對象間彼此的相互合作來推動的,對象間的這種相互合作需要一個機(jī)制協(xié)助進(jìn)行,這樣的機(jī)制稱為消息。消息是一個實例與另一個實例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。

51.A解析:本題考查C語言的綜合基礎(chǔ)知識。構(gòu)成C程序的基本單位是函數(shù),一個C程序總是從main函數(shù)開始執(zhí)行,而不論main函數(shù)在整個程序中的位置如何。C語言的函數(shù)定義都是互相平行、獨立的,在定義函數(shù)時,一個函數(shù)內(nèi)不能定義另一個函數(shù)。C函數(shù)定義的一般格式有兩種:傳統(tǒng)格式和現(xiàn)代格式。傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式;現(xiàn)代格式又稱ANSI格式,是現(xiàn)代編譯系統(tǒng)使用的格式。

52.B解析:聲明枚舉類型用enum開頭。例如:enumweekday(sun,mon,tue,wed,thu,fri,sat);

說明:1、在C編譯中,對枚舉元素按常量處理,同時可以改變他們的值。2、枚舉值可以用來做判斷比較。3、一個整數(shù)不能直接賦給一個枚舉變量。

53.C解析:本題涉及C語言最基本的4個知識點:①C語言的保留字必須小寫;②變量的存儲類型不同,其存儲位置和生存期也不一樣:③C語言允許其注釋部分出現(xiàn)在程序中的任何位置;④宏定義以#define開頭,行末不需要加分號。

54.A解析:auto變量:無static聲明的局部變量。用auto作存儲類別的聲明時,可以不寫auto,存儲類別隱含確定為auto(自動存儲類別),是動態(tài)存儲方式。大多數(shù)變量是自動變量。用static聲明的局部變量是靜態(tài)局部變量。函數(shù)調(diào)用結(jié)束后靜態(tài)局部變量占據(jù)的內(nèi)存存儲單元空間不釋放,局部變量保留原值,下次調(diào)用時可以繼續(xù)使用該值。用extern聲明外部變量,外部變量即全局變量,可以用extern聲明來改變?nèi)肿兞康淖饔糜?實際上,關(guān)鍵字'auto'可以省略,auto不寫則隱含確定為'自動存儲類別',屬于動態(tài)存儲方式。

55.B

56.C

57.A解析:因為在while循環(huán)的循環(huán)條件中,一運(yùn)算符是前綴形式,所以表達(dá)式—k的值是k自減之后的值。程序開始時,將k的值初始化為5,然后進(jìn)入while循環(huán),因為—k的值為4(非零),所以執(zhí)行循環(huán)體輸出k-=3的值1,此時k的值也變?yōu)?。第2次執(zhí)行循環(huán)條件,—k的值為0,所以循環(huán)結(jié)束。因此最后輸出的結(jié)果是1,故應(yīng)該選擇A。

58.CC。【解析】在模塊化程序設(shè)計中,模塊之間的聯(lián)系可以通過程序的控制結(jié)構(gòu)來實現(xiàn),在自頂向下、逐步細(xì)化的設(shè)計過程中,首先要考慮全局目標(biāo),而不是細(xì)節(jié)。在程序設(shè)計中模塊化和結(jié)構(gòu)化可以同時使用,一個模塊的內(nèi)部結(jié)構(gòu)也要符合結(jié)構(gòu)化設(shè)計原則。

59.C解析:函數(shù)f()有3個形式參數(shù)f1、f2和x,其中f1、f2是指向函數(shù)的指針變量。在main()函數(shù)中執(zhí)行了函數(shù)調(diào)用“f(fa,fb,2)”,從而使f()的形式參數(shù)f1指向了fa,形式參數(shù)f2指向了fb,把實參2傳給了形參變量x。函數(shù)f()中的return語句相當(dāng)于“fb(2)-fa(2)”(fb(2)的返叫值為2*2*2=8,fa(2)返回值為2*2=4)即(8-4),值為4。函數(shù)f()執(zhí)行后把返回值4賦給了i,輸出i的值是4。所以4個選項中C正確。

60.B解析:在main函數(shù)中定義了一個structabc類型的數(shù)組,同時分別利用{1,2,3}及(4,5,6}對數(shù)組中兩個元素進(jìn)行初始化。在該結(jié)構(gòu)體,依次對其中的a,b,c三個變量進(jìn)行初始化。故s[0].a=1,s[1].b=5,所以本題輸出為6。

61.A

62.D

63.B鏈表采用的是鏈?zhǔn)酱鎯Y(jié)構(gòu),它的結(jié)點空間可以動態(tài)申請和釋放;它的數(shù)據(jù)元素的邏輯次序靠結(jié)點的指針來指示,插入、刪除不需要移動數(shù)據(jù)元素。但是鏈?zhǔn)酱鎯Y(jié)構(gòu)也有不足之處:每個結(jié)點中的指針域需額外占用存儲空間,它是一種非隨機(jī)存儲結(jié)構(gòu)。

64.B解析:SEEK_END代表的是文件末尾,SEEK_SET代表的是文件的開始,SEEK_CUR代表的是文件當(dāng)前位置。

65.D在軟件開發(fā)的過程中,應(yīng)該盡早的制定測試計劃,其中在需求分析階段制定系統(tǒng)測試計劃

66.D本題考查鏈表的操作,本題中首先是s指向了它的下個結(jié)點,題目中說明了s總是指向鏈表的第一個結(jié)點,然后while循環(huán)找到鏈表的最后一個元素,然后最后一個元素指向了之前鏈表的頭結(jié)點,之前頭結(jié)點指向了空結(jié)點,所以本題實現(xiàn)的功能是使首結(jié)點成為尾結(jié)點。選項D正確。

67.A

68.D

69.Aprintf函數(shù)中格式字符“%8.6”的含義是:變量Y的輸出寬度為8(包括小數(shù)點),小數(shù)點后面保留6位小數(shù),且右對齊。所以選擇A。

70.D本題考查typcdef重新聲明一種結(jié)構(gòu)體類型,其中CIN為結(jié)構(gòu)體類型名,而不是結(jié)構(gòu)體變量,所以D選項正確。

71.A在變量定義doublea,*p:&a;中,*號是一個指針運(yùn)算符,而非間址運(yùn)算符,因此A)錯誤。

72.D

73.C在C語言中,當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)不會有提示。

74.D\n多元運(yùn)算符問號前面表達(dá)式為真,所以(a-A+a)賦值給a,括號里的運(yùn)算是把大寫字母變成小寫字母,所以答案應(yīng)為選項D。

\n

75.B

\n本題考查switch語句及break的用法。第一個switch語句,因為a=6.a(chǎn)%2=0,所以執(zhí)行“case0,m++;”,將m加1,遇到break語句跳出switch語句,結(jié)束循環(huán)。不執(zhí)行下面的switch。

\n

76.A

77.C

78.C數(shù)據(jù)庫是存儲在計算機(jī)存儲設(shè)備中的、結(jié)構(gòu)化的相關(guān)數(shù)據(jù)的集合。數(shù)據(jù)庫中的數(shù)據(jù)不只是面向某一項特定的應(yīng)用,而是面向多種應(yīng)用,可以被多個用戶、多個應(yīng)用程序共享,不具有獨立的系統(tǒng)。設(shè)計數(shù)據(jù)庫的目的實質(zhì)上是為了設(shè)計出滿足實際應(yīng)用需求的實際關(guān)系模型。數(shù)據(jù)庫技術(shù)的主要目的則是有效地管理和存取大量的數(shù)據(jù)資源,包括:提高數(shù)據(jù)的共享性,使多個用戶能夠同時訪問數(shù)據(jù)庫中的數(shù)據(jù);減小數(shù)據(jù)的冗余,以提高數(shù)據(jù)的一致性和完整性;提供數(shù)據(jù)與應(yīng)用程序的獨立性,從而減少應(yīng)用程序的開發(fā)和維護(hù)代價。本題答案為C。

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

80.C解析:位與運(yùn)算是將兩個運(yùn)算分量看作兩個二進(jìn)制數(shù),然后對兩個二進(jìn)制數(shù)的相應(yīng)位進(jìn)行與運(yùn)算,若同時為1則結(jié)果相應(yīng)位為1,否則結(jié)果相應(yīng)位為0。因此,當(dāng)兩個運(yùn)算分量相同時,它們的相應(yīng)位肯定也相同,即不同為1就同為0。所以得到的結(jié)果和運(yùn)算分量也相同。所以,4個選項中選項C)符合題意。

81.

82.1voidfun(int(*s)[10],intint*n,intmm,intnn)2{3inti,j,k=0;4for(i=0;i<mm;i++)/*將二維數(shù)組s中的數(shù)據(jù)按行的順序依次存放到一維數(shù)組b中*/5for(j=0;j<nn;j++)6b[k++]=s[i][j];7*n=k;/*通過指針返回元素個數(shù)*/8}本題可以用兩個循環(huán)來處理。由于是按行的順序取出,因此第1個for循環(huán)用于控制行下標(biāo),第2個循環(huán)用于控制列下標(biāo)。若改成按列的順序取出,則循環(huán)應(yīng)改成:for(i=0;i<mm;jp)b[k++]=s[j][i];要注意s[j][i]的下標(biāo),不能用s[i][j]。若按行取出則列下標(biāo)變化較快,若按列取出則行下標(biāo)變化較快,即循環(huán)嵌套時,越在內(nèi)層的循環(huán),其循環(huán)變量變化就越快。<mm;jp)2021-2022年湖北省荊門市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.下列語句組中,正確的是()。

2.設(shè)有一個10階的對稱矩陣A,采用壓縮存儲方式,以行序為主存儲,a11為第一元素,其存儲地址為1,每個元素占一個地址空間,則a85的地址為()。

A.13B.33C.18D.40

3.對于順序存儲的線性表,訪問結(jié)點和增加、刪除結(jié)點的時間復(fù)雜度為()。

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

4.有以下程序:#include<stdio.h>main(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}當(dāng)運(yùn)行時輸入:a<回車>后,以下敘述正確的是()。

A.變量c1被賦予字符a,c2被賦予回車符

B.程序?qū)⒌却脩糨斎氲?個字符

C.變量c1被賦予字符a,c2中仍是原有字符2

D.變量c1被賦予字符a,c2中將無確定值

5.X、Y、Z被定義為int型變量,若從鍵盤給X、Y、Z輸入數(shù)據(jù),正確的輸入語句是______。

A.INPUTX,Y,Z;

B.scanf("%d%d%d",&X,&Y,&Z);

C.scanf("%d%d%d",X,Y,Z);

D.read("%d%d%d",&X,&Y,&Z);

6.有以下程序:#include<stdio.h>intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];returnsum;}main(){inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;s=fun(a,5)+fun(b,4);printf(“%d\n”,s);}程序的運(yùn)行結(jié)果是()。

A.55B.50C.45D.60

7.有以下程序,程序中庫函數(shù)islower(ch)用以判斷ch中的字母是否為小寫字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

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

A.一個算法的空間復(fù)雜度打,則其時間復(fù)雜度也必定大

B.一個算法的空間復(fù)雜度大,則其時間復(fù)雜度也必定小

C.一個算法的時間復(fù)雜度大,則其空間復(fù)雜度也必定小

D.算法的時間復(fù)雜度與空間復(fù)雜度沒有直接相關(guān)

9.若x,i,j和k都是int型變量,則執(zhí)行下面表達(dá)式后x的值為()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

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

A.在C語言中,函數(shù)中的自動變量可以賦初值,每調(diào)用一次賦一次初值

B.在C語言中,在調(diào)用函數(shù)時,實參和對應(yīng)形參在類型上只需賦值兼容

C.在C語言中,外部變量的隱含類型是自動存儲類別

D.在C語言中,函數(shù)形參的存儲類型是自動(auto)類型的變量

11.在計算機(jī)中,算法是指()

A.加工方法B.解題方案的準(zhǔn)確而完整的描述C.排序方法D.查詢方法

12.

有以下程序:

main

{intx=102,y=012;

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

}

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

A.10,01B.02,12C.102,10D.02,10

13.下列程序執(zhí)行輸出的結(jié)果是()。#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;return(a);}main(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);}

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

14.有以下程序:#include<stdio.h>int*f(int*s){s[1]+=6;*s=7;s+=2;returns;}main(){inta[5]={1,2,3,4,5},*p=a;P=f(P);printf(“%d,%d,%d\n”,a[0],a[1],*p);}程序運(yùn)行后的輸出結(jié)果是()。

A.9,8,9B.7,8,7C.7,8,3D.1,2,1

15.算法應(yīng)該是()

A.程序B.問題求解步驟的描述C.要滿足五個基本特性D.B和C

16.

17.

18.體育課的鈴聲響了,同學(xué)們都陸續(xù)地奔向操場,按老師的要求從高到矮站成一排。每個同學(xué)按順序來到操場時,都從排尾走向排頭,找到第一個比自己高的同學(xué),并站在他的后面。這種站隊的方法類似于()算法。

A.快速排序B.插入排序C.冒泡排序D.歸并排序

19.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請輸人2個數(shù):");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時產(chǎn)生錯誤,其出錯原因是()。A.定義語句出錯,case是關(guān)鍵字,不能用做用戶自定義標(biāo)識符

B.定義語句出錯,printF不能用做用戶自定義標(biāo)識符

C.定義語句無錯,scanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出case的值

20.

二、2.填空題(20題)21.下列函數(shù)從字符數(shù)組s[]中刪除和c一樣的字符,請在下面橫線處填空。voiddelete(s,C)chars[],c;{inti,j;for(i=j=0;();i++)if(s[i]!='c')s[j++]=s[i];s[j]="\0";}

22.條件“20<x<30或x<-100”的C語言表達(dá)式是【】。

23.算法復(fù)雜度主要包括時間復(fù)雜度和【】復(fù)雜度。

24.有以下定義和語句,則sizeof(a)的值是【】,而sizeof(a.share)的值是【】。

structdate

{intday;

intmouth;

intyear;

union{intshare1;

floatshare2;

}share;

}a;

25.已有文本文件test.txt,其中的內(nèi)容為:Hello,everyone!。以下程序中,文件test.txt已正確為“讀”而打開,由此文件指針fr指向該文件,則程序的輸出結(jié)果是【】。

#include<stdio.h>

main()

{FILE*fr;charstr[40];

fgets(str,5,fr);

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

felose(fr);

}

26.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

{charc;intn=100;

floatf=10;doublex;

x=f*=n/=(c=50);

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

}

27.下面程序的功能是從鍵盤輸入一行字符,統(tǒng)計有多少個單詞,單詞間用空格分隔。補(bǔ)充所缺語句。

#include<stdio.h>

main()

{charss[80],c1,c2='';

inti=0,num=0;

gets(s);

while(s[i]!='\0')

{c1=s[i];

if(i==0)c2='';

elsec2=s[i-1];

if(【】)num++;

i++;

}

printf("Thereare%dwords,\n",num);

}

28.下列程序的運(yùn)行結(jié)果是【】。

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

{inti,j=0;

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

if(i%7==0||i%11==0)a[j++]=i;

*n=j;

}

main()

{intaa[M],n,k;

fun(10,aa,&n);

for(k=0;k<n;k++)

if((k+1)%20==0)printf("\n");

elseprintf("%4d",aa[k]);

printf("\n");

}

29.軟件工程學(xué)把軟件從開始研制到最終軟件被廢棄的整個階段叫做軟件的【】。

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

main()

{inta=0;

a+=(a=8);

printf(“%d\n”,A);

}

31.以下程序運(yùn)行后的輸出結(jié)果是【】。

main()

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

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

for(j=i+1;j<3;j++)a[j][i]=0;

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

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

printf("\n");

}

}

32.以下程序運(yùn)行后的輸出結(jié)果是______。

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

33.軟件工程的出現(xiàn)是由于【】。

34.若有如下程序:

voidsub()

{staticintx=6;

x/=2;printf("%d",x);}

main()

{intm;

for(m=0;m<=2;m++)sub();}

則程序運(yùn)行后的輸出結(jié)果是【】。

35.以下程序運(yùn)行后的輸出結(jié)果是______。

#include<string.h>

voidfun(char*s,intp,intk)

{inti;

for(i=p;i<k-1;i++)s[i]=s[i+2];

}

main()

{chars[]="abcdefg";

fun(s,3,strlen(s));puts(s);

}

36.funl函數(shù)的調(diào)用語句為:fun1(&a,&b,&c);它將3個整數(shù)按由大到小的順序調(diào)整后依次放入a、b、c這3個變量中,a中放最大數(shù)。

voidfun2(int*x,int*y)

{intt;

t=*x;*X=*y;*y=t;

}

voidfunl(int*pa,int*pb,int*pc)

{if(*pc>*pb)fun2(【】);

if(*pa<*pc)fun2(【】);

if(*pa<*pb)fun2(【】);

}

37.下列程序的運(yùn)行結(jié)果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

38.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對象的______性來實現(xiàn)的。

39.以下程序的功能是:將輸入的正整數(shù)按逆序輸出。例如:若輸入135則輸出531。請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intn,s;

printf("Enteranumber:");scanf("%d",&n);

printf("Output:");

do

{s=n%10;printf("%d",s);[];}

while(n!=0);

printf("\n');

}

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

main()

{charc=′z′;

printf("%c",c-25);}

三、1.選擇題(20題)41.在16位IBM-PC機(jī)上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是()。

A.1B.2C.7D.11

42.下面關(guān)于算法的敘述中,正確的是()

A.算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)

B.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

C.算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)

D.以上三種描述都正確

43.下面被調(diào)用函數(shù)sub的函數(shù)值的類型是()sub(floatA){floatb;b=a*a+1;returnb;}

A.單精度型B.雙精度型C.空類型D.整型

44.以下4個程序中,完全正確的是()。

A.#include<stdio.h>main();{/*programming*/printf("programming!\n");}

B.#include<stdio.h>main(){/*/programming/*/printf("programming!\n");}

C.#include<stdio.h>main(){/*/*programming*/*/printf("programming!\n");}

D.#include<stdio.h>main(){/*programming*/printf("programming!\n");}

45.在下列關(guān)于C語言的局部變量和全局變量所采取的存儲類別的敘述中,錯誤的一條是()

A.對于動態(tài)局部變量來說,一旦離開函數(shù),其值就消失

B.對于靜態(tài)局部變量來說,離開函數(shù),其值仍保留

C.對于寄存器變量來說,一旦離開函數(shù),其值就消失

D.靜態(tài)外部變量既可在本文件中引用,又可在其他文件中引用

46.以下程序運(yùn)行后,輸出結(jié)果是()#include<stdio.h>#definePT5.5#defineS(x)PT*x*xmain(){inta=1,b=2;printf("%4.1f\n",s(a+b));}

A.49.5B.9.5C.22D.45

47.執(zhí)行下面程序的正確結(jié)果是()。main(){floata=1.9;switch(a){case0:printf("0000");case1:printf("1111");case2:printf("3333");}printf("%f",a);}

A.1.9B.111133331.9C.33331.9D.1111233331.9

48.下列程序段的運(yùn)行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

49.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是()

A.邏輯設(shè)計B.需求分析C.詳細(xì)設(shè)計D.物理設(shè)計

50.在面向?qū)ο蠓椒ㄖ?,一個對象請求另一對象為其服務(wù)的方式是通過發(fā)送()。A.調(diào)用語句B.命令C.口令D.消息

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

A.構(gòu)成C程序的基本單位是函數(shù)

B.可以在一個函數(shù)中定義另一個函數(shù)

C.main函數(shù)必須放在其他函數(shù)之前

D.C函數(shù)定義的格式是K&R格式

52.以下對枚舉類型名的定義中正確的是______。

A.enuma={one,two,three};

B.enuma{one=9,two=1,three};

C.enuma={"one","two","three"};

D.enuma{"one","two","three"};

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

A.在C語言中的保留字必須小寫

B.變量的存儲類型決定了變量的存儲位置及其生存期

C.宏定義以#define開頭,行末必須加分號

D.在C語言中的注釋行可以出現(xiàn)在程序的任何位置

54.在c語言中,變量的隱含存儲類別是()。

A.autoB.staticC.externD.無存儲類別

55.設(shè)p1和p2是指向同一個int型一維數(shù)組的指針變量,k為int型變量,則不能正確執(zhí)行的語句是______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

56.請讀程序片段(字符串內(nèi)沒有空格字符):printf("%d\n",stlen("ATS\n012\1\\”));上面程序片段的輸出結(jié)果是()

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

57.

有以下程序:

main

{intk=5;

while(--k)printf("%d",k-=3);

printf("\n");

}

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

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

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

A.在模塊化程序設(shè)計中,一個模塊應(yīng)該盡量多的包括與其他模塊聯(lián)系的信息

B.在自頂向下、逐步細(xì)化的設(shè)計過程中,首先應(yīng)設(shè)計解決問題的第一個細(xì)節(jié)

C.在模塊化程序設(shè)計中,一個模塊內(nèi)部的控制結(jié)構(gòu)也要符合結(jié)構(gòu)化原則

D.在程序設(shè)計過程中,不能同時采用結(jié)構(gòu)化程序設(shè)計方法與模塊化程序設(shè)計方法

59.有以下程序:intfa(intx){returnx*x;)intfb(intx){returnx*x*x;}intf(int(*f1)().int(*f2)(),intx){returnf2(x)-f1(x);}main(){inti;i=f(fa,fb,2);printf("%d\n",i);}程序運(yùn)行后的輸出結(jié)果是()。

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

60.下面程序運(yùn)行后的輸出結(jié)果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=-s[0].a+s[1].b;printf("%d\n",t);}

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

四、選擇題(20題)61.

62.

63.鏈表不具有的特點是()。

A.不必事先估計存儲空間B.可隨機(jī)訪問任意元素C.插入、刪除不需要移動元素D.所需空間與線性表長度成正比

64.函數(shù)fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始點是()。

A.文件開始B.文件末尾C.文件當(dāng)前位置D.以上都不對

65.下面不屬于需求分析階段任務(wù)的是()。

A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.需求規(guī)格說明書評審D.制定軟件集成測試計劃

66.程序中已構(gòu)成如下圖所示的不帶頭結(jié)點的單向鏈表結(jié)構(gòu),指針變量s、p、q均已正確定義,并用于指向鏈表結(jié)點,指針變量s總是作為指針指向鏈表的第一個結(jié)點。

若有以下程序段:

該程序段實現(xiàn)的功能是()。

A.刪除尾結(jié)點B.尾結(jié)點成為首結(jié)點C.刪除首結(jié)點D.首結(jié)點成為尾結(jié)點

67.

68.

69.有如下程序段:

其輸出結(jié)果是()。

A.123.141593B.1,23.141593C.12,3.141593D.123.1415930

70.設(shè)有以下語句:typedefstructTY{charC;inta{41;}CIN;

則下面敘述中正確的是()。

A.CIN是structTr類型的變量

B.TT是struct類型的變量

C.可以用,lr定義結(jié)構(gòu)體變量

D.可以用CIN定義結(jié)構(gòu)體變量

71.若有定義語句:doublea,*p=&a;,以下敘述中錯誤的是()。A.定義語句中的*號是一個間址運(yùn)算符

B.定義語句中的*號是一個說明符

C.定義語句中的p只能存放double類型變量的地址

D.定義語句中,*p=&a把變量a的地址作為初值賦給指針變量P

72.

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

A)對于double類型數(shù)組,不可以直接用數(shù)組名對數(shù)組進(jìn)行整體輸入或輸出

B)數(shù)組名代表的是數(shù)組所占存儲區(qū)的首地址,其值不可改變

C)當(dāng)程序執(zhí)行中,數(shù)組元素的下標(biāo)超出所定義的下標(biāo)范圍時,系統(tǒng)將給出“下標(biāo)越界的出錯信息”

D)可以通過賦初值的方式確定數(shù)組元素的個數(shù)

74.有以下程序:

#include<stdio.h>

main()

{chara=H;

a=(a>=Aa<=2)?(a

溫馨提示

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

最新文檔

評論

0/150

提交評論