2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第1頁
2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第2頁
2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第3頁
2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第4頁
2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年四川省內(nèi)江市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若d為double型變量,則表達式d=1,d+5,d++的值是()。

A.1B.6.0C.2.0D.1.0

2.設線性鏈表中結(jié)點的結(jié)構(gòu)為(data,next)。若想刪除結(jié)點p的直接后繼,則應執(zhí)行下列()操作。

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

B.p=p->nextp->next=p->next->next;

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

D.p=p->next->next;

3.在數(shù)據(jù)管理技術的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是()。

A.數(shù)據(jù)庫系統(tǒng)B.文件系統(tǒng)C.人工管理D.數(shù)據(jù)項管理

4.

5.一個棧的初始狀態(tài)為空?,F(xiàn)將元素1、2、3、4、5、A、B、C、D、E依次入棧,然后再依次出棧,則元素出棱的順序是()。A.A.12345ABCDEB.EDCBA54321C.ABCDEl2345D.54321EDCBA

6.若有定義“doublea;”,則正確的輸入語句是()。A.A.seaM("%1f",&a);B.scanf("%f",&a);

C.scanf("%1f",&a)

D.scanf("%1e",&a);

7.以下程序的輸出結(jié)果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147

8.設有定義“inta;floatb;”,執(zhí)行“scanf(“%2d%f”,&a,&b);”語句時,若從鍵盤輸入876543.0并按<Enter>鍵,則a和b的值分別是()。

A.87和6.0B.876和543.0C.87和543.0D.76和543.0

9.某二叉樹結(jié)點的中序序列為ABCDEFG,后序序列為BDCAFGE,則其左子樹中結(jié)點數(shù)目為()

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

10.程序運行后的輸出結(jié)果是()。A.0304.B.2050C.3344D.3040

11.閱讀下面程序段,則執(zhí)行后的結(jié)果為#include"stdio.h"main(){intm=4,n=2,k;k=fun(m,n);printf("%d\n",k);}fun(intm,intn){return(m*m*m-n*n*n);}

A.64B.8C.56D.0

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

A.a是實型變量,C允許進行賦值a=10,但不可以這樣說:實型變量中允許存放整型值

B.在賦值表達式中,賦值號左邊既可以是變量也可以是任意表達式

C.執(zhí)行表達式a=b后,在內(nèi)存中a和b存儲單元中的原有值都將被改變,a的值已由原值改變?yōu)閎的值,b的值由原值變?yōu)?

D.已有a=3,b=5,當執(zhí)行了表達式a=b,b=a之后,使a中的值為5,b中的值為3

13.一個有8個頂點的有向圖,所有頂點的入度出度之和與所有頂點的出度之和的差是()

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

14.以下關于C語言的敘述中正確的是()。

A.C語言中的注釋不可以夾在變量名或關鍵字的中間

B.C語言中的變量可以在使用之前的任何位置進行定義

C.在C語言算術表達式的書寫中,運算符兩側(cè)的運算數(shù)類型必須一致

D.C語言的數(shù)值常量中夾帶空格不影響常量值的正確表示

15.下列數(shù)據(jù)模型中,具有堅實理論基礎的是()。

A.關系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是

16.若以下變量均是整型,且num=sum=7;則執(zhí)行表達式sum=num++,sum++,++num后sum的值為()。

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

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

A.軟件交付使用后還需要進行維護

B.軟件一旦交付使用就不需要再進行維護

C.軟件交付使用后其生命周期就結(jié)束

D.軟件維護是指修復程序中被破壞的指令

18.若有定義“inta,b,c;”以下程序段的輸出結(jié)果是()。a=11;b=3;c=0;printf(“%d\n”,c=(a/b,a%b));

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

19.

有以下程序

#include<stdio.h>

main

{inta=1,b=2,c=3,x;

x=(a^b)&C;printf("%d",x);

}

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

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

20.如果對線性表的操作只有兩種,即刪除第一個元素,在最后一個元素的后面插入新元素,則最好使用()。

A.只有表頭指針沒有表尾指針的循環(huán)單鏈表B.只有表尾指針沒有表頭指針的循環(huán)單鏈表C.非循環(huán)雙鏈表D.循環(huán)雙鏈表

二、2.填空題(20題)21.軟件危機的核心問題是【】和軟件開發(fā)效率低。

22.在程序設計階段應該采取【】和逐步求精的方法,把一個模塊的功能逐步分解,細化為一系列具體的步驟,進而用某種程序設計語言寫成程序。

23.以下程序?qū)?shù)組a的4個元素和數(shù)組b的6個元素寫到名為lett.dat的二進制文件中,請?zhí)羁铡?/p>

#include<stdio.h>

#include<stdlib.h>

main()

{FILE*fp;

chara[5]="1234",b[7]="abcedf";

if((fp=fopen("【】","wb"))==NULL)exit(0);

fwrite(a,sizeof(char),4,fp);

fwrite(b,【】,1,fp);

fclose(fp);

}

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

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\N,*p,*q))

}

25.寫出下列程序的執(zhí)行結(jié)果。swap(p1,p2)int*p1,*p2;{intp;p=*p1;*p1=*p2;*p2=p;}main(){inta,b,*p1,*p2;scanf("%d%d",&a,&B);p1=&a;p2=&b;if(a<B)swap(p1,p2);printf("\na=%d,b=%d\n",a,B);}若a=7,b=8,則程序的運行結(jié)果為()。

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

#include<stdio.h>

main()

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

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

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

}

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

}

27.下面函數(shù)的功能是:找出一維數(shù)組元素中最大的值和它所在的下標,最大的值和它所在的下標通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標。請?zhí)羁铡?/p>

#include<stdlib.h>

#include<stdio.h>

voidfun(inta[],intn,int*max,int*d)

{intI;

*max=a[0];

*d=0;

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

if(*max<【】)

{*max=a[I];*d=i;}}

main()

{inti,x[20],max,index,n=10;

randomize();

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

{x[i]=rand()%50;printf("%4d",x[i]);}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",max,index);}

28.以下程序調(diào)用函數(shù)swap_p將指針s和t所指單元(a和b)中的內(nèi)容交換,請?zhí)羁铡?/p>

main()

{inta=10,b=20,*s,*t;

s=&a;t=&b;

swap_p(【】);

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

swap_p(int**ss,int**tt)

{intterm;

term=**ss;

**ss=**tt;

**tt=term;}

29.開發(fā)軟件所需要的高成本和產(chǎn)品的低質(zhì)量之間有著尖銳的矛盾,這種現(xiàn)象被人們稱之為【】。

30.下列程序的輸出結(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);

}

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

charb[]="ABCD";

main()

{

charb[30];

strcpy(&b[0],"GH");

strcpy(&b[1],"GH");

strcpy(&b[2],"GH");

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

}

32.如果一個工人可管理多個設施,而一個設施只被一個工人管理,則實體“工人”與實體“設備”之間存在______聯(lián)系。

33.以下程序是從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們的和。請?zhí)?/p>

main()

{

inti,a[20],sum,count;

sum=count=【】;

for(i=0;i<20;i++)scanf("%d("%d",【】);

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

{

if(a[i]>0)

{count++;

sum+=【】;

}

}

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

}

34.以下程序輸出的最后一個值是【】。

intff(intn)

{staticintf=1;

f=f*n;

retumf;

}

main()

{inti;

for(i=1;i<=5;i++)printf("%d\n",ff(i))i

}

35.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護o

36.以下程序用于判斷a、b、c能否構(gòu)成三角形,若能,輸出YES,否則輸出NO。當給a、b、c輸入三角形三條邊長時,確定a、b、c能構(gòu)成三角形的條件是需同時滿足三個條件:a+b>c,a+c>b,b+c>a。請?zhí)羁铡?/p>

main()

{floata,b,c;

scanf("%f%f%f",&a,&b,&c);

if(【】)printf("YES\n");/*abc能構(gòu)成三角形*/

elseprintf("NO\n");/*abc不能構(gòu)成三角形*/

}

37.若有如下定義:

int[]={11,24,56,19,29,39),*t=s;

則不移動指針t,且通過指針t引用數(shù)組中值為29的元素的表達式是【】。

38.軟件結(jié)構(gòu)是以【】為基礎而組成的一種控制層次結(jié)構(gòu)。

39.實現(xiàn)算法所需的存儲單元多少和算法的工作量大小分別稱為算法的【】。

40.若有定義floatb[15],*p=b;,且數(shù)組b的首地址為200H,則p+13所指向的數(shù)組元素的地址為______。

三、1.選擇題(20題)41.以下不能定義為用戶標識符的是()。

A.scanfB.VoidC.3comD.int

42.下面程序的功能是把316表示為兩個加數(shù)的和,使兩個加數(shù)分別能被13和11整除,請選擇填空。#include<stdio.h>main(){inti=0,j,k;do{i++;k=316-13*i}while(______);j=k/11;printf("316=13*%d+11,%d”,i,j);}

A.k/11B.k%11C.k/11==0D.k%11==0

43.下面程序的輸出結(jié)果是______。main(){inta[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int(*p)[4]=a,i,j,k=0;for(i=0;i<3;i++)for(j=0;j<2;j++)k=p[i][j];printf("%d\n",k);}

A.17B.18C.19D.23

44.已定義下列函數(shù):intfun(int*p){return*p;)fun函數(shù)返回值是()。

A.不確定的值B.一個整數(shù)C.形參p中存放的值D.形參p的地址值

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

A.階段性報告B.需求評審C.總結(jié)D.都不正確

46.以下程序的輸出結(jié)果是()main(){inta=2,k;for(k=0;k<3;k++)printf("%4d",f1(a));}f1(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}

A.777B.71013C.7911D.789

47.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}執(zhí)行后輸出結(jié)果是()。

A.賦初值的字符串有錯B.6,7C.5,6D.6,6

48.字符串"\\\'abcd\123\xAB\t"的長度是()。

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

49.設有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);則

A.運行程序段后輸出0B.運行程序段后輸出1C.程序段中的控制表達式是非法的D.程序段執(zhí)行無限次

50.下列正確的實型常量是()。

A.E3.4B.-12345C.2.2e0.8D.4

51.有以下結(jié)構(gòu)體說明和變量定義,如下圖所示,指針p、q、r分別指向一個鏈表中的3個連續(xù)結(jié)點。structnode{intdata;structnode*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->neaxt;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;

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

A.C語句必須以分號結(jié)束

B.復合語句在語法上被看做一條語句

C.空語句出現(xiàn)在任何位置都不會影響程序運行

D.賦值表達式末尾加分號就構(gòu)成賦值語句

53.以下定義語句中正確的是()。

A.chara='A'b='B';

B.floata=b=l0.0;

C.inta=l0,*b=&a;

D.float*a,b=&a;

54.已知形成鏈表的存儲結(jié)構(gòu)如下圖所示,則下述類型描述中的空白處應填______。structlink{chardata;______,}node;

A.structlinknext

B.link*next

C.stuctnextlink

D.structlink*next

55.讀取二進制文件的函數(shù)調(diào)用形式為:fread(buffer,size,count,pf);,其中buffer代表的是()。

A.一個文件指針,指向待讀取的文件

B.一個整型變量,代表待讀取的數(shù)據(jù)的字節(jié)數(shù)

C.一個內(nèi)存塊的首地址,代表讀入數(shù)據(jù)存放的地址

D.一個內(nèi)存塊的字節(jié)數(shù)

56.下列敘述中,不屬于測試的特征的是

A.測試的挑剔性B.完全測試的不可能性C.測試的可靠性D.測試的經(jīng)濟性

57.有如下程序:main(){intn=9;while(n>6){n--;printf("%d",n);}}該程序的輸出結(jié)果是

A.987B.876C.8765D.9876

58.下列程序的輸出結(jié)果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}

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

59.有以下程序voidfun(char*a,char*b){a=b;(*a)++;}main(){charcl='A',c2='a',*p1,*p2;p1=&c1;p2:&c2;fun(p1,p2);printf("%c%c\n",c1,c2);}程序運行后的輸出結(jié)果是

A.AbB.aaC.AaD.Bb

60.有下列程序:fun(intx,inty){return(x+y);}main(){inta=1,b=2,c=3,sum;sm=fun((a++,b++,a+B),c++);printf("%d\n",sum);}執(zhí)行后的輸出結(jié)果是()。

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

四、選擇題(20題)61.下面不屬于軟件工程三要素的是()。

A.方法B.環(huán)境C.工具D.過程

62.設x,y和z都是int型變量,且x=3,y=4,z=5,則下列表達式中,值為0的表達式是

A.x&&yB.x<=y

C.x||++y&&y-zD.!(x<y&&!z||1)

63.有定義語句:chars[10];,若要從終端給s輸入5個字符,錯誤的輸入語句是()。

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

A.存儲空間不一定連續(xù),且各元素的存儲順序是任意的

B.存儲空間不一定連續(xù),且前件元素一定存儲在后件元素的前面

C.存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面

D.存儲空間必須連續(xù),且各元素的存儲順序是任意的

64.

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

A.c語言中的每條可執(zhí)行語句和非執(zhí)行語句最終都將被轉(zhuǎn)換成二進制的機器指令

B.c程序經(jīng)過編譯、連接步驟之后才能形成一個真正可執(zhí)行的二進制機器指令文件

C.用c語言編寫的程序稱為源程序,它以ASCIl代碼形式存放在一個文本文件中

D.c語言源程序經(jīng)編譯后生成后綴為.obj的目標程序

66.

67.有以下程序段

main()

{inta=5,*b,**c;

c=&b;b=&a;

……

}

程序在執(zhí)行了c=&b;b=&a;語句后,表達式:**c的值是()

A.變量a的地址

B.變量b中的值

C.變量a中的值

D.變量b的地址

68.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,C;

C=a>>3:

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

}

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

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

69.軟件設計中模塊劃分應遵循的準則是()。A.低內(nèi)聚低耦合

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

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

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

70.

71.

72.

73.有以下程序段程序的輸出結(jié)果是()。

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

74.下面屬于黑盒測試方法的是()。

A.邊界值分析B.路徑覆蓋C.語句覆蓋D.邏輯覆蓋

75.

76.有以下程序:

#include<stdio.h>

main()

{inta;

scanf("%d",&a);

if(a++<9)printf("%d\n",a);

clscprintf("%d\n",a--);

}

程序運行時從鍵盤輸入9<回車>,則輸出結(jié)果是()。

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

77.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inta=3,b=2,c=1;if(a<b)if(b<0)c=0;elsec++:printf("%d\n",c);}A.2B.0C.1D.不確定的值

78.語句int(*ptr)的含義是()。

A.ptr是一個返回值為int的函數(shù)

B.ptr是指向int型數(shù)據(jù)的指針變量

C.ptr是指向函數(shù)的指針,該函數(shù)返回一個int型數(shù)據(jù)

D.ptr是一個函數(shù)名,該函數(shù)的返回值是指向int型數(shù)據(jù)的指針

79.結(jié)構(gòu)化程序設計的主要特征是()。

A)封裝和數(shù)據(jù)隱藏B)集成和重用

C)數(shù)據(jù)和處理數(shù)據(jù)的過程分離D)把數(shù)據(jù)和處理數(shù)據(jù)的過程看成一個整體

80.

五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc的功能是:判斷字符ch是,與str所指字符串中的某個字符相同;若相同,則什么也不做,若不同,則將其插在串的最后。請修改程序中的錯誤,使它能得出正確的結(jié)果。

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

試題程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>

//****found****

voidproc(charstr,charch)

{

while(*str&&*str!=ch)str++;

//****found****

if(*str==ch)

{str[0]=ch;

//****found****

str[1]=0:

}

}

voidmain

{

charstr[81],ch;

system("CLS");

printf("\nPleaseenterastring:");

gets(str);

printf("\nPleaseenterthecharacterto

search:");

ch=getchar;

proc(str,ch);

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

}

六、程序設計題(1題)82.學生的記錄由學號和成績組成,M名學生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組stu中,請編寫函數(shù)proc(),該函數(shù)的功能是:把高于等于平均分的學生數(shù)據(jù)放在b所指的數(shù)組中,高于等于平均分的學生人數(shù)通過形參n傳回,平均分通過函數(shù)值返回。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.A

3.A在數(shù)據(jù)管理技術的發(fā)展過程中,經(jīng)歷了人工管理階段、文件系統(tǒng)階段和數(shù)據(jù)庫系統(tǒng)階段。其中數(shù)據(jù)獨立性最高的階段是數(shù)據(jù)庫系統(tǒng)這一階段。數(shù)據(jù)庫系統(tǒng)階段用數(shù)據(jù)模型來表示復雜的數(shù)據(jù),有較高的數(shù)據(jù)獨立性。數(shù)據(jù)庫系統(tǒng)為用戶提供了方便的用戶接口,用戶既可使用查詢語言或終端命令操作數(shù)據(jù)庫,也可以用程序方式來操作。數(shù)據(jù)庫管理系統(tǒng)提供了數(shù)據(jù)控制功能。

4.A

5.B棧是先進后出的原則組織數(shù)據(jù),所以人棧最早的最后出棧,所以選擇B。

6.D本題考查seanf函數(shù)的調(diào)用形式:scanf(格式字符串,輸入項地址表)。題中定義變量a為雙精度型變量,雙精度變量的格式符為“l(fā)e”;變量的地址用取地址符“&”加變量名表示,所以選項D正確。

7.B第一個for循環(huán)的作用是讓p指向每行的首地址,第二個for循環(huán)的作用是把它指向的字符串輸出,故選擇B選項。

8.Ascanf函數(shù)中,在格式字符前加入一個整數(shù)可以指定輸入數(shù)據(jù)所占的寬度,所以賦值時會將87賦給變量a,把6.0賦給float型變量b。故本題答案為A選項。

9.C

10.D[解析]第一次循環(huán)溈0.i%2為0.執(zhí)行switch(a[0]%62)中的case0語句后內(nèi)容即a[0]++,a[0]的值變成3;第二次循環(huán)的值為1.i%62為1.執(zhí)行case1:a[]=0;所以a[1]的值變成0;第三次循環(huán)的值為2.i%62為0.執(zhí)行switch([2]%62)中的case1語句后的內(nèi)容a[2]--,a[2]的值變成4;第四次循環(huán)的值為3.i%2為1.執(zhí)行case1:ai]=0;所以a[3]的值變成0.

11.C解析:如果沒有指明函數(shù)值類型,則默認函數(shù)返回值的類型為int型。注意:順序程序結(jié)構(gòu)的執(zhí)行過程。

12.AC語言中語法上規(guī)定實型變量是不能存放整型類型的數(shù)據(jù)的,整型數(shù)據(jù)也不能存放實型數(shù)據(jù)。是為了避免類型轉(zhuǎn)換之間可能會發(fā)生的錯誤。

13.C

14.B解析:C語言中注釋可以放在任何位置,選項A錯誤;C語言中的變量只要在使用之前定義即可,位置可以是使用前的任何位置,故選項B正確;C語言中兩側(cè)數(shù)據(jù)類型可以不一致,系統(tǒng)可進行強制類型轉(zhuǎn)換,選項C錯誤;C語言數(shù)值常量中不允許存在空格,選項D錯誤。

15.A解析:在層次模型和網(wǎng)狀模型的系統(tǒng)研究和數(shù)據(jù)庫設計中,其性能和質(zhì)量主要決定于設計者的經(jīng)驗和技術水平,缺乏一定的理論指導。關系模型有堅實的理論基礎,它以數(shù)學理論為基礎,從而避免了層次模型和網(wǎng)狀模型系統(tǒng)中存在的問題。

16.A

17.A解析:維護是軟件生命周期的最后一個階段,也是持續(xù)時間最長、付出代價最大的階段。軟件工程學的目的就在于提高軟件的可維護性,同時也要設法降低維護的代價。

軟件維護通常有以下四類;

①為糾正使用中出現(xiàn)的錯誤而進行的改正性維護;

②為適應環(huán)境變化而進行的適應性維護;

③為改進原有軟件而進行的完善性維護;

④為將來的可維護和可靠而進行的預防性維護。

軟件維護不僅包括程序代碼的維護,還包括文檔的維護。文檔可以分為用戶文檔和系統(tǒng)文檔兩類。但無論是哪類文檔,都必須與程序代碼同時維護。只有與程序代碼完全一致的文檔才有意義和價值。由此可知,本題中選項B、C、D中的說法都是錯誤的。

18.AC語言中,逗號運算符可以把兩個以上(包含兩個)的表達式連接成一個表達式。逗號運算符的優(yōu)先級是所有運算符中級別最低的,逗號運算符保證左邊的子表達式運算結(jié)束后才進行右邊的子表達式的運算。也就是說,逗號運算符是一個序列點,其左邊所有子表達式運算都結(jié)束后,才對其右邊的子表達式進行運算,并以最右邊表達式的值作為整個逗號表達式的值。因此c的值為“a%b”,即“11%3=2”。故本題答案為A選項。

19.D

\n首先計算1與2的或運算,再將其結(jié)果與3進行“與”運算,結(jié)果為00000011,即十進制數(shù)3。

\n

20.B

21.軟件質(zhì)量差軟件質(zhì)量差解析:大約在20世紀60年代末人們在計算機軟件的開發(fā)和維護過程中,遇到了一系列嚴重問題,從而認識到軟件危機的存在。軟件危機的核心問題是軟件開發(fā)的質(zhì)量太差和軟件系統(tǒng)開發(fā)的效率太低。

22.自頂而下自頂而下

23.lett.dat6*sizeof(char)lett.dat6*sizeof(char)解析:本題主要考查函數(shù)fwrite(char*pt,unsignedsize,unsignedn,F(xiàn)ILE*fp),把pt所指向的n*size個字節(jié)輸出到fp所指定的文件中。

24.3535解析:函數(shù)swap(int*a,int*b)的功能是實現(xiàn)*a和*b中兩個數(shù)據(jù)的交換,在主函數(shù)中調(diào)用swap(p,q)后,形參指針變量a和b分別指向i和j,在swap(int*a,int*b)執(zhí)行完后,指針變量a和b分別指向j和i,而指針變量p,q所指向變量的值沒有發(fā)生變化,所以輸出結(jié)果為35。

25.a=8b=7

26.2121解析:本題考查switch語句。首先x=1,執(zhí)行switch(y),因為y=0,所以執(zhí)行case0:a++;break;此時a=1執(zhí)行case2:a++;b++;這時a=2,b=1;最后輸出結(jié)果是21。

27.I<na[I]I<n,a[I]解析:該程序直接使用形參max和d,由于它們都是指針變量,所以要引用它們所指向的變量時,要對它們進行指針運算,即*號運算。

28.&s&t&s,&t解析:指針做函數(shù)參數(shù)時,形參和實參指向同一個數(shù)據(jù),所以函數(shù)中對形參所指向的數(shù)據(jù)的改變也能影響到實參。本題中函數(shù)swap_p的形參為指向指針的指針,即雙重指針,原理跟普通的指針是一樣的。注意:通過指針來引用一個存儲單元。

29.軟件危機軟件危機

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

31.GGGHGGGH解析:由于在函數(shù)main中定義了數(shù)組變量b,其將屏蔽全局變量b。對于一維數(shù)紐變量,其值為一常數(shù),等于數(shù)組首元素地址。strcpy(&b[0],'GH'),是將字符串'GH'復制到數(shù)組b中從首元數(shù)開始的空間中,此是b中的字符串為”叫”:strcpy(&b[1],'GH'),是將字符串'GH'復制到數(shù)組b中從第二個元素開始的空間中,此是b中的字符串為“GH”。執(zhí)行第三次strcpy函數(shù)后,b中的字符串為'GGGH'。

32.一對多(或1:N)一對多(或1:N)

33.0&a[i]a[i]0\r\n&a[i]\r\na[i]解析:本題要求從終端讀入數(shù)據(jù)到數(shù)組中,統(tǒng)計其中正數(shù)的個數(shù),并計算它們的和。程序中首先要對存放正數(shù)個數(shù)的變量count及存放和值的變量sum初始化為0,所以第一空應填0。接著要求從終端讀入數(shù)據(jù)到數(shù)組中,可以通過scanf函數(shù)實現(xiàn),因此第二空應填&a[i]。最后通過sum+=a[i];語句累加正數(shù)a[i]的值到sum中,因此第三空應填a[i]。

34.120120解析:靜態(tài)變量的類型說明符是static,靜態(tài)局部變量屬于靜態(tài)存儲方式,它具有以下特點:

①靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運行期間都不釋放。

②對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值一次,在程序運行時它已有初值。以后每次調(diào)用函數(shù)時不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。

③如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯對自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。(注意:C語言中的非靜態(tài)變量在定義時,系統(tǒng)并不會自動給它賦初值)

④雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后仍然存在,但其他函數(shù)是不能引用它的。

本題中函數(shù)的功能是:與for語句一起求一個整數(shù)的階乘。

35.完善性完善性解析:軟件維護活動包括以下幾類:改正性維護、適應性維護、完善性維護和預防性維護。完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。

36.(a+b>c)&&(a+c>b)&&(b+c>a)(a+b>c)&&(a+c>b)&&(b+c>a)解析:三角形形式的條件是兩邊之和大于第三邊。要用'&&'指令連接三個條件,表示三個條件都要滿足。

37.*(t+4)*(t+4)解析:本題定義了指針變量t,并用數(shù)組s的首地址給它賦初值。t+4代表數(shù)組第6個元素的地址,*(t+4)是取得該地址中的值即29,而此時并沒有移動指針t。

38.模塊模塊

39.空間復雜度和時間復雜度算法的復雜性是指對一個在有限步驟內(nèi)終止算法和所需存儲空間大小的估計。算法所需存儲空間大小是算法的空間復雜性,算法的計算量是算法的時間復雜性。

40.252H252H解析:要解答本題,首先要明白在對指針進行加,減運算時,數(shù)字“1”不是十進制數(shù)的“1”,而是指“1”個存儲單元長度。1個存儲單元長度占存儲空間的多少,應該視具體情況而定,如果存儲單元的基類型是血型,則移動1個存儲單元的長度就是位移2個字節(jié);如果存儲單元基類型是float型,則移動1個存儲單元的長度就是位移4個字節(jié)。所以p+13所指向的數(shù)組元素的地址為:200H+(13*4)H=252H。

41.D解析:標識符是C語言中用來表示變量名、數(shù)組名、函數(shù)名、指針名、結(jié)構(gòu)名、聯(lián)合名、枚舉常數(shù)名、用戶定義的數(shù)據(jù)類型名、語句標號等用途的字符序列。標識符由1~32個字符組成,第一個字符必須是字母或下劃線,后面的字符可以是字母、數(shù)字或下劃線。標識符不能與C關鍵字相同,并區(qū)分大小寫。選項D)錯誤,因為int是C語言中的關鍵字。

42.B解析:本題的關鍵是兩個加數(shù)分別能被13和11整除。當k%11的值為0時,則退出循環(huán),將執(zhí)行j=k/11;語句,輸出結(jié)果,所以該表達式合理的條件是k%11。

43.C解析:p是指向長度為4的一維數(shù)組的指針變量,可看作是二維數(shù)組a的行指針,可以像使用數(shù)組名一樣通過p帶數(shù)組下標的形式來引用數(shù)組中元素,變量k最后是元素a[2][1]的值。

44.B解析:由函數(shù)intfun(int*p){return*p;}的定義可知,返回值為整型指針變量p所指向的數(shù)據(jù)。

45.B解析:需求分析是軟件定義時期的最后一個階段??梢愿爬?個方面:①需求獲??;②需求分析;⑧編寫需求規(guī)格說明書;④需求評審。

46.D解析:程序中使用一個for循環(huán),3次輸出函數(shù)f1(2)的返回值。f1()函數(shù)中存在一個靜態(tài)局部變量c,第1次調(diào)用f1()函數(shù)返回a+b+c=2+1+4=7,c變?yōu)?,第2次調(diào)用返回2+1+5=8,c變?yōu)?,第3次返回2+1+6=9。所以正確答案是D。

47.C解析:本題在定義字符數(shù)組時沒有定義數(shù)組長度,但用字符常量給數(shù)組賦了初值,這時初值的個數(shù)即為數(shù)組的長度,故數(shù)組長度為6(包括'\\0')。字符串的長度為有效字符的個數(shù)5。strlen(s)返回值為串中字符的個數(shù)(不計最后的'\\0'),則輸出值為5。sizeof(s)計算數(shù)組所占的字節(jié)數(shù),包含'\\0',則輸出值為6。因此,C選項正確。

48.C解析:本題中的字符串出現(xiàn)了5個轉(zhuǎn)義字符\\\\、\\\\'、\\123、\\xAB、\\t和4個字符‘a(chǎn)’、‘b’、‘c’、‘d’,所以字符串的長度是9,選項C符合題意。

49.B解析:本題考查while語句的使用。本題考查邏輯非運算符和不等于運算符的區(qū)別,邏輯非運算符'!'的優(yōu)先級大于不等于運算符'!='的優(yōu)先級。

50.B解析:實型常量有兩種書寫形式。①小數(shù)形式,它由符號、整數(shù)部分、小數(shù)點及小數(shù)部分組成;②指數(shù)形式,由十進制小數(shù)形式加上指數(shù)部分組成,其形式為:十進制小數(shù)e指數(shù)或十進制小數(shù)E指數(shù)。

注:e或E后面的指數(shù)必須是整數(shù),并且在e或E的前面必須有數(shù)字。本題中,選項A)中E的前面沒有數(shù)字,因此錯誤。選項C)中0.8不是整數(shù),因此錯誤。選項D)中4是整型常量而不是實型常量。

51.A解析:題目中要求將q和r所指結(jié)點的先后位置交換,即要求p所指結(jié)點的指針域指向r所指向的結(jié)點,r所指向結(jié)點的指針域指向q所指向的結(jié)點,q所指向結(jié)點的指針域指向r所指向的結(jié)點。選項A首先讓r所指向指針的指針域指向q所指向的結(jié)點,這樣就將r所指向結(jié)點的指針域指向的結(jié)點丟失了,故選項A錯誤。選項B首先讓q所指向結(jié)點的指針域指向r所指向結(jié)點的指針域所指向的結(jié)點,然后,讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,最后讓r所指向結(jié)點的指針域指向q所指向的結(jié)點,滿足要求,故選項B正確。選項C首先讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,然后讓q所指向結(jié)點的指針域指向r所指向結(jié)點的指針域所指向的結(jié)點,最后讓r所指向結(jié)點的指針域指向q所指向的結(jié)點,滿足要求,故選項C正確。選項D首先讓q所指向結(jié)點的指針域指向r所指向結(jié)點的指針域所指向的結(jié)點,然后,讓r所指向結(jié)點的指針域指向q所指向的結(jié)點,最后讓p所指向結(jié)點的指針域指向r所指向的結(jié)點,滿足要求,故選項D正確。所以,4個選項中選項A符合題意。

52.C解析:C程序中所有語句都必須由一個分號“;”作為結(jié)束符。如果只有一個分號,這個分號也是一條語句,稱為“空語句”,程序執(zhí)行時不產(chǎn)生任何動作。程序設計中有時需要加一個空語句來表示存在一條語句,但隨意加分號也會導致邏輯上的錯誤,影響程序的運行。所以選項C的說法是錯誤的。

53.C解析:C語言中可以同時定義多個變量,但變量之間必須用“,”隔開,顯然,選項A中少了一個逗號“,”,故選項A不正確;選項B中定義變量時用了連續(xù)的賦值語句,這在定義變量是不正確的,故選項B不正確:選項D定義了一個float型指針a,然后定義了一個float型變量b,并。讓這個變量的初值為指針變量a的地址,顯然這是錯誤的,除非b是指向float型指針變量的指針。故選項D不正確,所以選項C符合題意。

54.D解析:在單向鏈表中,由于每個結(jié)點需要存儲下一個結(jié)點的地址,且下—個結(jié)點的數(shù)據(jù)類型與前—個結(jié)點的數(shù)據(jù)類型完全相同,故應為structlink*next。

55.C解析:本題考查的重點是對fread函數(shù)的理解。fread函數(shù)中,buffer是接收讀入數(shù)據(jù)的內(nèi)存區(qū)域的指針,因此選項C是正確的。

56.C解析:軟件測試的目標是在精心控制的環(huán)境下執(zhí)行程序,以發(fā)現(xiàn)程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經(jīng)濟性。其中沒有測試的可靠性這一說法。注意:軟件測試與軟件調(diào)試的概念,以及相應的方法。

57.B解析:該題目應該根據(jù)循環(huán)體第一次和最后一次執(zhí)行時的輸出結(jié)果來決定哪一項是正確的。第一次進入循環(huán)時,n的值是9,循環(huán)體內(nèi),先經(jīng)過n--運算,n的值變?yōu)?,所以第一次的輸出值是8,由此可以排除選項A)和D)。由循環(huán)條件n>6可以知道,最后一次循環(huán)開始時,n的值應該為7,所以最后一次執(zhí)行循環(huán)時,輸出為6,由此可以排除選項C)。

58.C解析:本題考查if語句。先判斷if語句的條件是否成立,++a=1>0,此條件成立,又因為是進行邏輯或運算,在已知其中一個運算對象為真的情況下,不必判斷另外一個運算符的真假,即不進行++b操作,就可以直接得出整個表達式的值為邏輯1,執(zhí)行下列的++c。

59.A解析:指針作為函數(shù)參數(shù)的運用,經(jīng)過分析得知fun()函數(shù)的功能:將形參a指向形參b所指的存儲空間,然后使形參a指向變量的值加1。在主函數(shù)中定義了字符型指針變量p1和p2,并讓它們分別指向“c1和c2。然后將p1、p2作為實參傳遞給形參a、b。在fun()函數(shù)中,首先讓指針變量p1指向P2,然后P1指向的存儲空間的值加1,即讓變量c2加1為“b”,而c1的值沒有被改變,仍然是“A”。

60.C解析:函數(shù)fun(intx,inty)的功能是返回兩個整型數(shù)據(jù)的和。在主函數(shù)中,變量a,b,c的初始值分別為1,2,3。因此逗號表達式“a++,b++,a+b”的值等于5,表達式c++的值為3,調(diào)用于函數(shù)的表達式為“fun(5,3);”,其返回值等8。所以變量sum的值等于8。

61.B\n軟件工程包括三個要素:方法、工具和過程。軟件工程方法為軟件開發(fā)提供了”如何做”的技術。工具支付軟件的開發(fā)、管理、文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制、管理。

\n

62.D在本題中,定義了三個整型變量x,y,z,并分別賦初值為3,4,5。然后求結(jié)果為0的表達式。

選項A中的表達式x&&y,由于在C語言中,有非0即真的定義,即變量x,y的值都不為0,因此表達式的結(jié)果不為0。

選項B中的表達式x<=y,由于變量y的值比變量x的值大,因此,該表

溫馨提示

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

評論

0/150

提交評論