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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.有下列程序段:

intk=0,a=1,b=2,c=3;

k=a<b?b:a;k=k>C?C:k;

執(zhí)行該程序段后,k的值是()。

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

2.以下與函數fseek(fp,0L,SEEK_SET)有相同作用的是

A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

3.

4.以下選項中的表達式調用庫函數依次求-4.5的絕對值、-4.0的平方根值、30°角的正弦值和2的3次方值。正確的調用是()

A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)

5.有說明語句“inta,b;”,如果輸入111222333,使得a的值為111,b的值為333,則以下正確的語句是()。A.scanf("%3d%*3d%3d",&a,&b);

B.scanf("%*3d%3d%3d",&a,&b);

C.scanf("%3d%3d%*3d",&a,&b);

D.scanf("%3d%*2d%3d",&a,&b);

6.以下不正確的敘述是()。

A.在C程序中,逗號運算符的優(yōu)先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若a和b類型相同,在執(zhí)行了賦值表達式a=b后b中的值將放人a中,而b中的值不變

D.當從鍵盤輸入數據時,對整型變量只能輸入整型數值,對實型變量只能輸入實型數值

7.

8.在定義inta[3][2]以后,對a的引用正確的是()

A.a[0,0]B.a[3][0]C.a[2][2]D.a[0][0]

9.有如下程序段

#include"stdio.h"

#include"string.h"

#defineN10

#defineM10

char*find(char(*a)[M],intn)

{char*q;inti;

q=a[0];

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

if(strcmp(a[i],q)<0)q=a[i];

returnq;}

main()

{chars[N][M]={"tomeetme","you","and","he","china"};

char*p;

intn=5;

p=find(s,n);

puts(p);}

則執(zhí)行后輸出的結果為A.A.heB.andC.youD.tomeetme

10.下列選項中,不屬于數據管理員(DBA.職責的是()。

A.數據庫維護B.數據庫設計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數據類型轉換

11.

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

A.在C程序中,每行中只能寫一條語句

B.若a是實型變量,C程序中允許賦值a=10,因此實型變量中允許存放整型數

C.在C程序中,無論是整數還是實數,都能被準確無誤地表示

D.在C程序中,%是只能用于整數運算的運算符

13.C語言中,組成數據文件的成分是()。A.A.記錄

B.數據行

C.數據塊

D.字符(字節(jié))序列

14.下列程序是用來判斷數組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

15.

有以下程序:

main

{intx=102,y=012;

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

}

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

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

16.有以下程序:#include<stdio.h>main(){chars[]=“abcde”;s+=2;printf(“%d\n”,s[0]);}程序的運行結果是()。

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

17.若變量已正確定義,則語句“s=32;s^=32;printf(“%d”,s);”的輸出結果是()。

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

18.設無向圖G中有n個頂點e條邊,則其對應的鄰接表中的表頭結點和邊表接點的個數分別為()。

A.n,eB.e,nC.2n,eD.n,2e

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

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

20.程序段:intx=12;doub1ey=3.141593;printf("%d%8.6f"x,y);的輸出結果是______。A.123.141593B.123.141593C.12,3.141593D.123,1415930

二、2.填空題(20題)21.以下程序中,for循環(huán)體執(zhí)行的次數是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

22.下列程序的輸出結果是【】。

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=4,b=3,c=5,d=6;

t(a,b,c,d);

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

}

23.#define命令出現在程序中函數的外面,宏名的有效范圍為______。

24.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為______。

25.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

printf("%d\n"k);}

26.下列程序段的輸出結果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

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

}

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

#include<stdio.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);

}

28.以下函數的功能是計算s=1+1/2!+1/3!+…+1/n!,請?zhí)羁铡?/p>

doublerun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

29.對軟件是否能達到用戶所期望的要求的測試稱為【】。

30.以下程序運行后的輸出結果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

31.一個模塊直接訪問另一個模塊的內容,稱為【】藕合。

32.【】是一種信息隱蔽技術,目的在于將對象的使用者和對象的設計者分開。

33.下面程序的運行結果是【】。

#include<stdio.h>

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

34.數據流的類型有______和事務型。

35.以下函數用于求出一個2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

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

if(【】>max)max=【】;

return(max);

}

36.函數pi的功能是根據以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現在請你在下面的函數中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

37.現有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結果是【】。

38.下面程序的功能是:計算110之間的奇數之和與偶數之和,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,I;

a=c=0;

for(I=0;I<=10;I+=2)

{a+=I;

【】;

c+=b;}

printf("偶數之和=%d\n",a);

printf("奇數之和=%d\n",c-11);}

39.下列程序段的輸出結果是【】。

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf("pass");

case'd':case'D':printf("warn");

}

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

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

{inti,p;

p=0;

w[*n]=x;

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

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

w[p]=x;

++*n;}

三、1.選擇題(20題)41.關系表中的每一橫行稱為—個______。

A.元組B.字段C.屬性D.碼

42.在16位IBM-PC機上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結構變量b占用內存的字節(jié)數是()。

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

43.下列程序段的輸出結果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.languageB.lnugC.有語法錯誤D.lang

44.若fp是指向某文件的指針,且已讀到文件末尾,則函數feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

45.下列程序的功能:給r輸入數據后計算半徑為r的圓面積s。程序在編譯時出錯。

main()

/*Beginning*/

{intr;floats;

scanf("%d",£r);

star*r*r;

printf("s=%f\n",s);

}

出錯的原因是()。

A.注釋語句書寫位置錯誤

B.存放圓半徑的變量r不應定義為整型

C.輸出語句中格式描述符非法

D.計算圓面積的賦值語句使用非法變量

46.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數為()。

A.log2nB.n/2C.nD.n+1

47.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是

A.acbedB.decabC.deabcD.cedba

48.當變量c的值不為2、4、6時,值也為"真"的表達式是

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

49.軟件開發(fā)模型包括Ⅰ、瀑布模型Ⅱ、扇形模型Ⅲ、快速原型法模型Ⅳ、螺旋模型

A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ

50.下列敘述中,錯誤的是()

A.數據的存儲結構與數據處理的效率密切相關

B.數據的存儲結構與數據處理的效率無關

C.數據的存儲結構在計算機中所占的空間不一定是連續(xù)的

D.一種數據的邏輯結構可以有多種存儲結構

51.算法的空間復雜度是指()。

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

52.有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

該程序的輸出結果是

A.0.000000B.0.250000C.0.500000D.1.000000

53.若執(zhí)行下面程序時從鍵盤上輸入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x--);}則輸出是______。

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

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

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

B.if(s1>s2)

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

D.if(strcmp(s1,s2))

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

A.*p=&a;scanf("%lf",p);

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

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

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

56.數據庫設計的四個階段是:需求分析、概念設計、邏輯設計和______。A.編碼設計B.測試階段C.運行階段D.物理設計

57.以下程序的輸出結果為()。#include<stdio.h>main(){char*alpha[6]={"ABCDEFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);printf("\n");}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPQRSTD.AEIM

58.當輸入為"Fool&Swalow"時,下面程序的執(zhí)行結果是()。#include<stdio.h>main(){charc;while(c!='?'){c=getchar();putchar(C);}}

A.SwalowB.FoolC.Fool?D.?Swalow

59.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

60.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達式是():

A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

四、選擇題(20題)61.概要設計是軟件系統(tǒng)結構的總體設計,以下選項中不屬于概要設計的是()。A.A.把軟件劃分成模塊B.確定模塊之間的調用關系C.確定各個模塊的功能D.設計每個模塊的偽代碼

62.軟件設計中,有利于提高模塊獨立性的一個準則是______。A.低內聚低耦合B.低內聚高耦合C.高內聚低耦合D.高內聚高耦合

63.

64.

65.下列選項不符合良好程序設計風格的是()。

A.源程序要文檔化B.數據說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設計原則是高耦合、高內聚

66.以下不能正確定義二維數組的選項是()。

A.

B.

C.

D.

67.當變量c的值不為2、4、6時,值也為”真”的表達式是()。

A.(c>=2&&c<=6)&&(c%21=1)

B.(c==2)ll(e==4)II(C==6)

C.(C>=2&&c<=6)&&!(c%2)-

D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)

68.以下關于typedef的敘述錯誤的是()。

A.用typedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代替

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通常可以增加程序的可讀性

69.

70.為了提高軟件的獨立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內容耦合D.數據耦合

71.

72.開發(fā)軟件所需高成本和產品的低質量之間有著尖銳的矛盾,這種現象稱為()。

A.軟件投機B.軟件危機C.軟件工程D.軟件產生

73.

74.有以下程序:

#include<stdio.h>

#include<strin9.h>

main()

{printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}

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

A.3B.8C.4D.9

75.

76.有以下程序程序運行后的輸出結果是()

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

77.軟件詳細設計的主要任務是確定每個模塊的()。

A.算法和使用的數據結構B.外部接口C.功能D.編程

78.以下不正確的定義語句是

A.inty[5.3]={0,1,3,5,7,9};B.doublex[5]={2.0,4.0,6.0,8.0,10.0};

C.charc1[]={’1’,’2’,’3’,’4’,’5’};D.charc2[]={’\x10’,’\xa’,’\x8’};

79.有以下程序:

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

A.y=一1B.Y=0C.y=1D.while構成無限循環(huán)

80.

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:通過某種方式實現兩個變量值的交換,規(guī)定不允許增加語句和表達式。例如變量num1中的值原為2,num2中的值原為1,程序運行后,num1中的值為l,num2中的值為2。請修改程序中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數中給出,請編寫函數,其功能是:求出該學生的平均分,并放入記錄的ave成員中。

例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。

注意:部分源程序給出如下。

請勿改動main函數和其他函數中的任何內容,僅在函數fun部位中填入你編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{

charnum[10];

doubles[N];

doubleave;

}STREC;

voldfun(STREC*a)

{

}

voidmain

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf("The%ssstudentdata:\n",s.num);

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

printf("%4.1fkn",s.s[i]);

printf("\nknave=%7.3fkn",s.aVe);

printf("\n");

}

參考答案

1.B解析:因為a<b成立,所以條件表達式a<b?b:a的值等于b的值等于2,因此變量k的值等于2。又因為k=2>c=3不成立,所以條件表達式k>c?c:k的值等于k的值等于2。把條件表達式k>c?c:k的值賦給變量k,因而變量k的值等于2。因此,選項B)為正確答案。

2.D解析:本題考查的是文件操作函數.題目中fseek(fp,0L,SEEK_SET)的作用將文件指針定位到文件開始。feof(fp)的作用是判斷文件指針是否已到文件結尾,因此選項A不對。ftell(fp)的作用是獲取當前文件指針的位置,因此選項B不對。fgetc(fp)的作用是從文件中讀取一個字節(jié),因此選項C不對。rewind(中)的作用是將文件指針重定位到文件開頭,所以應該選擇D。

3.D

4.C

5.A根據題意,要使a的值為111,b的值為333,必須在讀入時指定a的讀入寬度為3,b的讀入寬度為3,且a和b的控制字符之間必須額外增加%*控制符,用于跳過中間的3位輸入數字,選項A正確。本題答案為A選項。

6.D

7.A

8.D

9.B在本題中,首先定義了兩個宏N和M,大小都為10,然后定義了一個返回指針的函數find,該函數帶有兩個形參,第一個為字符型的指針數組,第二個為整型變量,在函數體中,首先定義了一個指針變量q,并將形參中指針數組的第一個元素賦值給q,然后執(zhí)行for循環(huán),在循環(huán)體中,首先執(zhí)行條件判斷語句,其條件為strcmp(a[i],q)<0(strcmp函數的作用是比較兩字符串的大小,如果相等,則返回0值,如果參數中的第一個字符串大,則返回正值,否則返回負值),如果結果為真,說明指針數組當前元素所指向的字符串比q所指向的字符串小,此時,程序執(zhí)行將當前指針數組元素賦值給p,最后返回p,通過上面的分析我們可以看出,find函數的作用是找出指針數組中各元素所指向字符串的最小字符串。

在主函數中,定義了一個二維數組s,并賦了初值,然后定義一個指針變量p,用來存放函數find的返回值。調用函數find的參數分別為s和5,結合形參看find函數,不難知道調用find函數就是找出二維數組s中各字符串中最小的字符串,那么應該為and。此時,指針變量p指向字符串“and”的首地址,然后執(zhí)行puts(p),完成該字符串的輸出。因此,本題正確的答案是B。

10.DD)【解析】數據庫管理員(DataBaseAdministrator,DBA)是指對數據庫的規(guī)劃、設計、維護、監(jiān)視等的人員,其主要工作如下:數據庫設計。DBA的主要任務之一是數據庫設計,具體地說是進行數據模式的設計;數據庫維護。DBA必須對數據庫中的數據安全性、完整性、并發(fā)控制及系統(tǒng)恢復、數據定期轉儲等進行實施與維護;改善系統(tǒng)性能,提高系統(tǒng)效率。DBA必須隨時監(jiān)視數據庫的運行狀態(tài),不斷調整內部結構,使系統(tǒng)保持最佳狀態(tài)與效率。

11.B

12.D

13.D解析:C語言中的文件是流式文件。流式文件是一種無結構文件,即整個文件是一串字符流或二進制流。文件的存取以字符或字節(jié)為單位。

14.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運算。此外,一開始應知道*k的值為數組中的某一下標值,即*k=0,本函數的功能是找出數組中的最大元素的位置及最大元素的值。

15.C解析:本題中,“printf('%2d,%2d\\n',x,y)”表示以逗號隔開輸出兩個十進制整數,每個整數域寬是2。而在C語言中規(guī)定:當域寬小于實際寬度時域寬不起作用,按實際寬度輸出,因此最后的輸出值為102和10(y的初值012表示八進制整數12,等于十進制的10)。所以,4個選項中選項C符合題意。

16.B在C語言中,數組名類似于一個指向數組首地址的指針常量,一旦定義就不能修改其內容。所以本題中的“s+=2;”語句讓數組名S的內容加2是錯誤的,編譯無法通過。故本題答案為B選項。

17.B異或運算只有在兩個比較的位不同時其結果為1,否則結果為0。題目中兩個值相同,所以結果為0。故本題答案為B選項。

18.A

19.B

20.A解析:在printf函數常用的格式說明中,每個格式說明都必須用“%”開頭,以—個格式字符作為結束,在此之間可以根據需要插入“寬度說明”、左對齊符號“-”、前導零符號“0”等。本題中用到了d和f,d代表輸出符號的十進制整型數,f代表以帶小數點的數學形式輸出浮點數(單精度和雙精度數)。對于float和double類型的實數,可以用“n1.n2”的形式來指定輸出寬度(n1和n2分別代表—個整常數),其中n1指定輸出數據的寬度(包括小數點),n2指定小數點后小數位的位數,由于輸出格式是以緊湊格式輸出,因此選項A是正確的。

21.44解析:將程序中所有的宏替換掉可得:M=2+1,K=2+1*2+1/2=4,所以for循環(huán)共循環(huán)了K-1+1次,即4-1+1共4次。

22.5656解析:本題中a,b,c,d足實參,x,y,cp,dp是形參。C語言規(guī)定,實參變量對形參變量的數據傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內存中,實參單元與形參單元是不同的單元。在調用函數時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調用結束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結果是56。

23.從定義到本源文件結束從定義到本源文件結束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結束。

24.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現在的順序與目標順序正好相反),冒泡排序需要經過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數為N(N-1)/2。

25.1212解析:本題通過第一個for循坪將數組arr[0]-arr[9]分別賦值為0-9,通過第二個for循環(huán)的三次循環(huán)累加,求出結果為12,具體分析如下:

i=1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

26.HelloHello解析:字符串中,數值0或符號'/0'表示字符串的結束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結束標志。因此,只輸出前五個字符,即Hello。

27.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>=\'0\'&&s[i]<=\'9\'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<=\'9\'&&s[i]>=\'0\'或\'9\'>=s[i]&&\'0\'<=s[i]或\'0\'<=s[i]&&\'9\'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:本題中,chars[80],d[80];定義了兩個字符型數組,可以放入80個字符。gets函數是C語言提供的一個專門用于讀字符串的函數,它讀入全部字符(包括空格),直到遇到回車為止。本題中,讀入字符串s后,開始比較s中的每個字符是否為數字字符,因為字符數據在內存中以相應的ASCII碼存放,所以只需比較相應的ASCII碼值是否在48(\'0\'的ASCII代碼)與57(\'9\'的ASCII代碼)之間,或者直接與\'0\',\'9\'進行比較,如果是數字字符則將此字符存入d數組中,不是則繼續(xù)進行下一字符的比較,直至s結束(即\'\\0\'的出現)。將'\\0'字符作為字符串d結束標志,最后調用puts函數輸出d。所以在空格處應填入比較語句s[i]>=\'0\'&&s[i]<=\'9\'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<=\'9\'&&s[i]>=\'0\'或9\'>>=s[i]&&\'0\'<=s[i]或\'0\'<=s[i]&&\'9\'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]。

28.k=k*ik=k*i解析:本題小通過for循環(huán)求s表達式中每一項的和,表達式“fac=fac/k;”求的是每一項的值,所以k的值應為n!,在求n!的時候,可以用上次循環(huán)階乘的值乘i,就可以直接得此次n!,故木題填k=k*i。

29.有效性測試有效性測試

30.6262解析:本題考查的是宏定義。帶參數的宏定義是按#indefine命令行中指定的字符串從左到右進行轉換。本題中替換的式子為:6+8*6+8,代入i,j的值得到62。

31.內容內容

32.封裝封裝解析:面向對象技術中包括以下幾個基本概念,即對象、類、方法、消息、繼承和封裝,其中封裝是一種信息隱蔽技術,目的在于將對象的使用者對象的和設計者分開。

33.1-21,-2解析:考查嵌套的循環(huán)結構。題中外層while循環(huán)的循環(huán)條件是\ue008y--!=-1\ue009,即y>=0;內層do厀hile循環(huán)的循環(huán)條件是y--,即y-->0,y>=1。

34.變換型變換型

35.j<4arr[i][j]arr[i][j]j<4\r\narr[i][j]\r\narr[i][j]解析:2*4矩陣實際上就是一個二維數組,結合本題應為arr[2][4],所以在第一個循環(huán)中應當填寫“4”;第二個橫線處是要判斷當前的數組元素值是否大于max,所以應填寫arr[i][j];第三個橫線處是要將當前大于max的數組元素的值賦給變量max,所以應當填寫“arr[i][j]”。

36.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表達式1+1/(2*2)+1/(3*3)+...+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)

n

即:∑1÷(i×i)

i=1

對應的C語言的表達式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i,i)返回值為其值截尾取整,即恒為0。

37.!knahT!knahT解析:此程序是一道次序顛倒題,即輸入'Thank!',則輸出'!knahT'。

38.b=I+1b=I+1解析:本題考查了for循環(huán)語句的執(zhí)行過程。i+=2是修正表達式,執(zhí)行一次循環(huán)體后i的值就增加2,i的初始值為0,每次加2后的和累加至a,所以a的值就是110之間的偶數之和;b的值是111之間的奇數和,但在輸出b值時,c去掉多加的11,即為110之間的奇數之和。

39.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結果是passwarn。

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

41.A解析:在關系數據庫中,關系模型采用二維表來表示,簡稱“表”。二維表是由表框架及表元組組成。在表框架中,按行可以存放數據,每行數據稱為元組。

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

43.B解析:本程序首先定義了靜態(tài)字符數組a,然后將指針p指向數組a的首地址。

第1次for循環(huán),p=a,p指向數組的第1個元素,*p是取指針p所指地址的內容,輸出1;第2次for循環(huán),p=p+2,則p指向數組的第3個元素,*p是取指針p所指地址的內容,輸出n;第3次for循環(huán),p=p+2,則p指向數組的第5個元素,*p是取指針p所指地址的內容,輸出u;第4次for循環(huán),p=p+2,則p指向數組的第7個元素,*p是取指針p所指地址的內容,輸出g,結束循環(huán)。

44.C解析:EOF是指向文本文件的結束標志,NULL是打開文件錯誤時的返回值。feof(fp)用來判斷文件是否在文件末尾,文本文件和二進制文件均可以使用此函數,如果遇到文件結束就返回1,否則返回0。

45.D解析:在C語言程序中,可以用一個符號名宋代表一個常量,稱為符號常量。這個符號名必須在程序中進行特別的“指定”,并符合標識符的命令規(guī)則。在本題中圓周率冗是一個符號常量,但在程序中并沒有指定其值,所以編譯器找不到其值就會報錯。所以選項D)正確。

46.C本題考查的是順序查找。在進行順序查找過程中,如果線性表中的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查找的元素根本就不在線性表中,則為了查找這個元素需要與線性表中所有的元素進行比較,這是順序查找的最壞情況。所以對長度為n的線性表進行順序查找,在最壞情況下需要比較n次。故本題答案為C。

47.D解析:中序遍歷的遞歸算法如下:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法如下:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法如下:①遍歷左子樹;②遍歷右子樹;③訪問根結點。由后序遍歷結果dabec可知c是根結點,且無右子樹。再由左子樹的后序遍歷結果dabe可知,e是左子樹的根結點,且由左子樹的中序遍歷結果deba可知,d是左子樹的左子樹結點,b和a是左子樹的右子樹結點。再次由后序遍歷結果ab可知,a是左子樹結點。b是根結點。至此,各結點在樹中的位置已完全確定。

48.B解析:滿足表達式(c>=2&&c<=6)的整型變量c的值是2,3,4,5,6。當變量c的值不為2,4,6時,其值只能為3或5,所以表達式c!=3和c!=5中至少有一個為真,即不論c為何值,選項B中的表達式都為'真'。

49.C解析:軟件開發(fā)模型包括瀑布模型、快速原型法模型和螺旋模型。

50.B解析:數據處理是計算機應用的重要領域,在實際數據處理時,被處理的各數據元素總是被存放在計算機的存儲空間中,并且各數據元素在計算機存儲空間中的位置關系與它們的邏輯關系不一定是相同的,一般也不可能相同。數據的邏輯結構在計算機存儲空間中的存放形式稱為數據的存儲結構(也稱數據的物理結構)。一般來說,數據的邏輯結構根據需要可以表示成多種存儲結構,常用的存儲結構有順序、鏈接、索引等存儲結構。而采用不同的存儲結構,其數據處理的效率也是不同的。

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

52.C解析:該題目測驗考生對if...elseif結構的理解,比較簡單。x的值滿足x<10.0的關系,所以程序將執(zhí)行y=1.0/x;語句,y的值應該等于0.5。最后,用printf函數輸出時,%f的輸出格式為小數點后保留6位。

53.B解析:根據C語言的語法,x++是在使用x之后,再將x的值加1,在if語句中,x的值為5,條件不成立,執(zhí)行else后面的語句,因為x的值已經加1,為6,所以打印結果為6。

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

55.D解析:*p間接引用指針指向的變量,因此“(*p)=&a”不對。scanf()的輸入變量必須為地址,因此C是錯誤的。

56.DD)【解析】數據庫設計目前一段采用生命周期法.即將整個數據庫應用系統(tǒng)的開分解成目標獨立的若干階段,它們是:需要分析階段、概念設計階段、邏輯設計階段、物理設計階段、編碼階段、測試階段、運行階段、進一步修改階段。在數據庫設計中采用上面幾個階段中的前四個階段,并且重點以數據結構和模型設計為主線。

57.C解析:字符串數組中的每個元素是一個指向字符串的字符指針,可用一個指向指針的指針來指向一個字符串數組,題中p即為一個這樣的指針,p[i]則指向了數組alpha的第i+1各元素。注意:用帶下標的指針變量引用一維數組中的元素。

58.C

59.AC語言規(guī)定case后面跟的必須是整型常量表達式。進入case后,如果沒有遇到break語句就會一直往下執(zhí)行,后面其他case或default分支的語句也會被執(zhí)行到,直到遇到break,或者執(zhí)行到整個switch語句塊的末尾。題目中給出了三個case語句:case0、case1、case2。當x為1時,從case1語句開始執(zhí)行,因為沒有break語句,將一直執(zhí)行到函數末尾結束,即執(zhí)行case1、case2兩條語句。執(zhí)行完case1時,a=1,b=0;執(zhí)行完case2時,a=2,b=1。

60.A解析:“%”是求余運算符或模運算符,“%”兩側均應為整型數據,選項A)中的x是double型數據。

61.D解析:概要設計是軟件系統(tǒng)結構的總體設計,其目的就是要按照需求規(guī)格說明書,把軟件按照功能劃分為多個模塊,然后確定每個模塊要實現的功能,最后確定模塊之間的調用關系。而設計每個模塊的偽代碼則屬于詳細設計。所以只有最后一個不屬于概要設計范疇。

62.C耦合是對一個軟件結構內不同模塊之間互連程度的度量,耦合度越高,則模塊的獨立性越差。內聚反映一個模塊內各個元素彼此結合的緊密程度。高內聚是指一個軟件模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。低耦合是指不同軟件模塊之間通過穩(wěn)定的接口交互,而不需要關心模塊內部的實現。

63.B

64.B

65.D在程序設計中,對于軟件設計中的模塊設計要保證高內聚和低耦合,源程序要有文檔說明,同時對程序中數據的說明要規(guī)范化。而goto語句破壞程序的結構,要盡量避免使用。所以選項D不正確。

66.D本題的考查點是二維數組的定義和初始化。

選項A)定義的數組中各元素實際上是這樣的:

1,0

2.O

選項B)定義的數組中各元素實際上是這樣的:

1,2

3.4

選項c)定義的數組中各元素實際上是這樣的:

1,0

2.3

選項D)錯在省略了第2維的長度。C中在對數組進行初始化時,如果對全部元素都賦初值(即提供全部初始數據),則定義數組時對第一維的長度可以不指定,但第二維的長度不能省。

67.D邏輯或運算符中只要有一個運算量為真結果就是真,當c>=2&&C<=6條件不成立時c的值肯定不是2、3、4…56所以C!=3,與C!=5均成立。所以D選項的結果一定為真。

68.Atypedef并不是增加了新類型,面是用一個新名字替代已存在的類型,不能為變量說明一個新名,使用typedef可以增強程序的可移植性。所以A選項錯誤:

69.B

70.D在程序設計中,各模塊間的內聚性越強,則耦合性越弱。一般較優(yōu)秀的軟件設計,應盡量做到高內聚、低耦合,以有利于提高模塊的獨立性。耦合性與內聚性是模塊獨立的兩個定性標準,是互相關聯(lián)的。

71.D

72.B隨著計算機的應用范圍日益廣泛,傳統(tǒng)的軟件開發(fā)成本難以控制,進度不可預計;軟件系統(tǒng)的質量和可靠性很差;軟件文檔相當缺乏,軟件系統(tǒng)不可維護;軟件開發(fā)生產率很低,軟件產品供不應求;軟件產品成本十分昂貴且質量低下等特點日益顯現,這些成為計算機應用的一個“瓶頸”,于是出現了所謂的“軟件危機”。

軟件工程是試圖用工程化的方法開發(fā)軟件,從而解決或緩解軟件危機而產生的一門學科。它是采用工程化的方法開發(fā)和維護軟件的工程學科。把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術和方法結合起來,以便經濟地開發(fā)出高質量的軟件并有效地維護它。軟件工程包括三個要素,分別是方法、工具和過程。

73.A

74.B\n本題考查strlen函數和轉移字符,strlen函數的功能是求字符串的長度,在本題中有“\”,C語言中“\”是轉義字符,在計算長度時會將轉義符以及后面的第一個字符作為1個長度進行計算,所以答

\n

75.C

76.Af函數交換局部變量a和b指針變量里的值,main調用并不改變參數的值,所以答案選擇A)。

77.A解析:從軟件開發(fā)的工程化觀點來看,在使用程序設計語言編制程序以前,需要對所采用算法的邏輯關系進行分析,設計出全部必要的過程細節(jié),并給予清晰的表達。詳細設計的任務就是要決定各個模塊的實現算法,并精確表達出這些算法。本題正確答案為選項A。

78.A在一維數組中要注意的是,下標表達式中常量表達式的值必須大于等于零,并且小于自身元素的個數,即數組長度,選項A的下標不是整數,所以錯誤。

79.Ay一一表示Y使用后再自減l。所以最后一次Y的值為0,條件不成立但仍要執(zhí)行自減操作,Y的值為一1,跳出循環(huán)。打印Y的值一1。

80.B

81.(1)錯誤:t=x;x=y;

正確:t=*x;*x=y;

(2)錯誤:return(y);

正確:return(t);

【解析】由函數proc()可知,變量x為整型指針,而變量t為整型變量.不能直接賦值。因此,“t=x;x=y;”應改為“t=*x;*x=y;”。題目要求實現兩個數的交換,因此函數proc()應返回變量X的值,變量x的值存放在變量t中。因此,“return(y);”應改為“return(t);”。

82.voidfun(STREC*a)

\n{

\ninti;

\na->ave=0.0;

\nfor(i=0;i<N;i++)

\na->ave=a->ave+a->s[i];

\n/*求各門課程成績的總和*/

\na->ave=a->ave/N;/*求平均分*/

\n}

\n【解析】本題考查的是指向結構體類型的指針變量做參數和結構體類型成員的運算。fun函數中求出平均成績,要帶回主函數則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。

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

一、單選題(20題)1.有下列程序段:

intk=0,a=1,b=2,c=3;

k=a<b?b:a;k=k>C?C:k;

執(zhí)行該程序段后,k的值是()。

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

2.以下與函數fseek(fp,0L,SEEK_SET)有相同作用的是

A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)

3.

4.以下選項中的表達式調用庫函數依次求-4.5的絕對值、-4.0的平方根值、30°角的正弦值和2的3次方值。正確的調用是()

A.abs(-4.5)B.sqrt(-4.0)C.sin(3.1416/6.0)D.paw(2.0,3.0)

5.有說明語句“inta,b;”,如果輸入111222333,使得a的值為111,b的值為333,則以下正確的語句是()。A.scanf("%3d%*3d%3d",&a,&b);

B.scanf("%*3d%3d%3d",&a,&b);

C.scanf("%3d%3d%*3d",&a,&b);

D.scanf("%3d%*2d%3d",&a,&b);

6.以下不正確的敘述是()。

A.在C程序中,逗號運算符的優(yōu)先級最低

B.在C程序中,APH和aph是兩個不同的變量

C.若a和b類型相同,在執(zhí)行了賦值表達式a=b后b中的值將放人a中,而b中的值不變

D.當從鍵盤輸入數據時,對整型變量只能輸入整型數值,對實型變量只能輸入實型數值

7.

8.在定義inta[3][2]以后,對a的引用正確的是()

A.a[0,0]B.a[3][0]C.a[2][2]D.a[0][0]

9.有如下程序段

#include"stdio.h"

#include"string.h"

#defineN10

#defineM10

char*find(char(*a)[M],intn)

{char*q;inti;

q=a[0];

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

if(strcmp(a[i],q)<0)q=a[i];

returnq;}

main()

{chars[N][M]={"tomeetme","you","and","he","china"};

char*p;

intn=5;

p=find(s,n);

puts(p);}

則執(zhí)行后輸出的結果為A.A.heB.andC.youD.tomeetme

10.下列選項中,不屬于數據管理員(DBA.職責的是()。

A.數據庫維護B.數據庫設計C.改善系統(tǒng)性能,提高系統(tǒng)效率D.數據類型轉換

11.

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

A.在C程序中,每行中只能寫一條語句

B.若a是實型變量,C程序中允許賦值a=10,因此實型變量中允許存放整型數

C.在C程序中,無論是整數還是實數,都能被準確無誤地表示

D.在C程序中,%是只能用于整數運算的運算符

13.C語言中,組成數據文件的成分是()。A.A.記錄

B.數據行

C.數據塊

D.字符(字節(jié))序列

14.下列程序是用來判斷數組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

15.

有以下程序:

main

{intx=102,y=012;

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

}

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

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

16.有以下程序:#include<stdio.h>main(){chars[]=“abcde”;s+=2;printf(“%d\n”,s[0]);}程序的運行結果是()。

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

17.若變量已正確定義,則語句“s=32;s^=32;printf(“%d”,s);”的輸出結果是()。

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

18.設無向圖G中有n個頂點e條邊,則其對應的鄰接表中的表頭結點和邊表接點的個數分別為()。

A.n,eB.e,nC.2n,eD.n,2e

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

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

20.程序段:intx=12;doub1ey=3.141593;printf("%d%8.6f"x,y);的輸出結果是______。A.123.141593B.123.141593C.12,3.141593D.123,1415930

二、2.填空題(20題)21.以下程序中,for循環(huán)體執(zhí)行的次數是【】。

#defineN2

#defineMN+1

#defineKM+1*M/2

main()

{

inti;

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

{…}

}

22.下列程序的輸出結果是【】。

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=4,b=3,c=5,d=6;

t(a,b,c,d);

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

}

23.#define命令出現在程序中函數的外面,宏名的有效范圍為______。

24.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為______。

25.下面程序的輸出是【】。

main()

{intarr[10],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

printf("%d\n"k);}

26.下列程序段的輸出結果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

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

}

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

#include<stdio.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);

}

28.以下函數的功能是計算s=1+1/2!+1/3!+…+1/n!,請?zhí)羁铡?/p>

doublerun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k;

s=s+fac;

}

}

29.對軟件是否能達到用戶所期望的要求的測試稱為【】。

30.以下程序運行后的輸出結果是()。#definePower2(x)x*xmain(){inti=6,j=8;printf("%d\n",Power2(i+j));}

31.一個模塊直接訪問另一個模塊的內容,稱為【】藕合。

32.【】是一種信息隱蔽技術,目的在于將對象的使用者和對象的設計者分開。

33.下面程序的運行結果是【】。

#include<stdio.h>

main()

{inty,a;

y=2,a=1;

while(y--!=-1)

{do{a*=y;a++;}while(y--);}

printf("%d,%d",a,y);}

34.數據流的類型有______和事務型。

35.以下函數用于求出一個2×4矩陣中的最大元素值。

max_value(arr)

intarr[][4];

{

inti,j,max;

max=arr[O][0];

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

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

if(【】>max)max=【】;

return(max);

}

36.函數pi的功能是根據以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現在請你在下面的函數中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

37.現有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結果是【】。

38.下面程序的功能是:計算110之間的奇數之和與偶數之和,請?zhí)羁铡?/p>

#include<stdio.h>

main()

{inta,b,c,I;

a=c=0;

for(I=0;I<=10;I+=2)

{a+=I;

【】;

c+=b;}

printf("偶數之和=%d\n",a);

printf("奇數之和=%d\n",c-11);}

39.下列程序段的輸出結果是【】。

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf("pass");

case'd':case'D':printf("warn");

}

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

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

{inti,p;

p=0;

w[*n]=x;

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

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

w[p]=x;

++*n;}

三、1.選擇題(20題)41.關系表中的每一橫行稱為—個______。

A.元組B.字段C.屬性D.碼

42.在16位IBM-PC機上使用C語言,若有如下定義:stmctdata{inti;charch;doublef;}b;則結構變量b占用內存的字節(jié)數是()。

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

43.下列程序段的輸出結果為()。#include<stdio.h>main(){staticchara[]="language";char*p;p=a;for(p=a;p<a+8;p+=2)putchar(*p);}

A.languageB.lnugC.有語法錯誤D.lang

44.若fp是指向某文件的指針,且已讀到文件末尾,則函數feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

45.下列程序的功能:給r輸入數據后計算半徑為r的圓面積s。程序在編譯時出錯。

main()

/*Beginning*/

{intr;floats;

scanf("%d",£r);

star*r*r;

printf("s=%f\n",s);

}

出錯的原因是()。

A.注釋語句書寫位置錯誤

B.存放圓半徑的變量r不應定義為整型

C.輸出語句中格式描述符非法

D.計算圓面積的賦值語句使用非法變量

46.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數為()。

A.log2nB.n/2C.nD.n+1

47.已知二叉樹后序遍歷序列是dabec,中序遍歷序列是debac,它的前序遍歷序列是

A.acbedB.decabC.deabcD.cedba

48.當變量c的值不為2、4、6時,值也為"真"的表達式是

A.(c==2)||(c==4)||(c==6)

B.(c>=2&&c<=6)||(c!=3)||(c!=5)

C.(c>=2&&c<=6)&&!(c%2)

D.(c>=2&&c<=6)&&(c%2!=1)

49.軟件開發(fā)模型包括Ⅰ、瀑布模型Ⅱ、扇形模型Ⅲ、快速原型法模型Ⅳ、螺旋模型

A.Ⅰ、Ⅱ、ⅢB.Ⅰ、Ⅱ、ⅣC.Ⅰ、Ⅲ、ⅣD.Ⅱ、Ⅲ、Ⅳ

50.下列敘述中,錯誤的是()

A.數據的存儲結構與數據處理的效率密切相關

B.數據的存儲結構與數據處理的效率無關

C.數據的存儲結構在計算機中所占的空間不一定是連續(xù)的

D.一種數據的邏輯結構可以有多種存儲結構

51.算法的空間復雜度是指()。

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

52.有如下程序

main()

{floatx=2.0,y;

if(x<0.0)y=0.0;

elseif(x<10.0)y=1.0/x;

elsey=1.0;

printf("%f\n",y);}

該程序的輸出結果是

A.0.000000B.0.250000C.0.500000D.1.000000

53.若執(zhí)行下面程序時從鍵盤上輸入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x--);}則輸出是______。

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

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

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

B.if(s1>s2)

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

D.if(strcmp(s1,s2))

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

A.*p=&a;scanf("%lf",p);

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

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

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

56.數據庫設計的四個階段是:需求分析、概念設計、邏輯設計和______。A.編碼設計B.測試階段C.運行階段D.物理設計

57.以下程序的輸出結果為()。#include<stdio.h>main(){char*alpha[6]={"ABCDEFGH","IJKL","MNOP","QRST","UVWX"};char**p;inti;p=alpha;for(i=0;i<4;i++)printf("%s",p[i]);printf("\n");}

A.ABCDEFGHIJKLB.ABCDC.ABCDEFGHIJKLMNOPQRSTD.AEIM

58.當輸入為"Fool&Swalow"時,下面程序的執(zhí)行結果是()。#include<stdio.h>main(){charc;while(c!='?'){c=getchar();putchar(C);}}

A.SwalowB.FoolC.Fool?D.?Swalow

59.有如下程序:main{intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++.b++;}printf("a=%d,b=%d\n",a,b);}該程序的輸出結果是()。

A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2

60.已知各變量的類型說明如下:intk,a,b;unsignedlongw=5;doublex=1.42;則以下不符合C語言語法的表達式是():

A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

四、選擇題(20題)61.概要設計是軟件系統(tǒng)結構的總體設計,以下選項中不屬于概要設計的是()。A.A.把軟件劃分成模塊B.確定模塊之間的調用關系C.確定各個模塊的功能D.設計每個模塊的偽代碼

62.軟件設計中,有利于提高模塊獨立性的一個準則是______。A.低內聚低耦合B.低內聚高耦合C.高內聚低耦合D.高內聚高耦合

63.

64.

65.下列選項不符合良好程序設計風格的是()。

A.源程序要文檔化B.數據說明的次序要規(guī)范化C.避免濫用goto語句D.模塊設計原則是高耦合、高內聚

66.以下不能正確定義二維數組的選項是()。

A.

B.

C.

D.

67.當變量c的值不為2、4、6時,值也為”真”的表達式是()。

A.(c>=2&&c<=6)&&(c%21=1)

B.(c==2)ll(e==4)II(C==6)

C.(C>=2&&c<=6)&&!(c%2)-

D.(c>=2&&c<=6)Il(c!=3)I|(C!=5)

68.以下關于typedef的敘述錯誤的是()。

A.用typedef可以增加新類型

B.typedef只是將已存在的類型用一個新的名字來代替

C.用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D.用typedef為類型說明一個新名,通常可以增加程序的可讀性

69.

70.為了提高軟件的獨立性,模塊之間最好是()。

A.控制耦合B.公共耦合C.內容耦合D.數據耦合

71.

溫馨提示

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

評論

0/150

提交評論