2021年安徽省蚌埠市全國計算機等級考試C語言程序設(shè)計_第1頁
2021年安徽省蚌埠市全國計算機等級考試C語言程序設(shè)計_第2頁
2021年安徽省蚌埠市全國計算機等級考試C語言程序設(shè)計_第3頁
2021年安徽省蚌埠市全國計算機等級考試C語言程序設(shè)計_第4頁
2021年安徽省蚌埠市全國計算機等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩103頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年安徽省蚌埠市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下敘述中錯誤的是

A.在函數(shù)外部定義的變量在所有函數(shù)中都有效

B.在函數(shù)內(nèi)部定義的變量只能在本函數(shù)范圍內(nèi)使用

C.函數(shù)中的形參屬于局部變量

D.在不同的函數(shù)中可以使用相同名字的變量

2.下面關(guān)于數(shù)據(jù)庫系統(tǒng)中敘述正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

3.

4.已知數(shù)據(jù)表A中每個元素距其最終位置不遠,為節(jié)省時間,應(yīng)該采用的算法是()

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

5.設(shè)有定義語句:charc1=92,c2=92;則以下表達式中值為零的是()。

A.c1∧c2B.c1&c2C.~c2D.c1|c2

6.

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

A.結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組或指針變量

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型可以是本結(jié)構(gòu)體類型

D.結(jié)構(gòu)體定義時,類型不同的成員項之間可以用逗號隔開

8.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.17,17,49,49B.17,29,49,49C.29,29,49,49D.49,49,49,49

9.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結(jié)果是()。

A.abcB.28cC.abc28D.因類型不一致而出錯

10.當(dāng)c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

11.若有定義“doublea=22;inti=0,k=18;”,則不符合C語言規(guī)定的賦值語句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

12.二維數(shù)組A的每個元素是由6個字符組成的串,其行下標(biāo)i=0,1,…,8,列下標(biāo)j=1,2,…,10。若A按行先存儲,元素A[8][5]的起始地址與當(dāng)A按列先存儲時的元素()的起始地址相同。設(shè)每個字符占一個字節(jié)。

A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]

13.

14.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運行后的輸出結(jié)果是()。

A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,

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

A.C語言程序必須由一個或一個以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為一個獨立的語句存在

C.若函數(shù)有返回值,必須通過return語句返回

D.函數(shù)形參的值也可以傳回給對應(yīng)的實參

16.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1

17.設(shè)變量已正確定義并賦值,下列表達式中正確的是()。

A.x=y+z+5,++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0

18.若串S=,software,其子串的數(shù)目是()。

A.8B.37C.36D.9

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

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

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

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

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

20.以下能正確定義一維數(shù)組的選項是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

二、2.填空題(20題)21.在C語言中(以16位PC機為例),一個float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為【】。

22.mystrlen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{intI;

for(I=0;【】!='\n';I++);

return(I);}

23.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

24.以下程序運行后的輸出結(jié)果是()。

#include<stdio.h>

main()

{intx=20;

printf("%d",0<x<20);

printf("%d\n",0<x&&x<20);

}

25.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

26.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

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

main()

{

inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{

case0:m++;n++;break;

case10:n++;;break;

default:k++;n++;

}

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

}

28.軟件生命周期包括8個階段。為了使各時期的任務(wù)更明確,又可分為3個時期:軟件定義期、軟件開發(fā)期、軟件維護期。編碼和測試屬于【】期。

29.關(guān)系模型的3類完整性指的是【】、參照完整性、用戶定義的完整性。

30.下面程序執(zhí)行后k的值為【】。

inta=1,b=2,c=3,d=4,k;

k=a>b?a:c>d?c:d

31.問題處理方案的正確而完整的描述稱為______。

32.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為______。

33.有以下語句段

intnl=10,n2=20;

printf("______",n1,n2);

要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>

n1=10

n2=20

34.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

35.下面程序輸出的結(jié)果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}

36.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

37.解題方案的準(zhǔn)確而完整的描述稱為______。

38.函數(shù)sstrcmp的功能是對兩個字符串進行比較。當(dāng)s所指字符串和t所指字符串相等時,返回值為0;當(dāng)s所指字符串大于t所指字符串時,返回值大于0;當(dāng)s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?/p>

#include<stdio.h>

intsstrcmp(char*s,char*t)

{while(*s&&*t&&*s==【】)

{s++;t++;}

return【】;

}

39.下述函數(shù)統(tǒng)計一個字符串中的單詞個數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

40.軟件的【】設(shè)計又稱為總體結(jié)構(gòu)設(shè)計,其主要任務(wù)是建立軟件系統(tǒng)的總體結(jié)構(gòu)。

三、1.選擇題(20題)41.以下程序的結(jié)果是()

main()

{unsignedinta=3,b=10;

printf("%d\n",a<<2|b>>1);

}

A.1B.5C.12D.13

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

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

43.在結(jié)構(gòu)化方法中,軟件功能分解屬于軟件開發(fā)中的______階段。

A.詳細設(shè)計B.需求分析C.總體設(shè)計D.編程調(diào)試

44.下列程序的執(zhí)行結(jié)果是()。#include<stdio.h>main(){inta,b,c;a=b=2:c=(a++)-1;printf("%d,%d",a,c);c+=(a+=-a+++(++B);printf("%d,%d",a,c);}

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

45.已有定義int(*p)(),指針p可以

A.代表函數(shù)的返回值B.指向函數(shù)的入口地址C.表示函數(shù)的類型D.表示函數(shù)返回值的類型

46.軟件需求分析一般應(yīng)確定的是用戶對軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

47.有以下程序:#include<stdio.h>main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后的輸出結(jié)果是()。

A.77B.88C.810D.1010

48.若有定義語句:inta[2][3],*p[33;,則以下語句中正確的是()。

A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a

49.下列程序的輸出結(jié)果是______。main(){inta=12,b=12;printf("%d%d\n",--a,++b);

A.1010B.1212C.1110D.1113

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

現(xiàn)要將q和r所指結(jié)點的先后位置交換,同時要保持鏈表的連續(xù),以下錯誤的程序段是

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

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

C.p->next=r;q->next=r->next;r->next=q;

D.q->next=r->next;r->next=q;P->next=r;

51.若要說明一個類型名STP,使得定義語句STP軋等價于char*s;,以下選項中正確的是()。

A.typedefSTPchar*s;

B.typedef*charSTP;

C.typedefSTP*char;

D.typedefchar*STP;

52.關(guān)于語句“for(表達式1;表達式2;表達式3)”,下面說法中錯誤的是()。

A.for語句中的三個表達式不可以同時省略

B.for語句可以用于循環(huán)次數(shù)不確定的情況

C.for語句中表達式2可以是關(guān)系表達式或邏輯表達式

D.for語句中表達式1和表達式3可以是逗號表達式

53.C語言中不合法的字符串常量是

A.\121B.'Y'C.\n\nD.ABCD\x6d

54.有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}whUe(k>0&&n<5);}程序運行后的輸出結(jié)果是

A.235B.0235C.02356D.2356

55.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源

56.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是()。

A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進性D.程序的易讀性

57.以下敘述正確的是

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

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

C.在C程序中,無論是整數(shù)還是實數(shù),都能被準(zhǔn)確無誤地表示

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

58.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結(jié)果是

A.1267B.1256C.1278D.1245

59.若有如下定義:unionaa{intn;charc[9];floatx;}a,b,c;則下列敘述中不正確的是()

A.unionaa是定義的共用體類型

B.a,b,c是定義的共用體類型名

C.n、c[9]和x是共用體的成員名

D.a,b,c是定義的共用體變量名

60.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

四、選擇題(20題)61.給出以下定義:

則正確的敘述為()。

A.數(shù)組m和數(shù)組n等價B.數(shù)組m和數(shù)組n的長度相同C.數(shù)組m的長度小于數(shù)組n的長度D.數(shù)組m的長度大于數(shù)組n的長度

62.

63.

64.以下關(guān)于指針概念不正確的是()。

A.指針變量可以用整數(shù)賦值,但不可以用浮點數(shù)賦值

B.一個變量的地址稱為該變量的指針,一個指針變量只能指向同一類型的變量

C.只有同一類型的變量地址才能放到指向該類型變量的指針變量之中

D.只能將地址賦給指針變量

65.

66.

67.

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

69.有以下程序

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

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

70.有以下程序:

程序運行后的結(jié)果是()。

A.6,4,3,2,1

B.6,5,4,3,2

C.5,4,3,2,1

D.10,4,3,2,l

71.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。

A.在需求分析階段建立數(shù)據(jù)字典

B.在概念設(shè)計階段建立數(shù)據(jù)字典

C.在邏輯設(shè)計階段建立數(shù)據(jù)字典

D.在物理設(shè)計階段建立數(shù)據(jù)字典

72.

73.下列定義變量的語句中正確的是()。

A)int_int;B)double3int_;

C)charfor;D)floatUS&;

74.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

75.

76.以下程序的輸出結(jié)果為

main()

{

char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};

char**p;

inti;

p=alpha;

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

printf("%s",p[i]);

printf("\n");

}

A.ABCDEFGHIJKLB.ABCD

C.ABCDEFGHIJKLMNOPD.AEIM

77.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。A.A.-3B.9C.-12D.6

78.

79.有以下程序:

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

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

80.

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:用遞歸算法計算斐波拉契數(shù)列中第n項的值。從第l項起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…

例如,若給n輸入7,則該項的斐波拉契數(shù)值為l3。

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

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

試題程序:

#include<stdio.h>

longfun(intg)

{

//****found****

switch(g);

{

case0:return0;

//****found****

casel:case2:return1;

}

return(fun(g-1)+fun(g-2));

}

voidmain

{

longfib;intn;

printf("Inputn:");

scanf("%d",&n);

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

fib=fun(n);

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

}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在c數(shù)的十位和千位上,b中的十位數(shù)和個位數(shù)依次放在c數(shù)的百位和個位上。例如,當(dāng)a=45,b=12時,調(diào)用該函數(shù)后,c=5142。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

參考答案

1.A全局變量有效范圍是從定義的位置開始到所在源文件的結(jié)束,在這區(qū)域內(nèi)的函數(shù)才可以調(diào)用,如果在定義函數(shù)之后,定義的變量,該變量不能被之前的函數(shù)訪問所以A選項說法錯誤,答案為A選項。

2.A\n數(shù)據(jù)的共享自身又可極大地減少數(shù)據(jù)冗余性,不僅減少了不必要的存儲空間,更為重要的是可以避免數(shù)據(jù)的不一致性。所謂數(shù)據(jù)的一致性是指在系統(tǒng)中同一數(shù)據(jù)在不同位置出現(xiàn)時應(yīng)保持相同的值。

\n

3.C

4.D

5.A解析:按位異或“^”運算,是當(dāng)對應(yīng)位上的二進制數(shù)值相同時結(jié)果為0,否則為1。因為c1,c2的值相同,所以異或的結(jié)果為0,選項A)正確。按位與“&”運算符只有當(dāng)所有對應(yīng)位上的數(shù)都不相同時結(jié)果才為0,所以c1&c2的值不可能為0,選項B)錯誤?!啊笔前次蝗》?,由于十進制數(shù)92轉(zhuǎn)化成二進制數(shù)并不是全為1,所以即使取反也不能得到全為。的答案,所以錯誤?!皘”是按位或運算,由于十進制數(shù)92轉(zhuǎn)化為二進制數(shù)也不是全為0,所以按位或運算后也不會全為0。

6.A

7.A結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組、指針變量或者結(jié)構(gòu)體變量,選項A正確;不同結(jié)構(gòu)體成員名可以相同,選項B錯誤;結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型不能是本結(jié)構(gòu)體類型,選項C錯誤;結(jié)構(gòu)體定義時,類型不同的成員項之間使用分號隔開,選項D錯誤。本題答案為A選項。

8.B對于題干中的宏,替換如下:S1(a+b,a+b),&+1>)等價于a+b*a+b,即2+5*2+5,等于17;S1(a+b,b+a),等價于a+b*b+a,即2+5*5+2,等于29;S2(a+b,a+b)等價于(a+b)*(a+b),即(2+5)*(2+5),等于49;S2(a+b,b+a)等價于(a+b)*(b+a),即(2+5)*(5+2),等于49。本題答案為B選項。

9.Cfprintf函數(shù)將內(nèi)容寫入硬盤的文件,fputs函數(shù)將字符串寫入文件,最終文件的內(nèi)容為abc28。故本題答案為C選項。

10.C選項A是先將a的值賦給變量b,再將變量b的值賦給變量c,不合題意;B選項中由于c的值不為0,在將c的值賦給變量a后,表達式a=c的值為1,不再對表達式b=c計算;對于c選項,表達式a=c的值為1,再求表達式b=c的值為1,然后進行邏輯與運算;D選項將b的值賦給c后再賦給e,故選擇C選項。

11.B運算符“%”為二元運算符,具有左結(jié)合性,參與運算的量均為整型。B選項中的變量a是double型,不符合規(guī)定。故本題答案為B選項。

12.A

13.B

14.A程序首先以讀二進制文件的方式打開文件d.dat;然后使用fwrite函數(shù)將數(shù)組a中6個元素寫入d.dat中。并調(diào)用for循環(huán)將a[2]元素(值為3)6次寫入d.dat文件中;接著使用rewind函數(shù)將文件指針fp移動到文件頭;再使用fseek函數(shù)將fp從當(dāng)前位置向后移動2個整數(shù)位置;最后使用fread函數(shù)從fp指向的位置向后讀取6個整數(shù)。由此可知這6個整數(shù)分別是:3,4,5,6,3,3。故本題答案為A選項。

15.D形參是定義函數(shù)時由用戶定義的。實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是“值傳遞'是單向傳遞。故本題答案為D選項。

16.D在C語言中,當(dāng)表達式成立時用l表示,不成立時用0表示,即x=(a&&b)&&(c<'B')=(14&&15)&&('A'<'B')=1&&1=1,故選擇D選項。

17.A運算符“%”的左右兩個操作數(shù)均應(yīng)為整數(shù),所以B選項與D選項錯誤。C選項中不能將“x+z”的值賦給表達式“y*5”,所以C選項錯誤。故本題答案為A選項。

18.B

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

20.B數(shù)組1標(biāo)從0開始,A選項中所賦值的個數(shù)超過了數(shù)組的長度;C選項中定義a為字符型變量,而不是數(shù)組,賦值錯誤;D選項中,整型數(shù)組不能賦字符串。

21.88解析:在一般系統(tǒng)中,一個float型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),一個double型數(shù)據(jù)占8個字節(jié)。

22.*(str+I)或str[I]*(str+I)或str[I]解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,可以用*(str+I)來訪問字符串中的第I個元素,判斷是否為結(jié)束標(biāo)志,如果不是,I=I+1,繼續(xù)取下一個元素進行判斷,直到*(str+I)的值為'\\0'為止,也可以用下標(biāo)的方式引用字符,如*(str+I)相當(dāng)于str[I]。

23.模塊化模塊化

24.1010解析:表達式0<x<20,首先計算0<x,其值為1,再計算1<20,其值為1,輸出1;表達式0<x&&x<20,0<x為1,x<20為0,再計算1&&0,其值為0,輸出0。所以輸出結(jié)果為10。

25.變換型典型的數(shù)據(jù)流類型有兩種:變換型和事務(wù)型。變換型是指信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內(nèi)部形式,進入系統(tǒng)的信息通過變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng);在很多軟件應(yīng)用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能,這種數(shù)據(jù)流就叫做事務(wù)。

26.t*10或10*tt*10或10*t解析:本題要求累加一系列有規(guī)律的數(shù),從輸出結(jié)果來看,s保存的是最終結(jié)果,而s在循環(huán)體中,每次累加一個t,則說明t在5次循環(huán)中分別等于1.12、123、1234、12345;而t每次循環(huán)等于“填空內(nèi)容”加上循環(huán)變量i,又因為i在5次循環(huán)中分別等于1、2、3、4,5,所以t每次循環(huán)要加的“填空內(nèi)容”應(yīng)分別為0、10、120,1230,12340,這一系列值正好是前一次t的值的10倍.所以“填空內(nèi)容”應(yīng)是t*10。

27.132132解析:本題考核的知識點是for循環(huán)與switch語句的綜合運用。主函數(shù)中用了一個for循環(huán),for循環(huán)里嵌套了一個switch語句,for循環(huán)了三次,當(dāng)i=9時,i/10=0,執(zhí)行switch語句中case0分支,m和n的值各加1,變?yōu)?和1,然后遇到breake語句,退出switch語句;當(dāng)i=10,i/10=1,執(zhí)行switch語句中default分支,使k和n的值各加1,變?yōu)?和1,退出switch語句:當(dāng)i=11時,i/10=1,執(zhí)行switch語句中default分支,k和n的值各加1變,為2和3,退出switch語句,循環(huán)結(jié)束。故該空格處應(yīng)該填132。

28.軟件開發(fā)軟件開發(fā)解析:軟件生命周期可以分為3個時期:軟件定義期,包括問題定義、可行性研究和需求分析3個階段;軟件開發(fā)期,包括系統(tǒng)設(shè)計、詳細設(shè)計、編碼和測試4個階段;軟件維護期,即運行維護階段。編碼和測試屬于軟件開發(fā)階段。

29.實體完整性實體完整性解析:關(guān)系模型中的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性和一致性。為了維護數(shù)據(jù)庫中數(shù)據(jù)與現(xiàn)實世界的一致性,關(guān)系數(shù)據(jù)庫的插入、刪除、修改操作必須遵循3類完整性規(guī)則。關(guān)系模型的3類完整性指的是實體完整性、參照完整性和用戶定義的完整性。

30.44解析:本題首先判斷a>b的真假,結(jié)果是1>2為假,所以表達式“a>b?a:c>d?c:d”的值為子表達式“c>d?c:d”的值。再判斷c>d的真假,結(jié)果是3>4為假,所以最終k被賦的值為d的值,故應(yīng)該填4。

31.算法或程序或流程圖算法或程序或流程圖解析:算法是問題處理方案正確而完整的描述。

32.繼承繼承

33.n1=%d\nn2=%d\n或n1=%d\nn2=%d或n1=%2d\nn2=%2d\n或n1=%2d×nn2=%2dn1=%d\\nn2=%d\\n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d×nn2=%2d解析:printf函數(shù)有兩種參數(shù):格式控制參數(shù)和輸出項參數(shù),其中格式控制參數(shù)由兩種成分組成;格式說明和普通字符,普通字符將被簡單地復(fù)制顯示,格式說明項將引起一個輸出參數(shù)項的轉(zhuǎn)換與顯示,它是由“%”引出并以一個類型描述符結(jié)束的字符串。本題中,n1=和n2=就是普通字符,可以直接顯示,又因為n1,n2為整數(shù),所以格式說明項為%d,也可以在%與d之間加上域?qū)?,另外還要在每行輸出結(jié)束時加轉(zhuǎn)義字符\\n進行換行。所以,應(yīng)填寫n1=%d\\nn2=%d\\n,n或n1=%d\\nn2=%d或n1=%2d\\nn2=%2d\\n或n1=%2d\\nn2=%2d。

34.224682,2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當(dāng)i=0時,p[0]=&x[1],p[0][0]=2;當(dāng)i=1時,p[1]=&x[3],p[1][0]=4;當(dāng)i=2時,p[2]=&x[5],p[2][0]=6;當(dāng)i=3時,p[3]=&x[7],\ue008p[3][0]\ue009=8,所以程序輸出的結(jié)果為2、4、6、8。

35.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作甩域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。

36.structnode*structnode*解析:本題中的結(jié)構(gòu)類型名為structnode,所以空白處應(yīng)填:structnode*。即定義一個指向自身的結(jié)構(gòu)體指針。

37.算法算法解析:算法是指對解題方案的準(zhǔn)確而完整的描述。

38.*t或t[0]*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]*t或t[0]\r\n*s-*t或*s-t[0]或s[0]-*t或s[0]-t[0]解析:函數(shù)sstrcmp()有兩個字符型指針變量,用來指向兩個字符串。比較兩個字符串的大小方法是:從第一個字符開始依次向后比較,若對應(yīng)的字符相等則接著比較下一個字符,一直到兩個字符串中對應(yīng)字符不等,或者有一個為\\0,此時字符的ASCII碼大的字符串就大。故循環(huán)條件是*s和*t不為\\0,且*s和*t相同,第一處應(yīng)填“*t”或其他等價形式。根據(jù)題意可知第二處應(yīng)填*s-*t或其等價形式。

39.*s++flag=0或*(s-1)=''num*s++\r\nflag=0或*(s-1)=''\r\nnum解析:在統(tǒng)計字符串單詞個數(shù)的算法中,本題的flag是為了記錄一個單詞是否結(jié)束。第13空應(yīng)填*s++;如果某個字符不是空格,則必須判斷它是否是單詞,如是,則使得flag的標(biāo)志為1,num的值加1。本題判斷方法是:先判斷s所指向的字符是否為空格,如果是則使得flag=0,否則判斷前一個字符是否是空格,如果是則說明這個字符是一個單詞的開始,將flag標(biāo)志為1,num的值加1,如果不是,則不必記錄。故第14空應(yīng)填flag=0或*(s-1)='';最后一個空格需填寫的是返回的單詞的個數(shù),即num。

40.概要概要

41.D

42.C解析:本題考查字符數(shù)組和指針的運用。strlen是測試字符串長度的函數(shù),函數(shù)的值為字符串的實際長度,不包括\'/0\'在內(nèi)。str[][20]={'Hello','Beijing'}定義了一個2行20列的數(shù)組,數(shù)組的首地址是&str[0][0],p+20是從首地址向后移了20位,指針指向了str[1][0]處,此時求字符串的長度,是從str[1][0]開始的,即“Beijing”的長度,所以輸出結(jié)果是7。

43.C解析:總體設(shè)計過程通常由兩個主要階段組成:系統(tǒng)設(shè)計,確定系統(tǒng)的具體實現(xiàn)方案;結(jié)構(gòu)設(shè)計,確定軟件,結(jié)構(gòu)。為確定軟件結(jié)構(gòu),首先需要從實現(xiàn)角度把復(fù)雜的功能進一步分解。分析員結(jié)合算法描述仔細分析數(shù)據(jù)流圖中的每個處理,如果一個處理的功能過分復(fù)雜,必須把它的功能適當(dāng)?shù)胤纸獬梢幌盗斜容^簡單的功能。

44.A解析:本題主要考查自加運算符(++、--)的使用。①前綴變量“++i、-i”,在使用i之前,先使i的值加1或者減1,再使用此時的表達式的值參與運算:②后綴變量“i++、i--”,先使用此時的表達式的值參與運算,在使用i之后,再使i的值加1或者減1。本題中計算表達式c=(a++)-1時先使用a的值進行計算,結(jié)果為c=2-1=1,然后將a的值加1,即執(zhí)行完此語句后,的值是3;表達式c+=-a+++(++b)等價于c=c+(-a++)+(++b),c=1+(-3)+3=1,此時a=4,b=3。

45.B解析:此題考查了函數(shù)指針的概念,函數(shù)指針是定義一個指針指向函數(shù)的入口地址,可用這個指針來調(diào)用函數(shù)。

46.DD。【解析】軟件需求分析中需要構(gòu)造一個完全的系統(tǒng)邏輯模型,理解用戶提出的每一功能與性能要求,使用戶明確自己的任務(wù)。因此,需求分析應(yīng)確定用戶對軟件的功能需求和非功能需求。

47.C解析:用a[]='abcdefg'對數(shù)組a進行初始化,是用一個字符串作初值。數(shù)組a的長度包括由系統(tǒng)加上的\'\\0\',因此是8。b[10]='abcdefg'只初始化了前7個元素,后3個元素為0(\'\\0\'),所以長度為10。

48.B解析:本題考查的重點是指針數(shù)組與二維數(shù)組的關(guān)系。因為*p[3]定義成指針數(shù)組,從而指針數(shù)組中的任何元素都是一個地址,因此,選項B是正確的。

49.D

50.A解析:題目中要求將q和r所指結(jié)點的先后位置交換,即要求p所指結(jié)點的指針域指向r所指向的結(jié)點,r所指向的結(jié)點的指針域指向q所指向的結(jié)點,q所指向的結(jié)點的指針域指向r所指向的結(jié)點。選項A首先讓r所指向的指針的指針域指向q所指向的結(jié)點,這樣就將r所指向的結(jié)點的指針域指向的結(jié)點丟失了。選項B首先q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針域所指向的結(jié)點,然后,讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,最后讓r所指向的結(jié)點的指針域指向q所指向的結(jié)點,滿足要求。選項C首先讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,然后讓q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針域所指向的結(jié)點,最后讓r所指向的結(jié)點的指針域指向q所指向的結(jié)點,滿足要求。選項D首先讓q所指向的結(jié)點的指針域指向r所指向的結(jié)點的指針域所指向的結(jié)點,然后,讓r所指向的結(jié)點的指針域指向q所指向的結(jié)點,最后讓P所指向結(jié)點的指針域指向r所指向的結(jié)點,滿足要求。

51.D解析:指針類型的自定義的形式如下:typedef類型說明符*用戶類型名。不難看出只有選項D是正確的定義形式。所以,D選項為所選。

52.A解析:for語句中的3個表達式可以同時省略,但兩個;不能省略。所以選項A的說法錯誤。

53.B解析:字符串常量是由雙引號括起來的一串字符,其中的雙引號不可缺少。由此可知,選項A)、C)、D)都是含法的字符串常量,而選B)是一個字符常量。

54.A解析:因為變量的初始值分別為“k=5,n=0”,所以程序第一次進入循環(huán)時,執(zhí)行default語句,這時k=4,執(zhí)行“case4:”這個分支,結(jié)果是“n=2,k=3”,打印出2;程序然后進行第二次循環(huán),這時“n=2,k=3”,執(zhí)行“case3:”這個分支,結(jié)果是“n=3,k=2”,打印出3;程序進行第三次循環(huán),這時“n=3,k=2”,執(zhí)行“case2:case4:”這兩個分支,結(jié)果是“n=5,k=1”,打印出5,這時因為n=5不滿足n<5的循環(huán)條件,因此退出循環(huán),程序運行結(jié)束,故輸出結(jié)果為235。

55.D軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中主要的資源有硬件資源、通信資源、輔助資源等。(1)硬件資源是指組成計算機及相關(guān)應(yīng)用所需要的硬件,它是軟件開發(fā)必不可少的資源,因為無論什么樣的軟件工具都需要在硬件上完成任務(wù),它是其他資源的基礎(chǔ)資源。(2)通信資源是指為軟件開發(fā)提供通信支撐的資源,它與測試數(shù)據(jù)無關(guān)。(3)支持軟件是指為軟件開發(fā)提供操作平臺的軟件,如常用的面向?qū)ο箝_發(fā)的Rose軟件,它主要是軟件開發(fā)的工具。通過對上述分析的總結(jié),可以知道本題的正確答案選D。

56.D解析:程序不僅是編寫完就結(jié)束了,為了測試和維護程序,往往還有其他人閱讀和跟蹤程序,因此程序設(shè)計的風(fēng)格應(yīng)該強調(diào)簡單和清晰,即程序的易讀性,“清晰第一,效率第二”。

57.D解析:選項A)錯誤,因為在C語言中,各語句間可以用分號隔開,一行可以書寫多個語句;選項B)錯誤的原因是,忽略了C語言中進行運算的數(shù)據(jù)類型必須一致的規(guī)定,因此實型變量中不允許存放整型數(shù),存放整型數(shù)據(jù)其實是把整型轉(zhuǎn)化為實型在存放。選項C)錯誤的原因是由于實型變量是用有限的存儲單元存儲的,因此能提供的有效數(shù)字總是有限的,在有效的位以外的數(shù)將被舍去,由此可能產(chǎn)生一些誤差。

58.D解析:putchar(c1)輸出1,putchar(c2)輸出2,printf('%c%c\\n',c5,c6)輸出45。

59.B

60.A解析:函數(shù)定義時如果數(shù)據(jù)類型默認,則默認為int。函數(shù)中如果有“retum(表達式):”語句,表達式的類型可能與函數(shù)的類型不一致,但它并不能改變函數(shù)的類型,實際情況是把表達式轉(zhuǎn)換為函數(shù)值的類型作為返回值,因此本題的函數(shù)值類型是int。

61.D按照m方式聲明的數(shù)組,系統(tǒng)會在數(shù)組尾部自動添加字符’\0’,因此m的長度比n大l。

62.B

63.B

64.A指針是用來指示一個內(nèi)存地址的變量,因此只能將地址賦給指針變量,而不能是整數(shù)或浮點數(shù)。

65.D

66.A

67.C

68.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運行中,當(dāng)局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

69.B#define命令是C語言的宏定義命令,標(biāo)識符一般使用大寫,為了區(qū)分其他標(biāo)識符,將標(biāo)識符定義為一個字符串,該標(biāo)識符被稱為宏名,被定義的字符串稱為替換文本。宏定義不進行其他操作,僅僅只是替換標(biāo)識符。后置自增運算:k++表示先運算,后自加。意思是遇到k++了,先把當(dāng)前的k的值拿來參加運算,后面再去管它的自加。SUB(a++,b++)一(a++)t(b++)—d}4。故答案為B選項。

70.D表達式(*q)++先取出q所指對象的值,再對該值遞增,計算中q的值不變。所以f函數(shù)的功能是將指針q所指的數(shù)加5。函數(shù)調(diào)用f(a);相當(dāng)于將數(shù)組a的第一個元素加5,操作后a[5]={10,4,3,2,1}。

71.A數(shù)據(jù)字典是在需求分析階段建立,在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實和完善的。故答案為A選項。

72.D

73.A用戶標(biāo)識符不能為關(guān)鍵字,只能由數(shù)字,字母和下劃線組成,而且第一個必須為字母或下劃線。

74.A解析:本題考查如何通過地址來引用數(shù)組元素。通過地址來引用數(shù)組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

75.D

76.C指針數(shù)組*alpha[6]實際上相當(dāng)于一個二維數(shù)組,而p是一個指向指針的指針,p=alpha后,引用p[x]便是引用數(shù)組*alpha[6]中的第x個數(shù)組元素的首地址,所以打印的結(jié)果應(yīng)當(dāng)為ABCDEFGHIJKLMNOP。

77.C在表達式中,其+=,-=的優(yōu)先級相同,按從右到左的結(jié)合方向運算,而*的優(yōu)先級最高,表達式寫成a=a+(a-(a*a)),代入3可得-12。

78.C

79.A題目中靜態(tài)局部變量a,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元,在程序整個運行期間都不釋放。所以第-次調(diào)用函數(shù)執(zhí)行n+=a++;時a先與n相加在再進行自增。n的值為4,a的值為2,且a變量執(zhí)行完后空間沒有釋放。再執(zhí)行s:。+f(a)時,s的值為4,調(diào)用f(a)函數(shù)時n的返回值為n=3+2=5,且此時a的值為3了。所以s的值為9。

80.Afun函數(shù)將空格之前的小寫字母修改為大寫字母,所以答案選A)。

81.(1)錯誤:switch(g);

\n正確:switch(g)

\n(2)錯誤:casel:case2:returnl;

\n正確:casel;case2:returnl;

\n【解析】此題考查C語言的語法規(guī)則,switch(表達式)后不應(yīng)該帶有“;”,case語句常量后應(yīng)該是“:”。

\nswitch語句的一般形式如下:

\nswitch(表達式){

\ncase常量表達式1:語句1;

\ncase常量表達式2:語句2;

\ncase常量表達式n:語句i;

\ndefault:語句n+1;

\n}

\n

82.voidfun(inta,intb,long*c){/*b%10獲取b的個位數(shù),a/10獲取a的十位數(shù),a%10獲取a的個位數(shù),b/10獲取b的十位數(shù)*/ *c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;}本題主要考核如何取出a和b的個位數(shù)和十位數(shù),取出后如何將其表示成c中相應(yīng)的位數(shù)。由于a和b都是只有兩位的整數(shù),因此分別對它們除以10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。將得到的數(shù)對應(yīng)乘以1000、100、10、1,即可得到c的千位數(shù)、百位數(shù)、十位數(shù)、個位數(shù)。注意使用c時要進行指針運算。2021年安徽省蚌埠市全國計算機等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下敘述中錯誤的是

A.在函數(shù)外部定義的變量在所有函數(shù)中都有效

B.在函數(shù)內(nèi)部定義的變量只能在本函數(shù)范圍內(nèi)使用

C.函數(shù)中的形參屬于局部變量

D.在不同的函數(shù)中可以使用相同名字的變量

2.下面關(guān)于數(shù)據(jù)庫系統(tǒng)中敘述正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型的一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

3.

4.已知數(shù)據(jù)表A中每個元素距其最終位置不遠,為節(jié)省時間,應(yīng)該采用的算法是()

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

5.設(shè)有定義語句:charc1=92,c2=92;則以下表達式中值為零的是()。

A.c1∧c2B.c1&c2C.~c2D.c1|c2

6.

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

A.結(jié)構(gòu)體變量中的成員可以是簡單變量、數(shù)組或指針變量

B.不同結(jié)構(gòu)體的成員名不能相同

C.結(jié)構(gòu)體定義時,其成員的數(shù)據(jù)類型可以是本結(jié)構(gòu)體類型

D.結(jié)構(gòu)體定義時,類型不同的成員項之間可以用逗號隔開

8.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.17,17,49,49B.17,29,49,49C.29,29,49,49D.49,49,49,49

9.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen(“myfile.dat”,“w”);fputs(“abc”,fp);fclose(fp);fp=fopen(“myfile.dat”,“a+”);fprintf(fp,“%d”,28);rewind(fp);fscanf(fp,“%s”,str);puts(str);fclose(fp);}程序的運行結(jié)果是()。

A.abcB.28cC.abc28D.因類型不一致而出錯

10.當(dāng)c的值不為0時,在下列選項中不能正確將c的值賦給變量a、b的是()。

A.c=b=a;B.(a=c)||(b=c)C.(a=c)&&(b=c);D.a=c=b;

11.若有定義“doublea=22;inti=0,k=18;”,則不符合C語言規(guī)定的賦值語句是()。

A.i=(a+k)<=(i+k);B.i=a%11;C.a=a++,i++;D.i=!a;

12.二維數(shù)組A的每個元素是由6個字符組成的串,其行下標(biāo)i=0,1,…,8,列下標(biāo)j=1,2,…,10。若A按行先存儲,元素A[8][5]的起始地址與當(dāng)A按列先存儲時的元素()的起始地址相同。設(shè)每個字符占一個字節(jié)。

A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]

13.

14.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運行后的輸出結(jié)果是()。

A.3,4,5,6,3,3,B.1,2,3,4,5,6,C.3,4,5,6,1,2,D.3,4,5,6,1,1,

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

A.C語言程序必須由一個或一個以上的函數(shù)組成

B.函數(shù)調(diào)用可以作為一個獨立的語句存在

C.若函數(shù)有返回值,必須通過return語句返回

D.函數(shù)形參的值也可以傳回給對應(yīng)的實參

16.有如下程序段:

inta=14,b=15,x;

charc='A';

x=(a&&b)&&(c<'B'):

執(zhí)行該程序后,x的值為()。A.A.trueB.falseC.0D.1

17.設(shè)變量已正確定義并賦值,下列表達式中正確的是()。

A.x=y+z+5,++yB.int(15.8%5)C.x=y*5=x+zD.x=25%5.0

18.若串S=,software,其子串的數(shù)目是()。

A.8B.37C.36D.9

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

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

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

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

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

20.以下能正確定義一維數(shù)組的選項是()。

A.inta[5]=(0,1,2,3,4,5);

B.chara[]={0,1,2,3,4,5);

C.chara={'A','B','C'};

D.inta[5]="0123";

二、2.填空題(20題)21.在C語言中(以16位PC機為例),一個float型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為4;一個double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為【】。

22.mystrlen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{intI;

for(I=0;【】!='\n';I++);

return(I);}

23.結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為自頂向下、逐步求精、______和限制使用goto語句。

24.以下程序運行后的輸出結(jié)果是()。

#include<stdio.h>

main()

{intx=20;

printf("%d",0<x<20);

printf("%d\n",0<x&&x<20);

}

25.數(shù)據(jù)流圖的類型有【】和事務(wù)型。

26.以下程序的功能是計算:s=1+12+123+1234+12345。請?zhí)羁铡?/p>

main()

{intt=0,s=0,i;

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

{t=i+______;s=s+t;}

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

}

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

main()

{

inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{

case0:m++;n++;break;

case10:n++;;break;

default:k++;n++;

}

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

}

28.軟件生命周期包括8個階段。為了使各時期的任務(wù)更明確,又可分為3個時期:軟件定義期、軟件開發(fā)期、軟件維護期。編碼和測試屬于【】期。

29.關(guān)系模型的3類完整性指的是【】、參照完整性、用戶定義的完整性。

30.下面程序執(zhí)行后k的值為【】。

inta=1,b=2,c=3,d=4,k;

k=a>b?a:c>d?c:d

31.問題處理方案的正確而完整的描述稱為______。

32.在面向?qū)ο蠓椒ㄖ?,類之間共享屬性和操作的機制稱為______。

33.有以下語句段

intnl=10,n2=20;

printf("______",n1,n2);

要求按以下格式輸出n1和n2的值,每個輸出行從第一列開始,請?zhí)羁铡?/p>

n1=10

n2=20

34.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內(nèi)容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");)

}

35.下面程序輸出的結(jié)果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}

36.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整形數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

37.解題方案的準(zhǔn)確而完整的描述稱為______。

38.函數(shù)sstrcmp的功能是對兩個字符串進行比較。當(dāng)s所指字符串和t所指字符串相等時,返回值為0;當(dāng)s所指字符串大于t所指字符串時,返回值大于0;當(dāng)s所指字符串小于t所指字符串時,返回值小于0(功能等同于庫函數(shù)strcmp)。請?zhí)羁铡?/p>

#include<stdio.h>

intsstrcmp(char*s,char*t)

{while(*s&&*t&&*s==【】)

{s++;t++;}

return【】;

}

39.下述函數(shù)統(tǒng)計一個字符串中的單詞個數(shù),單詞是指處在空格之間的字符序列,請?zhí)羁铡?/p>

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】='')flag=0;

elseif(【】){flag=1;num++}

}

return【】}

40.軟件的【】設(shè)計又稱為總體結(jié)構(gòu)設(shè)計,其主要任務(wù)是建立軟件系統(tǒng)的總體結(jié)構(gòu)。

三、1.選擇題(20題)41.以下程序的結(jié)果是()

main()

{unsignedinta=3,b=10;

printf("%d\n",a<<2|b>>1);

}

A.1B.5C.12D.13

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

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

43.在結(jié)構(gòu)化方法中,軟件功能分解屬于軟件開發(fā)中的______階段。

A.詳細設(shè)計B.需求分析C.總體設(shè)計D.編程調(diào)試

44.下列程序的執(zhí)行結(jié)果是()。#include<stdio.h>main(){inta,b,c;a=b=2:c=(a++)-1;printf("%d,%d",a,c);c+=(a+=-a+++(++B);printf("%d,%d",a,c);}

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

45.已有定義int(*p)(),指針p可以

A.代表函數(shù)的返回值B.指向函數(shù)的入口地址C.表示函數(shù)的類型D.表示函數(shù)返回值的類型

46.軟件需求分析一般應(yīng)確定的是用戶對軟件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

47.有以下程序:#include<stdio.h>main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后的輸出結(jié)果是()。

A.77B.88C.810D.1010

48.若有定義語句:inta[2][3],*p[33;,則以下語句中正確的是()。

A.p=a;B.p[0]=a;C.p[0]=&a[1][2];D.p[1]=&a

49.下列程序的輸出結(jié)果是______。main(){inta=12,b=12;printf("%d%d\n",--a,++b);

A.1010B.1212C.1110D.1113

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

現(xiàn)要將q和r所指結(jié)點的先后位置交換,同時要保持鏈表的連續(xù),以下錯誤的程序段是

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

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

C.p->next=r;q->next=r->next;r->next=q;

D.q->next=r->next;r->next=q;P->next=r;

51.若要說明一個類型名STP,使得定義語句STP軋等價于char*s;,以下選項中正確的是()。

A.typedefSTPchar*s;

B.typedef*charSTP;

C.typedefSTP*char;

D.typedefchar*STP;

52.關(guān)于語句“for(表達式1;表達式2;表達式3)”,下面說法中錯誤的是()。

A.for語句中的三個表達式不可以同時省略

B.for語句可以用于循環(huán)次數(shù)不確定的情況

C.for語句中表達式2可以是關(guān)系表達式或邏輯表達式

D.for語句中表達式1和表達式3可以是逗號表達式

53.C語言中不合法的字符串常量是

A.\121B.'Y'C.\n\nD.ABCD\x6d

54.有以下程序main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4:n+=2;k--;break;}printf("%d",n);}whUe(k>0&&n<5);}程序運行后的輸出結(jié)果是

A.235B.0235C.02356D.2356

55.軟件開發(fā)離不開系統(tǒng)環(huán)境資源的支持,其中必要的測試數(shù)據(jù)屬于A.硬件資源B.通信資源C.支持軟件D.輔助資源

56.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是()。

A.程序的規(guī)模B.程序的效率C.程序設(shè)計語言的先進性D.程序的易讀性

57.以下敘述正確的是

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

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

C.在C程序中,無論是整數(shù)還是實數(shù),都能被準(zhǔn)確無誤地表示

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

58.有以下程序

#include<stdio.h>

main()

{charc1,c2,c3,c4,c5,c6;

scanf("%c%c%c%c",&c1,&c2,&c3,&c4);

c5=getchar();c6=getchar();

putchar(c1);putchar(c2);

printf("%c%c\n",c5,c6);

}

程序運行后,若從鍵盤輸入(從第1列開始)

123<回車>

45678<回車>

則輸出結(jié)果是

A.1267B.1256C.1278D.1245

59.若有如下定義:unionaa{intn;charc[9];floatx;}a,b,c;則下列敘述中不正確的是()

A.unionaa是定義的共用體類型

B.a,b,c是定義的共用體類型名

C.n、c[9]和x是共用體的成員名

D.a,b,c是定義的共用體變量名

60.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

四、選擇題(20題)61.給出以下定義:

則正確的敘述為()。

A.數(shù)組m和數(shù)組n等價B.數(shù)組m和數(shù)組n的長度相同C.數(shù)組m的長度小于數(shù)組n的長度D.數(shù)組m的長度大于數(shù)組n的長度

62.

63.

64.以下關(guān)于指針概念不正確的是()。

A.指針變量可以用整數(shù)賦值,但不可以用浮點數(shù)賦值

B.一個變量的地址稱為該變量的指針,一個指針變量只能指向同一類型的變量

C.只有同一類型的變量地址才能放到指向該類型變量的指針變量之中

D.只能將地址賦給指針變量

65.

66.

67.

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

69.有以下程序

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

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

70.有以下程序:

程序運行后的結(jié)果是()。

A.6,4,3,2,1

B.6,5,4,3,2

C.5,4,3,2,1

D.10,4,3,2,l

71.下列關(guān)于數(shù)據(jù)庫設(shè)計的敘述中,正確的是()。

A.在需求分析階段建立數(shù)據(jù)字典

B.在概念設(shè)計階段建立數(shù)據(jù)字典

C.在邏輯設(shè)計階段建立數(shù)據(jù)字典

D.在物理設(shè)計階段建立數(shù)據(jù)字典

72.

73.下列定義變量的語句中正確的是()。

A)int_int;B)double3int_;

C)charfor;D)floatUS&;

74.若有定義:“inta[2][3];”,則對a數(shù)組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

75.

76.以下程序的輸出結(jié)果為

main()

{

char*alpha[6]={"ABCD","EFGH","IJKL","MNOP","QRST","UVWX"};

char**p;

inti;

p=alpha;

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

printf("%s",p[i]);

printf("\n");

}

A.ABCDEFGHIJKLB.ABCD

C.ABCDEFGHIJKLMNOPD.AEIM

77.若a為int類型,且其值為3,則執(zhí)行完表達式a+=a-=a*a后,a的值是()。A.A.-3B.9C.-12D.6

78.

79.有以下程序:

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

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

80.

五、程序改錯題(1題)81.下列給定程序中函數(shù)fun的功能是:用遞歸算法計算斐波拉契數(shù)列中第n項的值。從第l項起,斐波拉契數(shù)列為:1,1,2,3,5,8,13,21,…

例如,若給n輸入7,則該項的斐波拉契數(shù)值為l3。

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

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

試題程序:

#include<stdio.h>

longfun(intg)

{

//****found****

switch(g);

{

case0:return0;

//****found****

casel:case2:return1;

}

return(fun(g-1)+fun(g-2));

}

voidmain

{

longfib;intn;

printf("Inputn:");

scanf("%d",&n);

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

fib=fun(n);

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

}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將兩個兩位數(shù)的正整數(shù)a、b合并成一個整數(shù)放在c中。合并的方式是將a中的十位數(shù)和個位數(shù)依次放在c數(shù)的十位和千位上,b中的十位數(shù)和個位數(shù)依次放在c數(shù)的百位和個位上。例如,當(dāng)a=45,b=12時,調(diào)用該函數(shù)后,c=5142。注意:部分源程序給出如下。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入編寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>voidfun(inta,intb,long*c){}main(){ inta,b; longc; printf(“Inputa,b:”); scanf(“%d%d”,&a,&b); fun(a,b,&c); printf(“Theresultis:%ld\n”,c);}

參考答案

1.A全局變量有效范圍是從定義的位置開始到所在源文件的結(jié)束,在這區(qū)域內(nèi)的函數(shù)才可以調(diào)用,如果在定義函數(shù)之后,定義的變量,該變量不能被之前的函數(shù)訪問所以A選項說法錯誤,答案為A選項。

2.A\n數(shù)據(jù)的共享自身又

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論