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頁,還剩46頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021-2022年江西省新余市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有定義“inta=0,b=1,c=1;”,關(guān)于邏輯表達(dá)式“a++||b++&&c++”中各個部分的執(zhí)行順序,以下說法正確的是()。

A.先執(zhí)行“b++”,再執(zhí)行“c++”,最后執(zhí)行“a++”

B.先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“c++”

C.先執(zhí)行“c++”,再執(zhí)行“b++”,最后執(zhí)行“a++”

D.先執(zhí)行“b++”,再執(zhí)行“a++”,最后執(zhí)行“c++”

2.下面程序的運(yùn)行結(jié)果是

#include<stdio.h>

voiddelch(char*s)

{inti,j;

char*a;

a=s;

for(i=0,j=0;a[i]!=′\n′;i++)

if(a[i]>=′0′&&a[i]<=′9′)

{s[j]=a[i];j++;}

s[j]=′\0′;}

main()

{char*item="a34bc";

delch(item);

printf("\n%s",item);}

A.abcB.34C.a34D.a34bc

3.以下敘述正確的是

A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同

D.從多層循環(huán)嵌套中退出時,只能使用goto語句

4.已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運(yùn)算是()。

A.head(tail(tail(L)))

B.tail(head(head(tail(L))))

C.head(tail(head(tail(L))))

D.head(tail(head(tail(tail(L)))))

5.

6.對稱數(shù)組A中,每個元素的長度為4個字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到8。將其下三角中的元素連續(xù)存儲在從首地址SA開始的存儲器內(nèi),該數(shù)組按行存放是,則元素A[5][8]的起始地址為()。

A.SA+124B.SA+128C.SA+132D.136

7.有以下程序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",str1);}程序運(yùn)行后的輸出結(jié)果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

8.有以下函數(shù)定義:voidfun(intn,doubx){……}若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun的正確調(diào)用語句是()。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfum(n,x);

9.

10.有以下程序:#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

11.下列語句中,說法正確的是______。

A.C程序書寫格式嚴(yán)格,每行只能寫一個語句

B.C程序書寫格式嚴(yán)格,每行必須有行號

C.C程序書寫格式自由,每行可以寫多條語句,但之間必須用逗號隔開

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

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

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

13.

14.設(shè)變量n為f1oat類型,m為int類型,則以下能實(shí)現(xiàn)將n中的數(shù)值保留小數(shù)點(diǎn)后兩位,第三位進(jìn)行四舍五人運(yùn)算的表達(dá)式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

15.有以下程序:#include<stdio.h>voidmain(){doublex=3.14159;printf(“%f\n”,(int)(x*1000+0.5)/(double)1000);}程序運(yùn)行后的輸出結(jié)果是()。

A.3.142000B.3.141000C.3.143000D.3.140000

16.有三個關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.交C.投影D.并

17.兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。

A.耦合度B.內(nèi)聚度C.復(fù)雜度D.數(shù)據(jù)傳輸特性

18.

19.算法的空間復(fù)雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

20.以下選項中合法的c語言常量是()。

A.,C—STR’B.2014.1C.”\l.0D.2EK

二、2.填空題(20題)21.下面pi函數(shù)的功能是根據(jù)以下公式返回滿足精度要求的π的值。請根據(jù)以下算法要求補(bǔ)足所缺語句。

doublepi(doubleeps)

{doubles=0.0,t=1.0;

intn;

for(【】;t>eps;n++)

{s+=t;

t=n*t/(2*n+1);

}

return(2.0*【】);

}

22.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。

23.數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控。

24.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。

25.在一個容量為15的循環(huán)隊列中,若頭指針front=6,尾指針Year=9,則該循環(huán)隊列中共有【】個元素。

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

intf(inta[],intn)

{

if(n>=l)

returnf(a,n-1)+a[n-1];

else

return0;

}

main{)

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

printf{'%d\n",s);

}

27.以下函數(shù)用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。請?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

[8]

if(s[*k]<s[i])*k=i;

return[9];}

main()

{inta[10]:{876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

pfintf("%d,%d\n"

28.一棵二叉樹第6層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)最多為______個。

29.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的的輸出語句()。

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

31.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時若從鍵盤輸入:B33<回車>,則輸出結(jié)果是【】。

#include

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

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

}

32.軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了【】的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。

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

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

printf("%d,%d,%d,%d",a,b,y,z);

}

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

main()

{inti,a[10];

a[0]=a[1]=1;

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

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

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

}

}

35.已有文本文件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);

fclose(fr);

}

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

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

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

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i;

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

}

38.以下程序的輸出結(jié)果是12.00,請將空白處填寫完整。

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

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

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

}

39.以下程序用來輸出結(jié)構(gòu)體變量student所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>

structst

{charname[20];doublescore;

};

main()

{structststudent;

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

}

40.以下fun函數(shù)的功能是:累加數(shù)組元素中的值。n為數(shù)組中元素的個數(shù)。累加的和放入x所指的存儲單元中。

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0;k<n;k++)r=【】;

【】=r;

}

三、1.選擇題(20題)41.在執(zhí)行以下程序時,如果從鍵盤上輸入ABCdef<回車>,則輸出為______。#include<stdio.h>main(){charch;while((ch=getchar())!="\n"){if(ch>='A'&&ch<='B')ch=ch+32;elseif(ch>='a'&&ch<='z')ch=ch-32;printf("%c",ch);}printf("\n");}

A.ABCdefB.abcDEFC.abcD.DEF

42.設(shè)intb=2;,表達(dá)式(b<<2)/(b>>1)的值是()

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

43.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

44.整型變量X和Y的值相等,且為非0值,則以下選項中結(jié)果為0的表達(dá)式是______。

A.X||YB.X|YC.X&YD.X^Y

45.下列程序的輸出結(jié)果是_____。main(){inti;for(i='A';i<'I';i++)printf("%c",i+32);printf("\n");}

A.編譯不通過,無輸出B.acegC.acegiD.abcdefghi

46.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法

A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)

47.C語言的基本單位是()。

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

48.下面不屬于軟件設(shè)計原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

49.若變量已正確定義并賦值,則以下符合C語言語法的表達(dá)式是()。

A.a=a+7;B.a=7+b+c,a++C.int(12.3%4)D.a=a+7=c+b

50.下面程序的運(yùn)行結(jié)果是#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}

A.gaeB.gaC.LanSuageD.有語法錯

51.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXYZD.ABDYECFXZ

52.設(shè)有以下定義uniondata{intd1;floatd2;}demo;則下面敘述中錯誤的是()。

A.變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同

B.變量demo中各成員的地址相同

C.變量demo和各成員的地址相同

D.若給demo.d1賦99后,demo.d2中的值是99.0

53.設(shè)有定義inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是______。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

54.若函數(shù)調(diào)用時的實(shí)參為變量時,以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是()。

A.函數(shù)的實(shí)參和其對應(yīng)的形參共占同一存儲單元

B.形參只是形式上的存在,不占用具體存儲單元

C.同名的實(shí)參和形參占同一存儲單元

D.函數(shù)的形參和實(shí)參分別占用不同的存儲單元

55.使用白盒測試法時,確定測試數(shù)據(jù)應(yīng)該根據(jù)()和指定的覆蓋標(biāo)準(zhǔn)。

A.程序的內(nèi)部邏輯B.程序的復(fù)雜結(jié)構(gòu)C.使用說明書D.程序的功能

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

A.chars[10]="abedefg";

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

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

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

57.以下程序的輸出結(jié)果是______。sub(intx,int*y){*y=*y-x;}main(){inta=1,b=2;sub(a,&B);sub(b,&A);printf("%d,%d\n",a,B);}

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

58.已知小寫字母a的ASCII碼為97,大寫字母A的ASCII碼為65,以下程序的結(jié)果是______。main(){unsignedinta=32,b=66;printf("%c\n",b|b);}

A.66B.98C.bD.B

59.下面程序把數(shù)組元素中的最大值放入a[o]中,則在if語句中的條件表達(dá)式應(yīng)該是()main(){inta[10]={6,7,2,9,1,10,5,8,4,3,},*p=a,i;for(i=0;i<10;i++,p++)if(____)*a=*p;printf("%d",*a);}

A.p>aB.*p>a[0]C.*p>*a[0]D.*p[0]>*a[0]

60.若在某函數(shù)內(nèi)部有定義:inta[3][4];則數(shù)組a中各元素()。

A.可在程序的運(yùn)行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運(yùn)行階段得到初值0

四、選擇題(20題)61.算法的空間復(fù)雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

62.

63.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。

A.可行性分析報告B.軟件需求規(guī)格說明書C.概要設(shè)計說明書D.集成測試計劃

64.下列C語言用戶標(biāo)識符中,不屬于合法標(biāo)識符的是

A.a(chǎn)d_intB.bb_7C._dd7D.int

65.下列選項中,能正確定義數(shù)組的語句是()。

A.intnum[0..2008];

B.intlllllll[];

C.intN:2008:

D.#defineN2008intnum[N1;intnum[N];

66.若有定義:能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是()

A.3:5B.3,5C.35D.35

67.

68.有以下程序,其中%u表示按無符號整數(shù)輸出:

main

{

unsignedintx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/

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

}

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

A.-1B.65535C.32767D.0xFFFF

69.

70.

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

A.Zha0,m,85,90,Qian,f,95,92

B.Zha0,m,85,90,Zha0,m,85,90

C.Qian.f,95,92,Qian,f,95,92

D.Qian,f,95,92,Zha0,m,85,90

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

A.循環(huán)鏈表是非線性結(jié)構(gòu)

B.雙向鏈表是非線性結(jié)構(gòu)

C.只有一個根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)

D.有一個以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)

73.不能把字符串:Hello!賦給數(shù)組b的語句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

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

A.s=67B.s=61C.S=63D.S=56

75.

76.設(shè)有以下函數(shù):

voidfun(intn,char*s){…}

則下面對函數(shù)指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

77.有以下程序#include<stdi0.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(”%d\n”,m);}intf(intx){returnx*2;}程序運(yùn)行后的輸出結(jié)果是()A.8B.2C.4D.1

78.有以下程序

#include"stdio.h"

voidfun(int*a,int*b)

{intc=20,d=20;

*a=c/3;

b=d/5;}

main()

{inta=3,b=5;

fun(&a,&b);

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

}

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

A.6,5B.5,6

C.20,25D.3,5

79.(17)軟件需求分析階段的工作,可以分為四個方面:需求獲取、需求分析、編寫需求規(guī)格說明書以及()

A.階段性報告

B.需求評審

C.總結(jié)

D.都不正確

80.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進(jìn)行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

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

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

試題程序:

六、程序設(shè)計題(1題)82.請編一個函數(shù)intfun(inta),它的功能是:判斷a是否是素數(shù),若a是素數(shù),返回1;若不是素數(shù),返回0。A的值由主函數(shù)從鍵盤讀入。

參考答案

1.BC語言中運(yùn)算符有優(yōu)先級和結(jié)合性。自增、自減運(yùn)算符的優(yōu)先級高于邏輯運(yùn)算符,邏輯運(yùn)算符中邏輯與“&&”的優(yōu)先級比邏輯或“||”高,邏輯運(yùn)算符的結(jié)合性自左向右。所以題干中表達(dá)式等價于“(a++)||((b++)&&(c++))”。運(yùn)算順序為:首先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“C++”。故本題答案為B選項。

2.B解析:考查用指針引用字符串元素的方法。指針a通過數(shù)組元素下標(biāo)來從頭逐個地引用字符串item中的字符,判斷不是0~9之間的數(shù)字時,就去掉這個字符,所以程序結(jié)束后,字符串item中就只剩下和兩個字符了。

3.B解析:continue是結(jié)束本次循環(huán),直接進(jìn)入到下次循環(huán)中,break用于循環(huán)語句中的作用是直接跳出本層循環(huán),能從多層循環(huán)中退出的語句除了goto語句,exit,return等語句也能直接跳出多層循環(huán)。注意:continue和break語句在while語句中的作用。

4.D

5.C

6.B

7.B解析:本題中的函數(shù)ss()有兩個參數(shù),一個是字符型指針變量s,另一個是字符型變量t在函數(shù)中通過一個while循環(huán),在循環(huán)中一次取出s指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“s=t-'a'+'A':”(若是小寫字母,則把它轉(zhuǎn)換成大寫字母)語句。在主函數(shù)中執(zhí)行函數(shù)調(diào)用ss(strl,c),很顯然是把str1數(shù)組中所有字符“d”變成大寫字母,其他字符不變。所以4個選項中B正確。

8.C解析:選項A中應(yīng)將y和m前面的函數(shù)的類型說明符去掉,故選項A不正確;選項B中函數(shù)傳了2個參數(shù),其中一個為整型—個為浮點(diǎn)型,而fun()函數(shù)在定義時聲明的2個參數(shù),一個為整型一個為雙精度型,其參數(shù)類型不一致,故選項B不正確;選項D在調(diào)用函數(shù)時,不應(yīng)該再聲明其返回類型,故選項D不正確。所以,4個選項中選項C符合題意.

9.C

10.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選項。

11.D

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

13.A

14.B

15.A根據(jù)算術(shù)表達(dá)式和運(yùn)算符的優(yōu)先級與結(jié)合性。表達(dá)式“int(x*1000+0.5)/(double)1000”,首先計算“x*1000”,由于x是double類型,1000是整型,所以“x*1000”的結(jié)果默認(rèn)是double類型,即3141.59,加0.5后再執(zhí)行int的強(qiáng)制轉(zhuǎn)換,結(jié)果為3142。分母“(double)1000”強(qiáng)制轉(zhuǎn)換為double類型,此時計算“3142/(double)1000”,3142需要轉(zhuǎn)換成double類型,然后除以1000,結(jié)果為3.142000,默認(rèn)保留小數(shù)點(diǎn)后6位。故本題答案為A選項。

16.D\n兩個相同結(jié)構(gòu)關(guān)系的并是由屬于這兩個關(guān)系的元組組成的集合。

\n

17.A解析:本題考核模塊獨(dú)立性的評價。評價模塊獨(dú)立性的主要標(biāo)準(zhǔn)有兩個;一是模塊之間的耦合,它表明兩個模塊之間互相獨(dú)立的程度,也可以說是兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度(所以,本題的正確答案為選項A);二是模塊內(nèi)部之間的關(guān)系是否緊密,稱為內(nèi)聚。一般來說,要求模塊之間的耦合盡可能地弱,即模塊盡可能獨(dú)立,而要求模塊的內(nèi)聚程度盡量地高。

18.C

19.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實(shí)際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。

20.B所謂常量是指在程序運(yùn)行的過程中,其值不能被改變的量。在C語言中,有整型常量、實(shí)型常量、字符常量和字符串常量等類型。選項A是字符串,但使用單引號,錯誤,選項c,D,為實(shí)型常量中指數(shù)形式,但指數(shù)形式e(E)之前必須是數(shù)字,之后必須為整數(shù),錯誤。故答案為B選項。

21.n=1s

22.00解析:已知a=10,b=20,所以邏輯表達(dá)式a<b的值為true,即為1,在這個表達(dá)式前面有一個邏輯運(yùn)算符!,表示反操作,所以整個語句的值應(yīng)當(dāng)為false,即為0。

23.共享性共享性解析:數(shù)據(jù)庫技術(shù)的主要特點(diǎn)有以下幾個方面:數(shù)據(jù)的集成性,數(shù)據(jù)的高共享性與低冗余性,數(shù)據(jù)的獨(dú)立性,數(shù)據(jù)統(tǒng)一管理與控制。

24.1212解析:x=(表達(dá)式1,表達(dá)式2,…)的形式,結(jié)果為最后一個表達(dá)式的值:x=(a=4,6*2)=2*6=12。

25.3

26.1515解析:在函數(shù)f()中只有一條if語句,如果n不小于1,則返回f(a,n-1)+a[n-1);,否則返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3]……直到f(aa,0)返回0.故f(aa,5)實(shí)際返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本題最終輸出15。

27.本題中直接使用指針變量k,但在使用時要注意對k的指針運(yùn)算,此外,一開始應(yīng)使*k的值為數(shù)組中的某一下標(biāo)值,即*k=0。

28.3232解析:二叉樹第k層上,最多有2k-1(k≥1)個結(jié)點(diǎn)。第6層的結(jié)點(diǎn)數(shù)最多是26-1=32。注意區(qū)別“二叉樹的結(jié)點(diǎn)最多數(shù)”和“某一層的結(jié)點(diǎn)最多數(shù)”。前者的計算是深度為m的二叉樹最多有2m-1個結(jié)點(diǎn)。

29.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函數(shù)的一般格式為:“printf(格式控制,輸出表列)”。

30.010111212010111212解析:本題考查的是靜態(tài)局部變量的運(yùn)用。靜態(tài)局部變量的作用域與普通局部變量一樣,但它的生存期將延長到程序運(yùn)行結(jié)束。本題的主函數(shù)中使用一個for循環(huán)輸出循環(huán)變量i和fun(a)的值,由于a的值一直沒被修改過,所以三次調(diào)用的都是fun(5)。第1次調(diào)用,b=0,c=3,所以返回值為5+1+4=10;第2次調(diào)用,因為c是靜態(tài)局部變量,它仍然保存著上次調(diào)用結(jié)束時的值4,而b重新被創(chuàng)建和初始化為0,所以返回值為5+1+5=11;同理,第3次調(diào)用返回的是12。所以,程序最終輸出為:010111212。

31.1B1B解析:從鍵盤輸入后,有a=B,b=33。a=a-'A'+'0'='B'-'A'+'0'='1',b=b*2=66,在輸出時均需要把a(bǔ),b轉(zhuǎn)化為字符型,因此輸出為1B。

32.軟件工程學(xué)軟件工程學(xué)

33.7467

34.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數(shù)組中前面兩項的和賦值給數(shù)組當(dāng)前元素,得到a的值應(yīng)為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數(shù)組中的元素以每行2個的形式輸出。

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

36.2121解析:外層switch語句后面括號里的x的值為1,所以執(zhí)行從casel:后面的語句開始執(zhí)行,而cascl:后面語句也為switch語句,這個switch語句后面括號里的y的值為0,所以從該switch語句里的case0:開始執(zhí)行即執(zhí)行a++,這時a的值變?yōu)?,執(zhí)行完畢,遇到break語句,退出內(nèi)層switch語句,又回到外層switch語句,繼續(xù)執(zhí)行casel:下面的語句即case2:執(zhí)行完畢后,a自加1變?yōu)?,b自加1變?yōu)?。所以最后輸出的a和b的值為21。

37.55解析:此程序中,for循環(huán)語句后面直接跟了一個“;”,表明循環(huán)體為空。輸出語句不在for循環(huán)體內(nèi),所以在循環(huán)執(zhí)行完畢后才輸出s的值。s、i的初值分別為0和1,判斷循環(huán)條件,表達(dá)式“1<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為2和1,繼續(xù)判斷循環(huán)條件,表達(dá)式“2<3”成立,執(zhí)行“i++,s+=i”后,i和s的值分別為3,再次判斷循環(huán)條件,表達(dá)式“3<3”不成立,循環(huán)結(jié)束。

解析:a/2=9/2=4,1/2=0,于是根據(jù)輸出結(jié)果就有下列等式:z=4+2*x/1.1=12.0,化簡后,為x/1.1=4,x=4.4。

39.structst或studentstructst或student

40.r+b[k]或*(b+k)+r*xr+b[k]或*(b+k)+r\r\n*x解析:r是累加的和,k是數(shù)組b的下標(biāo),因此有r=r+b[k];由于x是傳地址調(diào)用,*x是其指向存儲單元的內(nèi)容,要把累加的和放入x所指的單元,因此有*x=r。

41.B

42.D

43.C解析:本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當(dāng)str1<str2時,返回值為負(fù)數(shù);當(dāng)str1=str2時,返回0;當(dāng)str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運(yùn)算符比較兩個字符串的大小)。

44.D解析:“||”為或運(yùn)算符,當(dāng)其左右表達(dá)式中只要—個為非零則整個表達(dá)式的值1。|是按位或,&是按位與,^是按位異或,這三位運(yùn)算符是按值的二進(jìn)制位來比較的。

45.B

46.CC?!窘馕觥拷Y(jié)構(gòu)化分析方法是面向數(shù)據(jù)流進(jìn)行需求分析的方法,采用自頂向下、逐層分解,建立系統(tǒng)的處理流程,以數(shù)據(jù)流圖和數(shù)據(jù)字典為主要工具,建立系統(tǒng)的邏輯模型。

47.AA。【解析】C語言是函數(shù)式的語言。它的基本組成單位是函數(shù),在C語言中任何程序都是由一個或者多個函數(shù)組成的。

48.C解析:軟件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念。①抽象是一種思維工具,就是把事物本質(zhì)的共同特性抽出來而不考慮其他細(xì)節(jié)。②模塊是指可以單獨(dú)命名且可編址的元素。如高級語言中的過程、函數(shù)、子程序等。③信息隱蔽是指在一個模塊內(nèi)包含的信息(過程或數(shù)據(jù)),對于不需要這些信息的其他模塊來說是不能訪問的。④模塊獨(dú)立性是指每個模塊只完成系統(tǒng)要求的獨(dú)立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。因此,本題的正確答案是C。

49.B

50.A

51.D解析:對二叉樹的前序遍歷是指:先訪問根結(jié)點(diǎn),然后訪問左子樹,最后訪問右于樹,并且,在訪問左、右子樹時,先訪問根結(jié)點(diǎn),再依次訪問其左、右子樹。記住3種遍歷的順序:①前序,訪問根一按前序遍歷左子樹一按前序遍歷右子樹:②中序,按中序遍歷左子樹一訪問根一按中序遍歷右子樹;③后序,按后序遍歷左子樹呻按后序遍歷右子樹一訪問根。

52.D解析:聯(lián)合體的所有成員共占同一段內(nèi)存,所以聯(lián)合體變量的長度與它的最長成員所占長度…致,本題中float所占內(nèi)存字節(jié)數(shù)為4,而\u3000int類型在TurboC\u30002.0中是占2字節(jié)、在VisualC++6.0中占4字節(jié),所以int類型所占內(nèi)存字節(jié)數(shù)不會超過float,那demo就與成員d2所占字節(jié)數(shù)是相同的,選項A的說法正確。聯(lián)合體的所有成員的首地址都是相同的,和聯(lián)合體變量的地址一致。故選項B和C都是正確的。由于int類型數(shù)據(jù)和float類型數(shù)據(jù)在內(nèi)存中的存放格式是不一樣的,所以給d1賦99后,d2中不會得到99.0這個值。故選項D不正確,答案應(yīng)該選擇D。

53.B解析:“%2d”指定輸入數(shù)據(jù)所占寬度為2,&是C語言中的求地址運(yùn)算符。

54.D解析:在定義函數(shù)時函數(shù)名后面括弧中的變量名稱為“形式參數(shù)”(簡稱形參),在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面括弧中的參數(shù)(可以是一個表達(dá)式)稱為“實(shí)際參數(shù)”(簡稱實(shí)參)。C語言規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。在內(nèi)存中,實(shí)參單元與形參單元是不同的單元。故本題應(yīng)該選擇D。

55.A白盒測試是把測試對象看作是一個打開的盒子,允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及相關(guān)信息來設(shè)計或選擇測試用例,對程序所有的邏輯路徑進(jìn)行測試。所以,白盒測試的對象基本上是源程序,以程序的內(nèi)

【知識拓展】軟件測試按照功能劃分可以分成白盒(白箱)測試和黑盒(黑箱)測試。其中黑盒測試是對軟件已經(jīng)實(shí)現(xiàn)的功能是否滿足需求進(jìn)行測試和驗證。

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

57.C解析:函數(shù)fun的功能是將形參指針變量y所指變量的值減去形參x中的值,計算結(jié)果賦給y所指變量。主函數(shù)第一次調(diào)用函數(shù)sub之后,b的值為1,第二次調(diào)用函數(shù)sub之后,a的值為0,程序輸出為0,1。

58.C解析:位運(yùn)算符“|”的作用是按位或,即兩個二進(jìn)制數(shù)的相應(yīng)位中只要一個為1,該位的結(jié)果值為1。最后以字符型輸出,98對應(yīng)的字符“b”。

59.B

60.C解析:在函數(shù)內(nèi)部定義的存儲類型為auto的變量或數(shù)組,如果沒有進(jìn)行初始化,就不能得到確定值。

61.D【解析】算法的空間復(fù)雜度是指執(zhí)行這個算法所需要的內(nèi)存空間。一個算法所占用的存儲空間包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行中所需要的額外空間。其中額外空間包括算法程序執(zhí)行過程中的工作單元以及某種數(shù)據(jù)結(jié)構(gòu)所需要的附加存儲空間。如果額外空間量相對于問題規(guī)模來說是常數(shù),則稱該算法是原地工作的。在許多實(shí)際問題中,為了減少算法所占的存儲空間,通常采用壓縮存儲技術(shù),以便盡量減少不必要的額外空間。

62.B

63.BA項錯誤,可行性分析階段產(chǎn)生可行性分析報告。C項錯誤,概要設(shè)計說明書是總體設(shè)計階段產(chǎn)生的文檔。D項錯誤,集成測試計劃是在概要設(shè)計階段編寫的文檔。B項正確,需求規(guī)格說明書是后續(xù)工作如設(shè)計、編碼等需要的重要參考文檔。

64.DC語言的標(biāo)識符主要用來表示常量、變量、函數(shù)和類型等的名字,只起到標(biāo)識作用。標(biāo)識符由數(shù)字、下畫線或英文字母構(gòu)成,可以分為三類:保留字、預(yù)定義標(biāo)識符和用戶定義標(biāo)識符。保留字是指每一個標(biāo)識符都有其特定的含義,不允許用戶把它們當(dāng)做變量名使用,如if、int、for等。預(yù)定義標(biāo)識符也是一類具有特殊含義的標(biāo)識符,它們被用做庫函數(shù)名和預(yù)編譯命令,如define、include等。用戶定義標(biāo)識符是用戶根據(jù)自己的需要定義的一類標(biāo)識符,用于標(biāo)識變量、符號常量、用戶定義函數(shù)、類型名和文件指針等。這類標(biāo)識符主要由英文字母、數(shù)字和下畫線構(gòu)成,但開頭字符一定是字母或下畫線。

題目中選項A、B、C都是合法的用戶自定義標(biāo)識符,選項D為保留字,不屬于用戶標(biāo)識符。

65.DC語言不允許定義動態(tài)數(shù)組,定義數(shù)組的大小必須為常量表達(dá)式。A選項錯誤,C語言中數(shù)組沒有此類型的定義方法;B選項錯誤,定義數(shù)組應(yīng)指明數(shù)組大小,如果不指明數(shù)組大小,需要給定初值的個數(shù);c選項錯誤,N為變量,不能用來定義數(shù)組大小。因此D選項正確。

66.AsCanf中格式控制符里必須原樣輸入,所以分號也必須輸入,A)正確。

67.C

68.B解析:整型常量有十進(jìn)制、八進(jìn)制和十六進(jìn)制3種表示:十進(jìn)制整數(shù)以正號(+)或負(fù)號(-)開頭,由首位非0的一串十進(jìn)制數(shù)字組成,正負(fù)號也可省略,表示正整數(shù);八進(jìn)制整數(shù)以數(shù)字0開頭,后面接著干個八進(jìn)制數(shù)字(0~7):十六進(jìn)制整數(shù)以數(shù)字。和字母x(大、小寫均可)開頭,后面接若干個十六進(jìn)制數(shù)字(數(shù)字0~9和字母A~F,大、小寫均可)。故本題是以無符號整數(shù)形式輸出一個十六進(jìn)制整數(shù)FFFF,將其轉(zhuǎn)換為十進(jìn)制就是65535,故本題應(yīng)該選擇B。

69.C

70.A

71.A本題考查的是函數(shù)調(diào)用時的參數(shù)傳遞問題。程序在調(diào)用函數(shù)時,傳給函數(shù)啪參數(shù)只是結(jié)構(gòu)變量C在棧中的一個拷貝,函數(shù)馓的所有操作只是針對這個數(shù)據(jù)拷貝進(jìn)行的修改,這些都不會影響變量C的值。因此本題答案為A)。

72.C線性結(jié)構(gòu)指的是數(shù)據(jù)元素之間存在著“一對一”線性關(guān)系的數(shù)據(jù)結(jié)構(gòu),這樣的結(jié)構(gòu)中只有一個根節(jié)點(diǎn),如循環(huán)鏈表和雙向鏈表;非線性結(jié)構(gòu)指的是數(shù)據(jù)元素之間存在著“一對多”非線性關(guān)系的數(shù)據(jù)結(jié)構(gòu),這樣的結(jié)構(gòu)中可能有一個根節(jié)點(diǎn)(如樹形結(jié)構(gòu)),也可能有多個根節(jié)點(diǎn)(如網(wǎng)狀結(jié)構(gòu))。

73.B

74.B變量x是靜態(tài)變量,P是全局變量,因此sum函數(shù)調(diào)用結(jié)束時,x、P的值保留,下一次函數(shù)調(diào)用時繼續(xù)使用。y和k都是局部變量,調(diào)用結(jié)束后釋放空間,值不再保留。程序執(zhí)行過程中,s的值為l、6、13、22、33、46、61。所以輸出61。

75.D

76.A\n函數(shù)指針的定義格式為函數(shù)類型(*指針變量名)(形參列表);函數(shù)名和數(shù)組名一樣代表了函數(shù)代碼的首地址,因此在賦值時,直接將函數(shù)指針指向函數(shù)名就行了。所以選項A正確。

\n

77.A第一次調(diào)用m=f(f(f(1))),第二次為m=f(f(2)),第三次為m=f(4),即返回值為8,選項A)正確。

78.A在本題中,首先定義了一個fun函數(shù),函數(shù)中用兩個指針變量作為形參,在函數(shù)體中,定義了兩個整型變量,然后做除法運(yùn)算,并試圖將結(jié)果保存到形參中,語句“*a=c/3;”中由于變量c與3都是整型,其運(yùn)算結(jié)果也應(yīng)該為整型,運(yùn)算過程中舍去小數(shù)部分,得到計算結(jié)果為6,并保存到指針變量a指向的存儲單元中;語句“b=d/5;”同樣是整數(shù)運(yùn)算,其運(yùn)算結(jié)果為4,但很明顯,賦值的方法不正確,不能改變指針變量b指向單元的值。

在主函數(shù)中,定義了兩個整型變量,并分別賦初值,然后調(diào)用fun函數(shù),由于函數(shù)的形參是指針變量,采用的傳值方式是傳地址,能實(shí)現(xiàn)數(shù)據(jù)的雙向傳遞,因此,調(diào)用函數(shù)后,變量a的值變?yōu)榱?,而變量b的值不變,最后輸出的結(jié)果是6,5。

79.B

80.A變量不能充當(dāng)數(shù)組定義的長度。所以A)錯誤。

81.

【解析】for循環(huán)結(jié)束的標(biāo)志是for后的一個語句,如果for后面直接跟一個分號,說明是一個空循環(huán)不執(zhí)行任何功

82.\n#include”stdio.h”

\nintfun(inta)

\n{intI;

\nif(a==2)return1;I=2;

\nwhile((a%I)!=0I<=sqrt((float)a))

\nI++;

\nif(a%I==0)

\n{printf(“%disnotaprime!”,a);

\nreturn0;}

\nprintf(“%disaprime!”,a);

\nreturn1;}

\nmain

\n{intx;

\nprintf(“\\npleaseenteranumber:”);

\nscanf(“%d”,&x);

\nprintf(“%d\\n”,fun(x));}

\n</y&&!z||1>2021-2022年江西省新余市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有定義“inta=0,b=1,c=1;”,關(guān)于邏輯表達(dá)式“a++||b++&&c++”中各個部分的執(zhí)行順序,以下說法正確的是()。

A.先執(zhí)行“b++”,再執(zhí)行“c++”,最后執(zhí)行“a++”

B.先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“c++”

C.先執(zhí)行“c++”,再執(zhí)行“b++”,最后執(zhí)行“a++”

D.先執(zhí)行“b++”,再執(zhí)行“a++”,最后執(zhí)行“c++”

2.下面程序的運(yùn)行結(jié)果是

#include<stdio.h>

voiddelch(char*s)

{inti,j;

char*a;

a=s;

for(i=0,j=0;a[i]!=′\n′;i++)

if(a[i]>=′0′&&a[i]<=′9′)

{s[j]=a[i];j++;}

s[j]=′\0′;}

main()

{char*item="a34bc";

delch(item);

printf("\n%s",item);}

A.abcB.34C.a34D.a34bc

3.以下敘述正確的是

A.continue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

B.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同

D.從多層循環(huán)嵌套中退出時,只能使用goto語句

4.已知廣義表L=((x,y,z),a,(u,t,w)),從L表中取出原子項t的運(yùn)算是()。

A.head(tail(tail(L)))

B.tail(head(head(tail(L))))

C.head(tail(head(tail(L))))

D.head(tail(head(tail(tail(L)))))

5.

6.對稱數(shù)組A中,每個元素的長度為4個字節(jié),行下標(biāo)i從1到8,列下標(biāo)j從1到8。將其下三角中的元素連續(xù)存儲在從首地址SA開始的存儲器內(nèi),該數(shù)組按行存放是,則元素A[5][8]的起始地址為()。

A.SA+124B.SA+128C.SA+132D.136

7.有以下程序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",str1);}程序運(yùn)行后的輸出結(jié)果是

A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd

8.有以下函數(shù)定義:voidfun(intn,doubx){……}若以下選項中的變量都已正確定義并賦值,則對函數(shù)fun的正確調(diào)用語句是()。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfum(n,x);

9.

10.有以下程序:#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

11.下列語句中,說法正確的是______。

A.C程序書寫格式嚴(yán)格,每行只能寫一個語句

B.C程序書寫格式嚴(yán)格,每行必須有行號

C.C程序書寫格式自由,每行可以寫多條語句,但之間必須用逗號隔開

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

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

A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1

13.

14.設(shè)變量n為f1oat類型,m為int類型,則以下能實(shí)現(xiàn)將n中的數(shù)值保留小數(shù)點(diǎn)后兩位,第三位進(jìn)行四舍五人運(yùn)算的表達(dá)式是()。

A.n=(n*100+0.5)/100.0

B.m=n*100+0.5,n=m/100.0

C.n=n*100+0.5/100.0

D.n=(n/100+0.5)*100.0

15.有以下程序:#include<stdio.h>voidmain(){doublex=3.14159;printf(“%f\n”,(int)(x*1000+0.5)/(double)1000);}程序運(yùn)行后的輸出結(jié)果是()。

A.3.142000B.3.141000C.3.143000D.3.140000

16.有三個關(guān)系R,S和T如下:

其中關(guān)系T由關(guān)系R和s通過某種操作得到,該操作為()。

A.選擇B.交C.投影D.并

17.兩個或兩個以上模塊之間關(guān)聯(lián)的緊密程度稱為()。

A.耦合度B.內(nèi)聚度C.復(fù)雜度D.數(shù)據(jù)傳輸特性

18.

19.算法的空間復(fù)雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

20.以下選項中合法的c語言常量是()。

A.,C—STR’B.2014.1C.”\l.0D.2EK

二、2.填空題(20題)21.下面pi函數(shù)的功能是根據(jù)以下公式返回滿足精度要求的π的值。請根據(jù)以下算法要求補(bǔ)足所缺語句。

doublepi(doubleeps)

{doubles=0.0,t=1.0;

intn;

for(【】;t>eps;n++)

{s+=t;

t=n*t/(2*n+1);

}

return(2.0*【】);

}

22.若a=10,b=20,則表達(dá)式!(a<b)的值是【】。

23.數(shù)據(jù)庫技術(shù)的主要特點(diǎn)為數(shù)據(jù)的集成性、數(shù)據(jù)的高【】和低冗余性、數(shù)據(jù)獨(dú)立性和數(shù)據(jù)統(tǒng)一管理與控。

24.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。

25.在一個容量為15的循環(huán)隊列中,若頭指針front=6,尾指針Year=9,則該循環(huán)隊列中共有【】個元素。

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

intf(inta[],intn)

{

if(n>=l)

returnf(a,n-1)+a[n-1];

else

return0;

}

main{)

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

printf{'%d\n",s);

}

27.以下函數(shù)用來求出數(shù)組的最大元素在數(shù)組中的下標(biāo)并存放在k所指的存儲單元中。請?zhí)羁铡?/p>

#include<conio.h>

#include<stdio.h>

intfun(int*s,intt,int*k)

{inti;

*k=0;

[8]

if(s[*k]<s[i])*k=i;

return[9];}

main()

{inta[10]:{876,675,896,101,301,401,980,431,451,777},k;

fun(a,10,&k);

pfintf("%d,%d\n"

28.一棵二叉樹第6層(根結(jié)點(diǎn)為第一層)的結(jié)點(diǎn)最多為______個。

29.若變量a,b已定義為int類型并賦值21和55,要求用printf函數(shù)以a=21,b=55的形式輸出,請寫出完整的的輸出語句()。

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

fun(inta)

{intb=0;staticintc=3;

b++;c++;

return(a+b+c);

}

main()

{inti,a=5;

for(i=0;i<3;i++)printf("%d%d",i,fun(a));

printf("\n");

}

31.已知字符A的ASCII代碼值為65,以下程序運(yùn)行時若從鍵盤輸入:B33<回車>,則輸出結(jié)果是【】。

#include

main()

{chara,b;

a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;

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

}

32.軟件危機(jī)出現(xiàn)于60年代末,為了解決軟件危機(jī),人們提出了【】的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。

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

main()

{inta=5,b=5,y,z;

y=b-->++a?++b:a;

z=++a>b?a:y;

printf("%d,%d,%d,%d",a,b,y,z);

}

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

main()

{inti,a[10];

a[0]=a[1]=1;

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

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

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

}

}

35.已有文本文件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);

fclose(fr);

}

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

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:switch(y)

{

case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

}

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

}

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

main()

{ints,i;

for(s=0,i=1;i<3;i++,s+=i;

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

}

38.以下程序的輸出結(jié)果是12.00,請將空白處填寫完整。

main()

{inta=9,b=2;

floatx=【】,y=1.1,z;

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

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

}

39.以下程序用來輸出結(jié)構(gòu)體變量student所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>

structst

{charname[20];doublescore;

};

main()

{structststudent;

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

}

40.以下fun函數(shù)的功能是:累加數(shù)組元素中的值。n為數(shù)組中元素的個數(shù)。累加的和放入x所指的存儲單元中。

fun(intb[],intn,int*x)

{intk,r=0;

for(k=0;k<n;k++)r=【】;

【】=r;

}

三、1.選擇題(20題)41.在執(zhí)行以下程序時,如果從鍵盤上輸入ABCdef<回車>,則輸出為______。#include<stdio.h>main(){charch;while((ch=getchar())!="\n"){if(ch>='A'&&ch<='B')ch=ch+32;elseif(ch>='a'&&ch<='z')ch=ch-32;printf("%c",ch);}printf("\n");}

A.ABCdefB.abcDEFC.abcD.DEF

42.設(shè)intb=2;,表達(dá)式(b<<2)/(b>>1)的值是()

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

43.判斷字符串s1是否大于字符串s2,應(yīng)該使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

44.整型變量X和Y的值相等,且為非0值,則以下選項中結(jié)果為0的表達(dá)式是______。

A.X||YB.X|YC.X&YD.X^Y

45.下列程序的輸出結(jié)果是_____。main(){inti;for(i='A';i<'I';i++)printf("%c",i+32);printf("\n");}

A.編譯不通過,無輸出B.acegC.acegiD.abcdefghi

46.結(jié)構(gòu)化分析方法是面向()的自頂向下、逐步求精進(jìn)行需求分析的方法

A.對象B.數(shù)據(jù)結(jié)構(gòu)C.數(shù)據(jù)流D.目標(biāo)

47.C語言的基本單位是()。

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

48.下面不屬于軟件設(shè)計原則的是()。

A.抽象B.模塊化C.自底向上D.信息隱蔽

49.若變量已正確定義并賦值,則以下符合C語言語法的表達(dá)式是()。

A.a=a+7;B.a=7+b+c,a++C.int(12.3%4)D.a=a+7=c+b

50.下面程序的運(yùn)行結(jié)果是#include<stdio.h>main(){staticchara[]="Languagef",b[]="programe";char*p1,*p2;intk;p1=a;p2=b;for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));}

A.gaeB.gaC.LanSuageD.有語法錯

51.有下列二叉樹,對此二叉樹前序遍歷的結(jié)果為()。

A.ACFXDBEYZB.ABEFXYZCDC.ABCDEFXYZD.ABDYECFXZ

52.設(shè)有以下定義uniondata{intd1;floatd2;}demo;則下面敘述中錯誤的是()。

A.變量demo與成員d2所占的內(nèi)存字節(jié)數(shù)相同

B.變量demo中各成員的地址相同

C.變量demo和各成員的地址相同

D.若給demo.d1賦99后,demo.d2中的值是99.0

53.設(shè)有定義inta;floatb;執(zhí)行scanf("%2d%f",&a,&b);語句時,若從鍵盤輸入876543.0<回車>,a和b的值分別是______。

A.876和543.000000

B.87和6.000000

C.87和543.000000

D.76和543.000000

54.若函數(shù)調(diào)用時的實(shí)參為變量時,以下關(guān)于函數(shù)形參和實(shí)參的敘述中正確的是()。

A.函數(shù)的實(shí)參和其對應(yīng)的形參共占同一存儲單元

B.形參只是形式上的存在,不占用具體存儲單元

C.同名的實(shí)參和形參占同一存儲單元

D.函數(shù)的形參和實(shí)參分別占用不同的存儲單元

55.使用白盒測試法時,確定測試數(shù)據(jù)應(yīng)該根據(jù)()和指定的覆蓋標(biāo)準(zhǔn)。

A.程序的內(nèi)部邏輯B.程序的復(fù)雜結(jié)構(gòu)C.使用說明書D.程序的功能

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

A.chars[10]="abedefg";

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

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

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

57.以下程序的輸出結(jié)果是______。sub(intx,int*y){*y=*y-x;}main(){inta=1,b=2;sub(a,&B);sub(b,&A);printf("%d,%d\n",a,B);}

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

58.已知小寫字母a的ASCII碼為97,大寫字母A的ASCII碼為65,以下程序的結(jié)果是______。main(){unsignedinta=32,b=66;printf("%c\n",b|b);}

A.66B.98C.bD.B

59.下面程序把數(shù)組元素中的最大值放入a[o]中,則在if語句中的條件表達(dá)式應(yīng)該是()main(){inta[10]={6,7,2,9,1,10,5,8,4,3,},*p=a,i;for(i=0;i<10;i++,p++)if(____)*a=*p;printf("%d",*a);}

A.p>aB.*p>a[0]C.*p>*a[0]D.*p[0]>*a[0]

60.若在某函數(shù)內(nèi)部有定義:inta[3][4];則數(shù)組a中各元素()。

A.可在程序的運(yùn)行階段得到初值0

B.可在程序的編譯階段得到初值0

C.不能得到確定的初值

D.可在程序的編譯或運(yùn)行階段得到初值0

四、選擇題(20題)61.算法的空間復(fù)雜度是指()。

A.算法程序的長度B.算法程序中的指令條數(shù)C.算法程序所占的存儲空間D.算法執(zhí)行過程中所需要的存儲空間

62.

63.在軟件開發(fā)中,需求分析階段產(chǎn)生的主要文檔是()。

A.可行性分析報告B.軟件需求規(guī)格說明書C.概要設(shè)計說明書D.集成測試計劃

64.下列C語言用戶標(biāo)識符中,不屬于合法標(biāo)識符的是

A.a(chǎn)d_intB.bb_7C._dd7D.int

65.下列選項中,能正確定義數(shù)組的語句是()。

A.intnum[0..2008];

B.intlllllll[];

C.intN:2008:

D.#defineN2008intnum[N1;intnum[N];

66.若有定義:能把整數(shù)3賦給變量a,5賦給變量b的輸入數(shù)據(jù)是()

A.3:5B.3,5C.35D.35

67.

68.有以下程序,其中%u表示按無符號整數(shù)輸出:

main

{

unsignedintx=0xFFFF;/*x的初值為十六進(jìn)制數(shù)*/

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

}

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

A.-1B.65535C.32767D.0xFFFF

69.

70.

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

A.Zha0,m,85,90,Qian,f,95,92

B.Zha0,m,85,90,Zha0,m,85,90

C.Qian.f,95,92,Qian,f,95,92

D.Qian,f,95,92,Zha0,m,85,90

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

A.循環(huán)鏈表是非線性結(jié)構(gòu)

B.雙向鏈表是非線性結(jié)構(gòu)

C.只有一個根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是線性結(jié)構(gòu)

D.有一個以上根結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)不一定是非線性結(jié)構(gòu)

73.不能把字符串:Hello!賦給數(shù)組b的語句是()。

A.charb[10]={’H’,’e’,’l’,’l’,’o’,’!’};

B.charb[10];b="Hello!";

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

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

A.s=67B.s=61C.S=63D.S=56

75.

76.設(shè)有以下函數(shù):

voidfun(intn,char*s){…}

則下面對函數(shù)指針的定義和賦值均正確的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

77.有以下程序#include<stdi0.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(”%d\n”,m);}intf(intx){returnx*2;}程序運(yùn)行后的輸出結(jié)果是()A.8B.2C.4D.1

78.有以下程序

#include"stdio.h"

voidfun(int*a,int*b)

{intc=20,d=20;

*a=c/3;

b=d/5;}

main()

{inta=3,b=5;

fun(&a,&b);

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

}

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

A.6,5B.5,6

C.20,25D.3,5

79.(17)軟件需求分析階段的工作,可以分為四個方面:需求獲取、需求分析、編寫需求規(guī)格說明書以及()

A.階段性報告

B.需求評審

C.總結(jié)

D.都不正確

80.若要求定義具有10個int型元素的一維數(shù)組a,則以下定義語句中錯誤的是()。五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:用選擇法對數(shù)組中的m個元素按從小到大的順序進(jìn)行排序。

例如,排序前的數(shù)據(jù)為:1132-5214

則排序后的數(shù)據(jù)為:-52111432

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

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

試題程序:

六、程序設(shè)計題(1題)82.請編一個函數(shù)intfun(inta),它的功能是:判斷a是否是素數(shù),若a是素數(shù),返回1;若不是素數(shù),返回0。A的值由主函數(shù)從鍵盤讀入。

參考答案

1.BC語言中運(yùn)算符有優(yōu)先級和結(jié)合性。自增、自減運(yùn)算符的優(yōu)先級高于邏輯運(yùn)算符,邏輯運(yùn)算符中邏輯與“&&”的優(yōu)先級比邏輯或“||”高,邏輯運(yùn)算符的結(jié)合性自左向右。所以題干中表達(dá)式等價于“(a++)||((b++)&&(c++))”。運(yùn)算順序為:首先執(zhí)行“a++”,再執(zhí)行“b++”,最后執(zhí)行“C++”。故本題答案為B選項。

2.B解析:考查用指針引用字符串元素的方法。指針a通過數(shù)組元素下標(biāo)來從頭逐個地引用字符串item中的字符,判斷不是0~9之間的數(shù)字時,就去掉這個字符,所以程序結(jié)束后,字符串item中就只剩下和兩個字符了。

3.B解析:conti

溫馨提示

  • 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

提交評論