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

下載本文檔

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

文檔簡介

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

一、單選題(20題)1.下列排序方法中,()方法的比較次數(shù)與記錄的初始排列狀態(tài)無關(guān)。

A.直接插入排序B.冒泡排序C.快速排序D.直接選擇排序

2.若有以下定義,則對a數(shù)組元素地址的正確引用是()。

inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]

3.已知一個(gè)無向圖(邊為正數(shù))中頂點(diǎn)A,B的一條最短路P,如果把各個(gè)邊的權(quán)重(即相鄰兩個(gè)頂點(diǎn)的距離)變?yōu)樵瓉淼?倍,那么在新圖中,P仍然是A,B之間的最短路,以上說法是()A.錯(cuò)誤B.正確

4.下面函數(shù)的功能是()intfunl(char*X){char*y=X;whar(*y++);return(y-x-1);}

A.求字符串的長度B.比較兩個(gè)字符串的大小C.將字符串x復(fù)制到字符串y中D.將字符串x連接到字符串y后面

5.用二分法查找長度為10的、排好序的線性表,查找不成功時(shí),最多需要比較多少次?()

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

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

A.軟件工程只是解決軟件項(xiàng)目的管理問題

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

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

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

7.

8.某二叉樹的先序序列和后序序列正好相同,則該二叉樹可能是______的二叉樹。

A.高度大于1的左單支B.高度大于1的右單支C.最多只有一個(gè)結(jié)點(diǎn)D.既有左孩子又有右孩子

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

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

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

10.以下敘述中錯(cuò)誤的是A.算法正確的程序最終一定會(huì)結(jié)束

B.算法正確的程序可以有零個(gè)輸出

C.算法正確的程序可以有零個(gè)輸入

D.算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果

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

A.x&&y

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

12.對n個(gè)元素的數(shù)組進(jìn)行(),其平均時(shí)間復(fù)雜度和最壞情況下都為O(nlogn)。

A.希爾排序B.快速排序C.堆排序D.選擇排序

13.

14.軟件生命周期中的活動(dòng)不包括()

A.軟件維護(hù)B.市場調(diào)研C.軟件測試D.需求分析

15.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}輸出的結(jié)果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

16.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。

A.實(shí)體完整性和參照完整性

B.參照完整性和用戶定義的完整性

C.實(shí)體完整性和用戶定義的完整性

D.實(shí)體完整性、參照完整性和用戶定義的完整性

17.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序運(yùn)行后的輸出結(jié)果是()。

A.DB.BC.CD.A

18.一個(gè)隊(duì)列的入隊(duì)序列是1,2,3,4,則隊(duì)列的輸出序列是()。

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

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

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

20.如有inta=11;則表達(dá)式(a++*1/3)的值是()。

A.0B.3C.4D.12

二、2.填空題(20題)21.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

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

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

}

22.若fp已正確定義為一個(gè)文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁?,以便為“讀”而打開此文件:

fp=fopen(【】);。

23.閱讀下面語句,則執(zhí)行后的輸出結(jié)果為【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

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

printf("\n");}

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

#include<stdio.h>

main()

{chara,b;

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

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

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

}

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

main()

{inta=2,b=3,c=4;

a*=16+(b++)-(++c);

printf("%d",a);

}

26.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的【】集合。

27.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

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

}

28.下面程序的功能是:計(jì)算1~10之間的奇數(shù)之和與偶數(shù)之和,請?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("偶數(shù)之和=%d\n",a);

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

29.在printf格式字符中,以帶符號的十進(jìn)制形式輸出整數(shù)的格式字符是【】;以八進(jìn)制無符號形式輸出整數(shù)的格式字符是【】;以十六進(jìn)制無符號形式輸出整數(shù)的格式字符是【】;以十進(jìn)制無符號形式輸出整數(shù)的格式字符是【】。

30.若a是int型變量,且a的初值為4,則計(jì)算a+=a-=a*a表達(dá)式后a的值為______。

31.以下程序的功能是建立—個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表結(jié)點(diǎn)中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時(shí),表示輸入結(jié)束(鏈表頭結(jié)點(diǎn)的data域不放數(shù)據(jù),表空的條件是ph->next==NULL),請?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(struct

32.函數(shù)sub的功能是根據(jù)下面近似分式求π的值。

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

現(xiàn)在請?jiān)谙旅娴暮瘮?shù)中填空,完成求π值的功能。

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

33.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

34.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

}

35.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)中,常用的描述工具是【】。

36.下列程序的輸出結(jié)果是______。

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

37.數(shù)據(jù)流的類型有______和事務(wù)型。

38.軟件的需求分析階段的工作,可以概括為四個(gè)方面:【】、需求分析、編寫需求規(guī)格說明書和需求評審。

39.有一個(gè)已排好序的數(shù)組,今輸入一個(gè)數(shù),要求按原來的順序規(guī)律將它插入到數(shù)組中。算法是:假設(shè)排序順序是從小到大,對輸入的數(shù),檢查它在數(shù)組中哪個(gè)數(shù)之后,然后將比這個(gè)數(shù)大的數(shù)順序后移一個(gè)位置,在空出的位置上將該數(shù)插入。請?jiān)诔绦蛑械目瞻滋幪钌弦粭l語句或一個(gè)表達(dá)式。

#defineN100

main()

{floata[N+1],x;

inti,p;

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

scanf("%f"&a[i]);

scanf("%f",&x);

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

if(x<a[i])

{【】;

break;}

for(i=N-1;【】;i-)

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

a[p]=x;

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

{printf("%8.2f",a[i]);

if(i%5=0)

printf("\n");

}

}

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

三、1.選擇題(20題)41.C語言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。

A.包含文件中的第一個(gè)函數(shù)B.程序中第一個(gè)函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句

42.設(shè)有定義語句int(*f)(int);,則以下敘述正確的是()。

A.f是基類型為int的指針變量

B.f是指向函數(shù)的指針變量,該函數(shù)具有一個(gè)int類型的形參

C.f是指向int類型一維數(shù)組的指針變量

D.f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址

43.有如下程序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);}該程序的輸出結(jié)果是

A.0B.0.25C.0.5D.1

44.C語言規(guī)定,調(diào)用一個(gè)函數(shù)時(shí),實(shí)參變量和形參變量之間的數(shù)據(jù)傳遞是()。

A.地址傳遞B.值傳遞C.由實(shí)參傳給形參,并由形參傳回給實(shí)參D.由用戶指定傳遞方式

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

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

46.若輸入“abcdef”、“abdef”,以下程序的輸出結(jié)果為()。#include<stdio.h>#lnclude<string.h>main(){intn;chars1[20],s2[20],p1,*p2;scanf("%s",s1);scanf("%s",s2);P1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n",n);}

A.-1B.0C.abcdefD.abdef

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

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

48.以下敘述中不正確的是

A.預(yù)處理命令行都必須以#號開始

B.在程序中凡是以#號開始的語句行都是預(yù)處理命令行

C.宏替換不占用運(yùn)行時(shí)間,只占編譯時(shí)間

D.在以下定義是正確的:#definePI3.1415926;

49.以下程序的輸出結(jié)果是f(intb[],intm,intn){inti,s=0;for(i=m;i<n;i=i+2)s=s+b[i];returns;}main(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf(“%d\n”,x);}

A.10B.18C.8D.15

50.設(shè)有如下的函數(shù)______。f(x)floatx;{printf("\n%d",x*x);}則函數(shù)類型

A.與參數(shù)x類型相同B.是voidC.是intD.無法確定

51.現(xiàn)有如下程序段#include"stdio.h"#include"string.h"main(){chara[]="acfijk";/*這里是有序的字符序列*/charb[]="befijklqswz";/*這里是有序的字符序列*/charc[80],*p;inti=0,j=0,k=0;while(a[i]!='\0'&&b[j]!='\0'){if(a[i]<b[j])c[k++]=a[i++];elseif(a[i]>b[j])c[k++]=b[j++];else{c[k++]=b[j++];i++;}}while(a[i]=='\0'&&b[j]!='\0')c[k++]=b[j++];while(a[i]!=,'\0'&&b[j]=='\0')c[k++]=a[i++];c[k]='\0';puts(c);}則輸出結(jié)果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswzacfijk

D.abcefijklqswz

52.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指()。

A.存儲(chǔ)在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲(chǔ)空間量C.數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示

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

#include<stdio.h>

main()

{inta=28,b;

chars[10],*p;

p=s;

do{b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;a=a/5;}while(a>0);

*p=′\0′;puts(s);}

A.10B.C2C.C51D.\0

54.有以下程序main(){charst[20]="hello\0\t'\\";printf("%d%d\n",strlen(st),sizeof(st));}程序運(yùn)行后的輸出結(jié)果是()

A.99B.520C.1320D.2020

55.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}該程序的輸出結(jié)果是

A.69825B.63825C.6385D.693825

56.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

57.以下標(biāo)識符不是關(guān)鍵字的是()。

A.breakB.charC.switchD.return

58.假定w,x,y,z和m均為int型變量,有如下程序段:w=1;x=2,y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m(m<2)?m:2;則該程序段執(zhí)行后,m的值為()

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

59.有以下定義語句

doublea,b;intw;longc;

若各變量已正確賦值,則下列選項(xiàng)中正確的表達(dá)式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;

60.設(shè)有如下程序:#include"string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果從鍵盤上輸入name<回車>name1<回車>,則程序運(yùn)行后的輸出結(jié)果是()

A.$8B.@10C.$9D.@9

四、選擇題(20題)61.設(shè)已有定義:floatx;則以下對指針變量p進(jìn)行定義且賦初值的語句中正確的是()。A.float*p=&x;B.int*p-(float)x;C.floatp=&x;D.float*p=1024;

62.

63.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。

A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績

64.若有定義語句:A.1B.1.9C.2D.2.4

65.面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。

A.模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系

B.強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念

C.使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題

D.不強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而強(qiáng)調(diào)概念

66.若有定義語句:intX=10;,則表達(dá)式x-=x+x的值為()。

A.0B.-20C.-10D.10

67.

68.有以下程序:執(zhí)行時(shí)輸入:0<;回車>;后,則輸出結(jié)果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.

69.軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A.低內(nèi)聚低耦合

B.高內(nèi)聚低耦合

C.低內(nèi)聚高耦合

D.高內(nèi)聚高耦合

70.

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

main

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

while(x++!=(y-=l))

{a+=1;

if(y<x)break;

}

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

}

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

71.

72.

73.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

74.有以下程序:

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

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

75.

76.

下述程序執(zhí)行的輸出結(jié)果是()。

#include<stdio.h>

main

{chara[2][4];

strcpy(a,"are");strcpy(a[1],"you");

a[0][3]=&;

printf("%s\n",a):

}

A.are&youB.youC.areD.&

77.下列定義變量的語句中錯(cuò)誤的是()。

78.

79.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w+");

for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);

fclose(fp);

for(i=0;i%6;i++)printf("%d,",a[i]);

}

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

A.4,5,6,1,2,3,

B.1,2,3,3,2,1,

C.1,2,3,4,5,6,

D.6,5,4,3,2,1,

80.有以下程序:

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

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

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

六、程序設(shè)計(jì)題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p到n-1(p≤n-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,P的值為4。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序給出如下。請勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.D本題考查如何引用數(shù)組元素的地址。選項(xiàng)A)中,p5引用的是af51的地址,而數(shù)組a只有5個(gè)元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯(cuò)誤;選項(xiàng)B)中,*a1指的是將數(shù)組a的第一個(gè)元素加1;選項(xiàng)C)中,這種引用方式錯(cuò)誤;選項(xiàng)D)中,&a[0]引用的是數(shù)組的首地址。

3.B

4.A

5.B

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

7.A

8.C

9.D

10.B(45)B)解析:算法應(yīng)該具有下列五個(gè)特性:

①有窮性:一個(gè)算法必須在執(zhí)行有窮步之后結(jié)束。

②確定性:算法中的每一步,必須有確切的含義,在他人理解時(shí)不會(huì)產(chǎn)生二義性。

③動(dòng)態(tài)性:算法中描述的每一步操作都可以通過已有的基本操作執(zhí)行有限次實(shí)現(xiàn)。

④輸入:一個(gè)算法應(yīng)該有零個(gè)或多個(gè)輸入。

⑤輸出:一個(gè)算法應(yīng)該有一個(gè)或多個(gè)輸出。這里所說的輸出是指與輸入有某種特定關(guān)系的量。

11.D解析:本題考查邏輯運(yùn)算符的使用。當(dāng)“&&”的兩個(gè)運(yùn)算對象都足邏輯1時(shí),表達(dá)式才返回值是1;當(dāng)“||”的兩個(gè)運(yùn)算對象至少有一個(gè)是邏輯1時(shí),表達(dá)式返回值是1。選項(xiàng)A)中,x和y都是邏輯1,所以返回值是1;選項(xiàng)B)中,x=4<=y(tǒng)=6為邏輯1,所以返回值是1;選項(xiàng)C)中,y+z的值等于14,非0,y-z的值為-2,非0,所以邏輯表達(dá)式4||14&&-2的值不為0;選項(xiàng)D)中,x<y為1,!z為0,1&&0為1,0||為1,因此,!1為0。

12.C

13.B

14.B【答案】:B

【知識點(diǎn)】:軟件生命周期

【解析】:一個(gè)軟件產(chǎn)品或軟件系統(tǒng)要經(jīng)歷孕育、誕生、成長、成熟、衰亡等階段,一般稱為軟件生命周期。它把整個(gè)軟件生存周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變的容易控制和管理。通常,軟件生存周期包括可行性分析與開發(fā)項(xiàng)計(jì)劃、需求分析、設(shè)計(jì)(概要設(shè)計(jì)和詳細(xì)設(shè)計(jì))、編碼、測試、維護(hù)等活動(dòng),可以將這些活動(dòng)以適當(dāng)?shù)姆绞椒峙涞讲煌碾A段去完成。故選B。

15.B本題考查實(shí)參與形參調(diào)用,從實(shí)參傳遞到形參時(shí),只是數(shù)值的傳遞,調(diào)用函數(shù)中值的改變不會(huì)影響主函數(shù)中的值,因此原樣輸出。

16.D解析:關(guān)系模型中包括關(guān)系的數(shù)據(jù)結(jié)構(gòu)、關(guān)系的操縱和關(guān)系中的數(shù)據(jù)約束。關(guān)系完整性約束即數(shù)據(jù)完整性,包括實(shí)體完整性、參照完整性和用戶自定義完整性。

17.D題干中,字符變量a、b、c、d都是大寫字母字符。C語言中,大寫字母的ASCII值是按照字母順序連續(xù)遞增的,所以a小于b,b小于c,c小于d。則表達(dá)式“x=(a<b)?a:b”等價(jià)于“x=a”;“x=(x>c)?c:x”等價(jià)于“x=(a>c)?c:a”,等價(jià)于“x=a”;“x=(d>x)?x:d”等價(jià)于“x=(d>a)?a:d”,等價(jià)于“x=a”;所以程序輸出x的值為A。故本題答案為D選項(xiàng)。

18.C

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

20.B

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

22.d1.dat"rb"d1.dat,'rb'解析:打開文件的函數(shù)為fopen('文件名','mode'),其中'mode'表示文件的打開方式。如果打開的是二進(jìn)制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只讀方式打開。'w'表示以寫方式打開,如果已存在該文件名的文件,文件中的內(nèi)容將被清空。若文件名不存在,則將創(chuàng)建該文件。'a'為追加方式打開。若文件存在時(shí),將打開這個(gè)文件并且在文件的末尾進(jìn)行追加。當(dāng)文件不存在,將創(chuàng)建新文件。'r+'打開一個(gè)已存在文件用于更新(可讀可寫)。\'w+'創(chuàng)建一個(gè)新文件用于更新,如果文件存在,文件被重寫(可讀可寫)。'a+'打開用于追加,當(dāng)文件不存在時(shí),創(chuàng)建新文件,并在文件末尾進(jìn)行追加(可讀可寫)。根據(jù)題意,應(yīng)該填'd1.dat','rb'。

23.918273645918273645解析:for是C語言的關(guān)鍵字,其后的一對圓括號中通常含有3個(gè)表達(dá)式,各個(gè)表達(dá)式之間用分號隔開,這3個(gè)表達(dá)式可以是任意形式的表達(dá)式,通常主要用于for循環(huán)控制。

24.1B1B解析:本題輸入B33,字符'B'被輸入給字符變量a,33賦給b,執(zhí)行a=a-'A'+'0';得到a的值'1';執(zhí)行b=b*2;得到b值66,最后以字符型輸出為1B。

25.2828解析:a*=16+(b++)-(++c)等價(jià)于a=a*(16+(b++)-(++c)),b++的值為3;++c的值為5,請注意前綴++和后綴++的用法。

26.軟件工具軟件工具

27.a=14a=14解析:逗號表達(dá)式的值是以逗號分隔的最后一個(gè)表達(dá)式的值。所以題目中的語句a=(3*5,a+4);就等價(jià)于a=a+4;。故本題輸出結(jié)果是a=14。

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

29.d0xu

30.-24-24解析:本題考查賦值運(yùn)算符a+=b等價(jià)于a=a+b;a-=a*a等價(jià)于a=a-a*a=4-4*4=-12;a+=a,即a=a+a=-24。

31.解析:本題考查的是鏈表這一數(shù)據(jù)結(jié)構(gòu)對結(jié)構(gòu)體變量中數(shù)據(jù)的引用。鏈表的特點(diǎn)是結(jié)構(gòu)體變量中有兩個(gè)域,一個(gè)是數(shù)據(jù),另一個(gè)是指向該結(jié)構(gòu)體變量類型的指針,用以指明鏈表的下一個(gè)結(jié)點(diǎn)。

32.1.0/(n*n)1.0/(n*n)解析:sam中累加的值是1+1/(2*2)+1/(3*3)+…+1//(n*n),如果寫為1/(n*n),則會(huì)因?yàn)?和n都為整型,結(jié)果則為實(shí)型,將1變?yōu)?.0,結(jié)果則為實(shí)型。

33.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系,分為線性結(jié)構(gòu)和非線性結(jié)構(gòu)。常見的線性結(jié)構(gòu)有線性表、棧和隊(duì)列等,常見的非線性結(jié)構(gòu)有樹、二叉樹等。

34.k=p;k=p;解析:要找數(shù)組中最大元素的下標(biāo),首先預(yù)設(shè)數(shù)組首元素下標(biāo)為臨時(shí)最大元素的下標(biāo),從首元素開始順序向后繼元素逐一比較,當(dāng)發(fā)現(xiàn)當(dāng)前元素比臨時(shí)最大元素更大時(shí),就用當(dāng)前元素的下標(biāo)更新臨時(shí)最大元素下標(biāo),直至比較了數(shù)組的全部元素后,臨時(shí)最大元素下標(biāo)就是數(shù)組中最大元素的下標(biāo)。程序中,變量k用于存儲(chǔ)臨時(shí)最大元素下標(biāo),變量p控制順序比較的循環(huán)變量。當(dāng)發(fā)現(xiàn)當(dāng)前元素s[p]比臨時(shí)最大元素s[k]更大時(shí),用p更新k。所以在下劃線處應(yīng)填入代碼“k=p;”。

35.E-R圖E-R圖解析:E-R圖是設(shè)計(jì)概念模型的有力工具。

36.3123,1,2解析:分析程序,第一個(gè)if語句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時(shí)a=2,b=1。第二個(gè)if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時(shí)a=3,c=2。

37.變換型變換型

38.需求獲取需求獲取解析:軟件的需求分析階段的工作,可以概括為四個(gè)方面:需求獲取、需求分析、編寫需求規(guī)格說明書和需求評審。需求獲取的目的是確定對目標(biāo)系統(tǒng)的各方面需求;需求分析是對獲取的需求進(jìn)行分析和綜合,最終給出系統(tǒng)的解決方案和目標(biāo)系統(tǒng)的邏輯模型;編寫需求規(guī)格說明書作為需求分析的階段成果,可以為用戶、分析人員和設(shè)計(jì)人員之間的交流提供方便,可以直接支持目標(biāo)軟件系統(tǒng)的確認(rèn),又可以作為控制軟件開發(fā)進(jìn)度的依據(jù);需求評審是對需求分析階段的工作進(jìn)行的復(fù)審,驗(yàn)證需求文檔的一致性、可行性、完整性和有效性。

39.p=i;i>=pi<=Np=i;\r\ni>=p\r\ni<=N解析:本題主要考查了插入排序。由于程序中的數(shù)組在開始己經(jīng)按從小到大順序排序排好。在插入時(shí),首先要查到第一個(gè)大于恃插入數(shù)的數(shù)組下標(biāo),即當(dāng)待插入元素小于數(shù)組中當(dāng)前元素時(shí),記下數(shù)組的當(dāng)前下標(biāo)p,并結(jié)束循環(huán),故第一空目的是為了記下數(shù)組下標(biāo),應(yīng)填p=i;插入排序的第二部是將大于待插入元素的所有元素都向后移動(dòng)—位,故在循環(huán)時(shí),要從最后一個(gè)元素到第p個(gè)元素都要后移一位,因此第二空應(yīng)填>i=p。最后一個(gè)循環(huán)是將N+1個(gè)元素都輸出,故最后一空應(yīng)為i<=N。(注:本題有多種答案,以上僅提供一種)

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

41.C解析:每個(gè)C程序有且只有一個(gè)主函數(shù)main(),且程序必須從main函數(shù)開始執(zhí)行,并在main()函數(shù)中結(jié)束。

42.B本題考查的是指向函數(shù)的指針。語句“int(*f)(int);”是對一個(gè)函數(shù)的聲明,其中f是指向該函數(shù)的指針,該函數(shù)有一個(gè)整型的參數(shù),函數(shù)返回值類型為整型。故答案選B)。

43.C解析:該題目測驗(yàn)考生對if…elseif結(jié)構(gòu)的理解,比較簡單。x的值滿足x<10.0的關(guān)系,所以程序?qū)?zhí)行y=1.0/x;語句,y的值應(yīng)該等于0.5。最后,用printf函數(shù)輸出時(shí),%f的輸出格式為小數(shù)點(diǎn)后保留6位。

44.B解析:本題考查函數(shù)調(diào)用時(shí)的參數(shù)傳遞。在函數(shù)調(diào)用時(shí),實(shí)參和其所對應(yīng)的形參分別占用不同的存儲(chǔ)單元,彼此之間只是實(shí)參將值傳遞給形參.

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

46.A

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

48.D解析:帶參數(shù)的宏定義如下:#define宏名(參數(shù))字符串。本題中,宏定義的作用是指定用標(biāo)識符PI來代替“3.1415926”這個(gè)字符串,但宏定義不是C語句,不必在行末加分號。

49.A解析:在main()函數(shù)中定義了一個(gè)變量x,以及一個(gè)有9個(gè)元素的數(shù)組a,并且每個(gè)元素分別賦初值為1、2、3、4、5、6、7、8和9。執(zhí)行函數(shù)調(diào)用f(a,3,7),把a(bǔ)的首地址賦給形參b,把3和7分別賦給形參m和n。在f()函數(shù)中,for循環(huán)執(zhí)行了2次:第一次,i的值為3,相當(dāng)于執(zhí)行了語句“s=s+b[3],b[3]的值就是a[3]的值4,故s的值變?yōu)?;第二次,i值為5,相當(dāng)于執(zhí)行了語句“s=s+b[5];”,b[5]的值6,故s的值變?yōu)?0。把s作為函數(shù)值返回并賦值給x。

50.C解析:在函數(shù)名前沒有說明函數(shù)返回值類型時(shí),隱含為int類型。

51.D解析:這個(gè)題目的功能是實(shí)現(xiàn)兩個(gè)有序字符串的合并,合并成一個(gè)新的有序的字符串。

52.D數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間的邏輯關(guān)系的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)則是數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的物理實(shí)現(xiàn),有時(shí)也稱作數(shù)據(jù)的物理結(jié)構(gòu)。兩者的區(qū)別是數(shù)據(jù)的邏輯結(jié)構(gòu)只涉及到數(shù)據(jù)之間抽象的數(shù)學(xué)關(guān)系。存儲(chǔ)結(jié)構(gòu)則涉及到如何在計(jì)算機(jī)中通過對數(shù)據(jù)的物理存儲(chǔ)進(jìn)行組織來表達(dá)數(shù)據(jù)元素之間的邏輯關(guān)系。比如在線性表的順序存儲(chǔ)中是利用物理存儲(chǔ)空間上的連續(xù)性來表達(dá)線性表中數(shù)據(jù)的前后件關(guān)系;在線性表的鏈?zhǔn)酱鎯?chǔ)中是通過指針域構(gòu)成的邏輯鏈條來表達(dá)數(shù)據(jù)的前后件關(guān)系。一般的,一種數(shù)據(jù)的邏輯結(jié)構(gòu)對應(yīng)的物理實(shí)現(xiàn),即數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)不止一種。因此選項(xiàng)D正確。

53.C解析:考查用字符指針處理字符串的方法。語句'p=s;'是使指針p指向字符數(shù)組s。*p則引用了p所指位置的數(shù)組元素。通過指針來引用一維數(shù)組元素。

54.B

55.C解析:該題稍微難一點(diǎn)。主要要搞清楚以下幾點(diǎn):①定義了一個(gè)指針數(shù)組char.p[2]后,程序中第一個(gè)循環(huán)for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指針數(shù)組的p[0]元素(它本身是一個(gè)指針)指向了二維數(shù)組ch的第一行字符串,并使指針數(shù)組的p11)元素指向了二維數(shù)組ch的第二行字符串,這樣,就使指針數(shù)組p和二維數(shù)組ch建立起了一種對應(yīng)關(guān)系,以后對二維數(shù)組ch的某個(gè)元素的引用就有兩種等價(jià)的形式:ch[i][j]或p[i][j]。②對二維數(shù)組ch的初始化,使其第一行ch[0]中存入了字符串'6937',第二行ch[1]中的內(nèi)容為字符串'8254'。③程序中第二個(gè)循環(huán)中的循環(huán)體s=e*10+p[i][j]-‘0’;的功能是這樣的,每執(zhí)行一次,將s中的值乘以10(也即,將s中的數(shù)值整體向左移動(dòng)一位,并在空出來的個(gè)位上添一個(gè)0),再將當(dāng)前p[i][j]中的字符量轉(zhuǎn)換為相應(yīng)的數(shù)字,然后把這個(gè)數(shù)字加到s的個(gè)位上。④注意到內(nèi)層循環(huán)的循環(huán)條件p[i][j]>,0,是指p[i][j]中的字符只要不是字符串結(jié)束標(biāo)志,\\0,就繼續(xù)循環(huán),語句j+=2;是使下標(biāo)j每次增加2,也即一個(gè)隔一個(gè)地從p[i]所指向的字符串中取出字符。經(jīng)過上述解析后,不難看出,該程序首先從p[0]所指向的字符串'6937'中一個(gè)隔一個(gè)地取出字符,分別是‘6’和‘3’,然后從p[1]所指向的字符串'8254'中一個(gè)隔一個(gè)地取出字符,分別是‘8’和‘5’,同時(shí)經(jīng)過轉(zhuǎn)換和相加運(yùn)算后,結(jié)果s中的值應(yīng)該是6385,所以,正確答案是C)。

56.D解析:20世紀(jì)70年代以來,提出了許多軟件設(shè)計(jì)方法,主要有①逐步求精:對復(fù)雜的問題,應(yīng)設(shè)計(jì)一些子目標(biāo)作過渡,逐步細(xì)化;②自頂向下:程序設(shè)計(jì)時(shí)應(yīng)先考慮總體,后考慮細(xì)節(jié);先考慮全局目標(biāo),后考慮局部目標(biāo)。不要一開始就過多追求眾多的細(xì)節(jié),先從最上層總目標(biāo)開始設(shè)計(jì),逐步使問題具體化;⑧模塊化:一個(gè)復(fù)雜問題,肯定是由若干稍簡單的問題構(gòu)成。模塊化是把程序要解決的總目標(biāo)分解為分目標(biāo),再進(jìn)一步分解為具體的小目標(biāo),把每個(gè)小目標(biāo)稱為一個(gè)模塊,而可復(fù)用是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)優(yōu)點(diǎn)。

57.C解析:此題考查標(biāo)識符和關(guān)鍵字的概念。需要注意的是C語言是區(qū)分大小寫的,switch是關(guān)鍵字,但Switch不是關(guān)鍵字。

58.D

59.C解析:選項(xiàng)A不是合法的賦值語句,將最右邊的第一個(gè)賦值表達(dá)式加括號即為a=a+(b=b++)才正確,故選項(xiàng)A不正確。選項(xiàng)B中運(yùn)算符%的對象必須是整型,而在選項(xiàng)B中(int)a+b為double型,故選項(xiàng)B不正確。a,b都為double型,應(yīng)當(dāng)避免使用a==b這樣的關(guān)系表達(dá)式,因?yàn)橥ǔ4娣旁趦?nèi)存中的實(shí)型數(shù)據(jù)是有誤差的,因此不可能精確相等,這將導(dǎo)致關(guān)系表達(dá)式a==b總為0。所以,4個(gè)選項(xiàng)中選項(xiàng)C符合題意。

60.D

61.A指針是用來存放地址的變量,用(類型名*指針變量名)的形式定義。賦值時(shí)應(yīng)將某個(gè)變量地址即&x賦給指針變量,因此選擇A。

62.D

63.C學(xué)號是學(xué)生表S的主鍵,課號是課程表C的主鍵,所以選課表SC的關(guān)鍵字就應(yīng)該是與前兩個(gè)表能夠直接聯(lián)系且能唯一定義的學(xué)號和課號,所以選擇C項(xiàng)。

64.Ax、y為整數(shù),x/y值為l,加上o.9為1.9,賦值給整型2,接受后為1。

65.C\n面向?qū)ο蟮脑O(shè)計(jì)方法的基本原理是:使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題。它雖強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的概念而不強(qiáng)調(diào)算法,但是它鼓勵(lì)開發(fā)者在軟件開發(fā)的過程中從應(yīng)用領(lǐng)域的概念角度去思考。

\n

66.C算術(shù)運(yùn)算符+的優(yōu)先級高于-=.且-=的結(jié)合方向?yàn)樽杂蚁蜃?,所以表達(dá)式x-=x+x可以表示成;=x-(x+x)=10-(10+10)=-10,選擇C。

67.B

68.C”anf(”%c”,&c),輸入的字符,題目中輸入了0,字符0,對應(yīng)于ASCIl碼為48,因此for循環(huán)中,i的范圍從0~5,均小于48,if條件不成立,直接執(zhí)行下一條語句,執(zhí)行語句prinff,因此得到的結(jié)果是0,1,2,3,4。故答案為C選項(xiàng)。

69.B解析:耦合性和內(nèi)聚性足模塊獨(dú)立性的兩個(gè)定性標(biāo)準(zhǔn)。內(nèi)聚性是一個(gè)模塊內(nèi)部各個(gè)元素間彼此結(jié)合的緊密程度的度量,作為軟件結(jié)構(gòu)設(shè)計(jì)的設(shè)計(jì)原則,要求每個(gè)模塊的內(nèi)部都具有很強(qiáng)的內(nèi)聚性;耦合性是指模塊間相互連接的緊密程度的度量,一個(gè)模塊與其他模塊的耦合性越強(qiáng)則該模塊的獨(dú)立性越弱。一般優(yōu)秀的軟件設(shè)計(jì)應(yīng)盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨(dú)立性。

70.D

\n本題考查'drhile循環(huán)。第一次循環(huán),y=y-1,y=2,循環(huán)條件成立,x=1,X++后值為1,x自加變成2,進(jìn)入循環(huán),a=a+1=1,判斷if語句條件是否成立,y<x不成立,接著執(zhí)行下一次循環(huán)。第二次循環(huán),x=2,y-1=1,循環(huán)條件成立,進(jìn)入循環(huán),a=a+1=2,判斷if語句的控制條件是否成立,y<X成立,執(zhí)行break語句,退出循環(huán)。結(jié)果為D。

\n

71.C

72.A

73.D各種排序方法中最壞情況下需要比較的次數(shù)分別為:冒泡排序n(n-1)/2、快速排序n(n-1)/2、簡單插入排序n(n-1)/2、希爾排序0(n1.5)、簡單選擇排序n(n-1)/2、堆排序O(nlog2n)

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

75.B

76.A

\nstrcpy實(shí)現(xiàn)的功能是復(fù)制,該操作把a(bǔ)re復(fù)制到a中,a[0][3]=&,且strcpy(a[1],'you')把you復(fù)制到a[1]中,故輸出a為“are&you”。

\n

77.A變量命名規(guī)范:由字母、數(shù)字、下劃線組成,且數(shù)字不作為開頭。所以A)錯(cuò)誤。

78.B

79.D\n這個(gè)是對文件的操作,把數(shù)組的數(shù)寫到文件里,然后再從文件里倒序讀出。所以輸出結(jié)果為6,5,4,3,2,1。

\n

80.A因?yàn)閒un(intx)是一個(gè)遞歸函數(shù),所以主函數(shù)中fun(7)經(jīng)過3次遞歸調(diào)用,其過程可以描述為“fun(7)=7一fun(5)=7一(5一fun(3))=7一(5一(3一fun(1)))=7一(5一(3—3))=7—5=2”,所以最后輸出結(jié)果為2。因此.A選項(xiàng)正確。

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

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

(2)錯(cuò)誤:returni;

正確:returnt;

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

82.

【解析】題目中要求把下標(biāo)從p到n-1的數(shù)組元素平移到數(shù)組的前面,可以通過每一次循環(huán)將最后一個(gè)元素放在第一個(gè)位置上,使其成為第一個(gè)元素,其余元素后移一個(gè)位置。通過n-1-p次循環(huán)實(shí)現(xiàn)將從p到n-1的數(shù)組元素平移到數(shù)組的前面。

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

一、單選題(20題)1.下列排序方法中,()方法的比較次數(shù)與記錄的初始排列狀態(tài)無關(guān)。

A.直接插入排序B.冒泡排序C.快速排序D.直接選擇排序

2.若有以下定義,則對a數(shù)組元素地址的正確引用是()。

inta[5],*p=a;A.A.p5B.*a1C.&a1D.&a[0]

3.已知一個(gè)無向圖(邊為正數(shù))中頂點(diǎn)A,B的一條最短路P,如果把各個(gè)邊的權(quán)重(即相鄰兩個(gè)頂點(diǎn)的距離)變?yōu)樵瓉淼?倍,那么在新圖中,P仍然是A,B之間的最短路,以上說法是()A.錯(cuò)誤B.正確

4.下面函數(shù)的功能是()intfunl(char*X){char*y=X;whar(*y++);return(y-x-1);}

A.求字符串的長度B.比較兩個(gè)字符串的大小C.將字符串x復(fù)制到字符串y中D.將字符串x連接到字符串y后面

5.用二分法查找長度為10的、排好序的線性表,查找不成功時(shí),最多需要比較多少次?()

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

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

A.軟件工程只是解決軟件項(xiàng)目的管理問題

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

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

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

7.

8.某二叉樹的先序序列和后序序列正好相同,則該二叉樹可能是______的二叉樹。

A.高度大于1的左單支B.高度大于1的右單支C.最多只有一個(gè)結(jié)點(diǎn)D.既有左孩子又有右孩子

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

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

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

10.以下敘述中錯(cuò)誤的是A.算法正確的程序最終一定會(huì)結(jié)束

B.算法正確的程序可以有零個(gè)輸出

C.算法正確的程序可以有零個(gè)輸入

D.算法正確的程序?qū)τ谙嗤妮斎胍欢ㄓ邢嗤慕Y(jié)果

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

A.x&&y

B.x<=y

C.x||y+z&&y-z

D.!((x<y)&&!z||1)

12.對n個(gè)元素的數(shù)組進(jìn)行(),其平均時(shí)間復(fù)雜度和最壞情況下都為O(nlogn)。

A.希爾排序B.快速排序C.堆排序D.選擇排序

13.

14.軟件生命周期中的活動(dòng)不包括()

A.軟件維護(hù)B.市場調(diào)研C.軟件測試D.需求分析

15.有以下程序:viodfun(inta,intb,intc){a=456;b=567;c=678;}main{intx=10,y=20,z=30;fun(x,y,z);printf("%d,%d,%d\n",x,y,z);}輸出的結(jié)果是()。A.30,20,10B.10,20,30C.456,567,678D.678,567,456

16.關(guān)系數(shù)據(jù)庫的數(shù)據(jù)及更新操作必須遵循()等完整性規(guī)則。

A.實(shí)體完整性和參照完整性

B.參照完整性和用戶定義的完整性

C.實(shí)體完整性和用戶定義的完整性

D.實(shí)體完整性、參照完整性和用戶定義的完整性

17.有以下程序:#include<stdio.h>main(){charx,a=‘A’,b=‘B’,c=‘C’,d=‘D’;x=(a<b)?a:b;x=(x>c)?c:x;x=(d>x)?x:d;printf(“%c\n”,x);}程序運(yùn)行后的輸出結(jié)果是()。

A.DB.BC.CD.A

18.一個(gè)隊(duì)列的入隊(duì)序列是1,2,3,4,則隊(duì)列的輸出序列是()。

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

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

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

20.如有inta=11;則表達(dá)式(a++*1/3)的值是()。

A.0B.3C.4D.12

二、2.填空題(20題)21.下列程序的輸出結(jié)果是16.00,請?zhí)羁眨?/p>

main()

{

inta=9,b=2;

floatx=【】,y=1.1,z;

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

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

}

22.若fp已正確定義為一個(gè)文件指針,d1.dat為二進(jìn)制文件,請?zhí)羁?,以便為“讀”而打開此文件:

fp=fopen(【】);。

23.閱讀下面語句,則執(zhí)行后的輸出結(jié)果為【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

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

printf("\n");}

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

#include<stdio.h>

main()

{chara,b;

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

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

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

}

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

main()

{inta=2,b=3,c=4;

a*=16+(b++)-(++c);

printf("%d",a);

}

26.軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過程的【】集合。

27.執(zhí)行以下程序后的輸出結(jié)果是【】。

main()

{inta=10;

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

}

28.下面程序的功能是:計(jì)算1~10之間的奇數(shù)之和與偶數(shù)之和,請?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("偶數(shù)之和=%d\n",a);

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

29.在printf格式字符中,以帶符號的十進(jìn)制形式輸出整數(shù)的格式字符是【】;以八進(jìn)制無符號形式輸出整數(shù)的格式字符是【】;以十六進(jìn)制無符號形式輸出整數(shù)的格式字符是【】;以十進(jìn)制無符號形式輸出整數(shù)的格式字符是【】。

30.若a是int型變量,且a的初值為4,則計(jì)算a+=a-=a*a表達(dá)式后a的值為______。

31.以下程序的功能是建立—個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表結(jié)點(diǎn)中的數(shù)據(jù)通過鍵盤輸入,當(dāng)輸入數(shù)據(jù)為-1時(shí),表示輸入結(jié)束(鏈表頭結(jié)點(diǎn)的data域不放數(shù)據(jù),表空的條件是ph->next==NULL),請?zhí)羁铡?/p>

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(struct

32.函數(shù)sub的功能是根據(jù)下面近似分式求π的值。

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

現(xiàn)在請?jiān)谙旅娴暮瘮?shù)中填空,完成求π值的功能。

#include"math.h"

doublesub(longm)

{doublesum=0.0,t;longn;

for(n=1;n<=m;n++)sum+=【】;

t=sqrt(6*sum);

return(t);

}

33.按照邏輯結(jié)構(gòu)分類,結(jié)構(gòu)可以分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),棧屬于______。

34.下面程序的功能是輸出數(shù)組s中最大元素的下標(biāo),請?zhí)羁铡?/p>

#include<stdio.h>

main()

{intk,p,s[]={1,-9,7,2,-10,3};

for(p=0,k=p;p<6;p++)

if(s[p]>s[k])【】

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

}

35.在數(shù)據(jù)庫的概念結(jié)構(gòu)設(shè)計(jì)中,常用的描述工具是【】。

36.下列程序的輸出結(jié)果是______。

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

37.數(shù)據(jù)流的類型有______和事務(wù)型。

38.軟件的需求分析階段的工作,可以概括為四個(gè)方面:【】、需求分析、編寫需求規(guī)格說明書和需求評審。

39.有一個(gè)已排好序的數(shù)組,今輸入一個(gè)數(shù),要求按原來的順序規(guī)律將它插入到數(shù)組中。算法是:假設(shè)排序順序是從小到大,對輸入的數(shù),檢查它在數(shù)組中哪個(gè)數(shù)之后,然后將比這個(gè)數(shù)大的數(shù)順序后移一個(gè)位置,在空出的位置上將該數(shù)插入。請?jiān)诔绦蛑械目瞻滋幪钌弦粭l語句或一個(gè)表達(dá)式。

#defineN100

main()

{floata[N+1],x;

inti,p;

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

scanf("%f"&a[i]);

scanf("%f",&x);

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

if(x<a[i])

{【】;

break;}

for(i=N-1;【】;i-)

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

a[p]=x;

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

{printf("%8.2f",a[i]);

if(i%5=0)

printf("\n");

}

}

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

三、1.選擇題(20題)41.C語言可執(zhí)行程序的開始執(zhí)行點(diǎn)是()。

A.包含文件中的第一個(gè)函數(shù)B.程序中第一個(gè)函數(shù)C.程序中的main()函數(shù)D.程序中第一條語句

42.設(shè)有定義語句int(*f)(int);,則以下敘述正確的是()。

A.f是基類型為int的指針變量

B.f是指向函數(shù)的指針變量,該函數(shù)具有一個(gè)int類型的形參

C.f是指向int類型一維數(shù)組的指針變量

D.f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址

43.有如下程序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);}該程序的輸出結(jié)果是

A.0B.0.25C.0.5D.1

44.C語言規(guī)定,調(diào)用一個(gè)函數(shù)時(shí),實(shí)參變量和形參變量之間的數(shù)據(jù)傳遞是()。

A.地址傳遞B.值傳遞C.由實(shí)參傳給形參,并由形參傳回給實(shí)參D.由用戶指定傳遞方式

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

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

46.若輸入“abcdef”、“abdef”,以下程序的輸出結(jié)果為()。#include<stdio.h>#lnclude<string.h>main(){intn;chars1[20],s2[20],p1,*p2;scanf("%s",s1);scanf("%s",s2);P1=s1;p2=s2;n=strcmp(p1,p2);printf("%d\n",n);}

A.-1B.0C.abcdefD.abdef

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

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

48.以下敘述中不正確的是

A.預(yù)處理命令行都必須以#號開始

B.在程序中凡是以#號開始的語句行都是預(yù)處理命令行

C.宏替換不占用運(yùn)行時(shí)間,只占編譯時(shí)間

D.在以下定義是正確的:#definePI3.1415926;

49.以下程序的輸出結(jié)果是f(intb[],intm,intn){inti,s=0;for(i=m;i<n;i=i+2)s=s+b[i];returns;}main(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf(“%d\n”,x);}

A.10B.18C.8D.15

50.設(shè)有如下的函數(shù)______。f(x)floatx;{printf("\n%d",x*x);}則函數(shù)類型

A.與參數(shù)x類型相同B.是voidC.是intD.無法確定

51.現(xiàn)有如下程序段#include"stdio.h"#include"string.h"main(){chara[]="acfijk";/*這里是有序的字符序列*/charb[]="befijklqswz";/*這里是有序的字符序列*/charc[80],*p;inti=0,j=0,k=0;while(a[i]!='\0'&&b[j]!='\0'){if(a[i]<b[j])c[k++]=a[i++];elseif(a[i]>b[j])c[k++]=b[j++];else{c[k++]=b[j++];i++;}}while(a[i]=='\0'&&b[j]!='\0')c[k++]=b[j++];while(a[i]!=,'\0'&&b[j]=='\0')c[k++]=a[i++];c[k]='\0';puts(c);}則輸出結(jié)果是

A.acfijkbefijklqswz

B.abceffiijjkklqswz

C.befijklqswzacfijk

D.abcefijklqswz

52.數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)是指()。

A.存儲(chǔ)在外存中的數(shù)據(jù)B.數(shù)據(jù)所占的存儲(chǔ)空間量C.數(shù)據(jù)在計(jì)算機(jī)中的順序存儲(chǔ)方式D.數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)中的表示

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

#include<stdio.h>

main()

{inta=28,b;

chars[10],*p;

p=s;

do{b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;a=a/5;}while(a>0);

*p=′\0′;puts(s);}

A.10B.C2C.C51D.\0

54.有以下程序main(){charst[20]="hello\0\t'\\";printf("%d%d\n",strlen(st),sizeof(st));}程序運(yùn)行后的輸出結(jié)果是()

A.99B.520C.1320D.2020

55.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}該程序的輸出結(jié)果是

A.69825B.63825C.6385D.693825

56.下列選項(xiàng)中不屬于結(jié)構(gòu)化程序設(shè)計(jì)方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復(fù)用

57.以下標(biāo)識符不是關(guān)鍵字的是()。

A.breakB.charC.switchD.return

58.假定w,x,y,z和m均為int型變量,有如下程序段:w=1;x=2,y=3;z=4;m=(w<x)?w:x;m=(m<y)?m:y;m(m<2)?m:2;則該程序段執(zhí)行后,m的值為()

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

59.有以下定義語句

doublea,b;intw;longc;

若各變量已正確賦值,則下列選項(xiàng)中正確的表達(dá)式是A.a=a+b=b++B.w%(int)a+b)C.(c+w)%(int)aD.w=a==b;

60.設(shè)有如下程序:#include"string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果從鍵盤上輸入name<回車>name1<回車>,則程序運(yùn)行后的輸出結(jié)果是()

A.$8B.@10C.$9D.@9

四、選擇題(20題)61.設(shè)已有定義:floatx;則以下對指針變量p進(jìn)行定義且賦初值的語句中正確的是()。A.float*p=&x;B.int*p-(float)x;C.floatp=&x;D.float*p=1024;

62.

63.設(shè)有表示學(xué)生選課的三張表,學(xué)生s(學(xué)號,姓名,性別,年齡,身份證號),課程c(課號,課名),選課SC(學(xué)號,課號,成績),則表sc的關(guān)鍵字(鍵或碼)為()。

A.課號,成績B.學(xué)號,成績C.學(xué)號,課號D.學(xué)號,姓名,成績

64.若有定義語句:A.1B.1.9C.2D.2.4

65.面向?qū)ο蟮脑O(shè)計(jì)方法與傳統(tǒng)的面向過程的方法有本質(zhì)不同,它的基本原理是()。

A.模擬現(xiàn)實(shí)世界中不同事物之間的聯(lián)系

B.強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而不強(qiáng)調(diào)概念

C.使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題

D.不強(qiáng)調(diào)模擬現(xiàn)實(shí)世界中的算法而強(qiáng)調(diào)概念

66.若有定義語句:intX=10;,則表達(dá)式x-=x+x的值為()。

A.0B.-20C.-10D.10

67.

68.有以下程序:執(zhí)行時(shí)輸入:0<;回車>;后,則輸出結(jié)果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.

69.軟件設(shè)計(jì)中模塊劃分應(yīng)遵循的準(zhǔn)則是()。A.低內(nèi)聚低耦合

B.高內(nèi)聚低耦合

C.低內(nèi)聚高耦合

D.高內(nèi)聚高耦合

70.

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

main

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

while(x++!=(y-=l))

{a+=1;

if(y<x)break;

}

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

}

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

71.

72.

73.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

74.有以下程序:

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

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

75.

76.

下述程序執(zhí)行的輸出結(jié)果是()。

#include<stdio.h>

main

{chara[2][4];

strcpy(a,"are");strcpy(a[1],"you");

a[0][3]=&;

printf("%s\n",a):

}

A.are&youB.youC.areD.&

77.下列定義變量的語句中錯(cuò)誤的是()。

78.

79.有以下程序:

#include<stdio.h>

main()

{FILE*fp;inti,a[6]={1,2,3,4,5,6};

fp=fopen("d2.dat","w+");

for=(i=o;i<6;,i++)fpintf(fp,"%d\n",a[i]);

rewind(fp);

for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);

fclose(fp);

for(i=0;i%6;i++)printf("%d,",a[i]);

}

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

A.4,5,6,1,2,3,

B.1,2,3,3,2,1,

C.1,2,3,4,5,6,

D.6,5,4,3,2,1,

80.有以下程序:

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

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

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

六、程序設(shè)計(jì)題(1題)82.請編寫函數(shù)proc(),該函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容,若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從p到n-1(p≤n-1)的數(shù)組元素平移到數(shù)組的前面。例如,一維數(shù)組中的原始內(nèi)容為1,2,3,4,5,6,7,8,9,10,11,12,13,14,P的值為4。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序給出如下。請勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.D本題考查如何引用數(shù)組元素的地址。選項(xiàng)A)中,p5引用的是af51的地址,而數(shù)組a只有5個(gè)元素,即a[0]、a[1]、a[2]、a[3]、a[4],所以引用錯(cuò)誤;選項(xiàng)B)中,*a1指的是將數(shù)組a的第一個(gè)元素加1;選項(xiàng)C)中,這種引用方式錯(cuò)誤;選項(xiàng)D)中,&a[0]引用的是數(shù)組的首地址。

3.B

4.A

5.B

6.C\r\n軟件工程是試圖用工程、科學(xué)和數(shù)學(xué)的原理與方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及管理方法。軟件工程的主要思想是強(qiáng)調(diào)在軟件開發(fā)工程中需要應(yīng)用工程化的原則。軟件工程用來解決以下問題:軟件需求的增長得不到滿足、軟件開發(fā)成本和進(jìn)度無法控制、軟件質(zhì)量難以保證、軟件不可維護(hù)或維護(hù)程度低、軟件得成

溫馨提示

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

評論

0/150

提交評論