![2021年陜西省渭南市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第1頁](http://file4.renrendoc.com/view/0c870e756357b23a6c102c550881f928/0c870e756357b23a6c102c550881f9281.gif)
![2021年陜西省渭南市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第2頁](http://file4.renrendoc.com/view/0c870e756357b23a6c102c550881f928/0c870e756357b23a6c102c550881f9282.gif)
![2021年陜西省渭南市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第3頁](http://file4.renrendoc.com/view/0c870e756357b23a6c102c550881f928/0c870e756357b23a6c102c550881f9283.gif)
![2021年陜西省渭南市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第4頁](http://file4.renrendoc.com/view/0c870e756357b23a6c102c550881f928/0c870e756357b23a6c102c550881f9284.gif)
![2021年陜西省渭南市全國計算機等級考試C語言程序設(shè)計真題(含答案)_第5頁](http://file4.renrendoc.com/view/0c870e756357b23a6c102c550881f928/0c870e756357b23a6c102c550881f9285.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2021年陜西省渭南市全國計算機等級考試C語言程序設(shè)計真題(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。
A.15,12,9,B.15,13,11,C.15,11,7,D.15,15,15,
2.若a是數(shù)值類型,則邏輯表達式(a==1)II(a!=1)的值是()。
A.1B.0C.2D.不知道a的值,不能確定
3.設(shè)a、b和c都是int型變量,且a=3、b=4、c=5,則下面的表達式中,值為0的表達式是______。
A.'a'&&'b'
B.a<=b
C.a||+c&&b-c
D.!((a<b)&&!c||1)
4.樹是結(jié)點的集合,它的根結(jié)點數(shù)目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
5.在下列幾種排序方法中,要求內(nèi)存量最大的是______。
A.插入排序B.選擇排序C.快速排序D.歸并排序
6.以下敘述中錯誤的是()。
A.向量屬于線性結(jié)構(gòu)B.二叉鏈表是二叉樹的存儲結(jié)構(gòu)C.棧和隊列是線性表D.循環(huán)鏈表是循環(huán)隊列的鏈?zhǔn)酱鎯Y(jié)構(gòu)
7.棧和隊列的共同點是()。
A.都是先進先出B.都是先進后出C.只允許在端點處插入和刪除元素D.沒有共同特點
8.下列敘述中正確的是()。
A.測試工作必須由程序編制者自己完成
B.測試用例和調(diào)試用例必須一致
C.一個程序經(jīng)調(diào)試改正錯誤后,一般不必再進行測試
D.上述三種說法都不對
9.若有定義“intx=12,y=8,z;”,在其后執(zhí)行語句“z=0.9+x/y;”,則z的值為()。
A.1B.1.9C.2D.2.4
10.設(shè)線性鏈表中結(jié)點的結(jié)構(gòu)為(data,next)。若想刪除結(jié)點p的直接后繼,則應(yīng)執(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;
11.若長度為n的線性表采用順序存儲結(jié)構(gòu),在其第i個位置插入一個新元素的算法的時間復(fù)雜度為()。
A.O(0)B.O(1)C.O(n)D.O(n2)
12.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是()。
A.隊列B.棧C.雙向鏈表D.二叉樹
13.在黑盒測試方法中,設(shè)計測試用例的主要根據(jù)是A.程序外部功能B.程序內(nèi)部邏輯C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
14.有以下程序#include<stdio.h>intfun(intx;inty){if(x=y(tǒng))reurn(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,c)));}程序運行后的輸出結(jié)果是______。A.3B.6C.8D.12
15.以下能正確定義一維數(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";
16.高度為h的滿二叉樹的結(jié)點數(shù)是________個。
A.log2h+1B.2h+1C.2h-1D.2h-1
17.
18.程序調(diào)試的任務(wù)是()。
A.設(shè)計測試用例B.驗證程序的正確性C.發(fā)現(xiàn)程序中的錯誤D.診斷和改正程序中的錯誤
19.下面哪些使用的不是貪心算法()
A.單源最短路徑中的Dijkstra算法
B.最小生成樹的Prim算法
C.最小生成樹的Kruskal算法
D.計算每對頂點最短路徑的Floyd-Warshall算法
20.設(shè)某文件內(nèi)排序后得到100個初始?xì)w并段(初始順串),若使用多路歸并排序算法,且要求三趟歸并完成排序,問歸并路數(shù)最少為()
A.5B.6C.7D.8
二、2.填空題(20題)21.下列程序執(zhí)行后輸出的結(jié)果是【】。
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);
22.以下程序中函數(shù)fun的功能是:構(gòu)成一個如圖所示的帶頭結(jié)點的單詞鏈表,在結(jié)點的數(shù)據(jù)域中放入了具有兩個字符的字符串。函數(shù)disp的功能是顯示輸出該單鏈表中所有結(jié)點中的字符串。請?zhí)羁胀瓿珊瘮?shù)disp。[*]
#include<stdio.h>
typedefstructnode/*鏈表結(jié)點結(jié)構(gòu)*/
{charsub[3];
structnode*next;
}Node;
Nodefun(chars)/*建立鏈表*/
{…}
voiddisp(Node*h)
{Node*
23.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
#include<string.h>
char*ss(char*s)
char*p,t;
p=s+1:t=*s:
whilet*p){*(,p-1)=*p;p++;}
*(p-1)=t;
returns:}
main()
{char*p,str[10]="abedefgh";
p=ss(str);printf("%s\n".p):}
24.下面程序是把從終端讀入的20個字符作為字符串放在字符數(shù)組中,然后利用指針變量輸出上述字符串,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{inti;chars[21],*p;
for(i=0;i<20;i++)
s[i]=getchar();
s[i]=【】;
p=【】;
while(*p)putchar(【】);
}
25.已有定義:double*p;,請寫出完整的語句,利用malloc函數(shù)使p指向一個雙精度型的動態(tài)存儲單元______。
26.執(zhí)行下面程序后,輸出結(jié)果是【】。
main()
{chars[12]="verygood!";
printf("%d",strlen(s));
}
27.軟件是程序、數(shù)據(jù)和【】的集合。
28.軟件維護活動包括以下幾類:改正性維護、適應(yīng)性維護、【】維護和預(yù)防性維護。
29.一個模塊直接調(diào)用的其他模塊的模塊個數(shù)稱為______。
30.下面程序?qū)⒍S數(shù)組a的行和列元素互換后存放到另一個二維數(shù)組b中,請?zhí)羁?。main(){inta[2][3]={{1,2,3},{4,5}},b[3][2],i,j;for(i=0;i<2;i++){for(j=0;j<3;j++)();}}
31.棧中允許進行插入和刪除的一端叫做______。
32.下列程序執(zhí)行輸出的結(jié)果是【】。
#include<stdio.h>
f(inta)
{intb=0;
staticc=3;
a=c++,b++;
return(a);}
main()
{inta=2,i,k;
for(i=0;i<2;i++)
k=f(a++);
printf("%d\n",k);}
33.閱讀下面程序段,則執(zhí)行后輸出的結(jié)果是【】。
#include"stdio.h"
main()
{charfun(char,int);
chara=′A′;
intb=13;
a=fun(a,b);
putchar(a);}
charfun(chara,intb)
{chark;
k=a+b;
returnk;}
34.以下程序運行后的輸出結(jié)果是______。
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=C;c=t;
if(a<c&&b<c)t=b;b=a;a=t
printf("%d%d%d\n",a,b,c);
}
35.以下程序的輸出結(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);
}
36.關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件,包括實體完整性、______和自定義完整性。
37.一個類可以從直接或間接的祖先中繼承所有屬性和方法。采用這個方法提高了軟件的【】。
38.以下程序的輸出結(jié)果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
39.軟件的【】設(shè)計又稱為總體結(jié)構(gòu)設(shè)計,其主要任務(wù)是建立軟件系統(tǒng)的總體結(jié)構(gòu)。
40.軟件指的是計算機系統(tǒng)中與硬件相互依賴的另一部分,包括程序、數(shù)據(jù)和()的集合。
三、1.選擇題(20題)41.結(jié)構(gòu)化程序設(shè)計的基本原則不包括A.多態(tài)性B.自頂向下C.模塊化D.逐步求精
42.若x和y代表整型數(shù),以下表達式中不能正確表示數(shù)學(xué)關(guān)系|x-y|<10的是()。
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10||!(y-x)>10
D.(x-y)*(x-y)<100
43.下面程序段的輸出結(jié)果是()。#include<stdio.h>main(){floatx=1.236547;printf("%f\n",(int)(x*1000+0.5)/(float)1000);}
A.1.237000B.輸出格式說明與輸出項不匹配,輸出無定值C.1.236000D.1.24
44.若有如下程序:main(){inta,b,C,m,n,k;m=n=k=0;a=-1;b=2;C=3;if(c>0)m=a+b;if(a<=0){if(b>0)if(c<=0)n=a=b;}elseif(c>0)n=a-b;elsek/=c;printf("%d,%d,%d,",m,n,k);}則程序運行后的輸出結(jié)果是()。
A.1,0,0B.2,-3,3C.1,-3,3D.1,0,3
45.設(shè)有定義:intn=0,*p=&n,**q=&p;則下列選項中正確的賦值語句是()。
A.p=1;B.*q=2;C.q=p;D.*p=5;
46.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。
A.#definef(x)5*x*x+5*x+5
B.#definef5*X*x+5*x+5
C.#definef(a)(5*a*a+5*a+5)
D.#define(5*x*x+5*x+5)f(x)
47.在下列語句中,其含義為“q為一個指針的函數(shù),該指針指向整型數(shù)據(jù)”的定義語句是()。
A.int**q;B.int(*q)();C.int*q;D.int*q();
48.以下程序的輸出結(jié)果是#include<stdio.h>inta[3][3]={1,2,3,4,5,6,7,8,9,},*p;main(){p=(int*)malloc(sizeof(int));f(p,a);printf("%d\n",*p);free(p);}f(int*s,intp[][3]){*s=p[1][1];}
A.1B.4C.7D.5
49.有以下程序:main(){intn=0;do{n++;printf("%d\n",n);}while(n<=3);}程序的輸出結(jié)果是()。
A.12B.123C.1234D.1
50.有以下程序main(){chara='a',b;printf("%c,",++A);printf("%c\n"。b=a++);}程序運行后的輸出結(jié)果是
A.b,bB.b,cC.a,bD.a,c
51.下列不屬于軟件調(diào)試技術(shù)的是______。A.強行排錯法B.集成測試法C.回溯法D.原因排除法
52.若w、x、y、z、m均為int型變量,則執(zhí)行下列的語句后m的值是()。w=2,x=3,y=4,z=5;m=(w<x)?w:x;m=(m<z)?m:z;m=(m<y)?m:y;
A.2B.3C.5D.4
53.設(shè)有以下宏定義:#defineN3#defineY(n)((N+1)*n)則執(zhí)行以下語句后,z的值為______。z=2*(N+Y(3+2));
A.出錯B.34C.46D.54
54.有以下程序:structSTU{charnum[10];floatscore[3];);main(){structstus[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p=s;inti;floatsum=0;for(i=0;i<3,i++)sum=sum+p->score[i];printf("%6.2f\n",sum);}程序運行后的輸出結(jié)果是()。
A.260B.270C.280D.285
55.在16位C編譯系統(tǒng)中,若定義longa;則能給a賦值40000的正確語句是()。
A.a=2000p+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;
56.下列程序的輸出結(jié)果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf("%d\n",a--);}
A.2B.3C.4D.5
57.有以下程序main(){intm=0256,n=256;printf("%o%o\n",m,n);}程序運行后的輸出結(jié)果是
A.02560400B.0256256C.256400D.400400
58.以下函數(shù)返回a所指數(shù)組中最小的值所在的下標(biāo)值
fun(int*a,intn)
{inti,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p]);________;
return(p);}
在橫線處應(yīng)填入的是
A.i=pB.a[p]=a[i]C.p=jD.p=i
59.下面描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是()。
A.使用順序、選擇和重復(fù)(循環(huán))3種基本控制結(jié)構(gòu)表示程序的控制邏輯
B.模塊只有一個入口,可以有多個出口
C.注重提高程序的執(zhí)行效率
D.不使用goto語句
60.下列判斷正確的是()。
A.chara="ABCD";等價于char*a;*a="ABCD";
B.charstr[10]=ABCD"};等價于charstr[10];str[]={"ABCD"};
C.char*s="ABCD";等價于chars;*s="ABCD";
D.charc[5]="ABCD",d[5]="ABCD";等價于charc[5]=d[5]="ABCD";
四、選擇題(20題)61.以下關(guān)于字符串的敘述中正確的是()。
62.有以下程序:
程序運行后的輸出結(jié)果是()。
A.61B.70C.63D.71
63.有以下程序:
程序運行后的輸出結(jié)果是()。
A.Zhao,m,85,90B.Qian,m,85,90C.Zhao,f,95,92D.Qian,f,95,92
64.以下敘述中正確的是(
)。A.C語言中的全部數(shù)據(jù)類型都是基本類型B.C語言中的全部數(shù)據(jù)類型都是構(gòu)造類型C.C語言中的數(shù)據(jù)類型只有兩種,即基本類型和構(gòu)造類型D.以上都不對
65.設(shè)變量a、b、c、d和y都已正確定義并賦值。若有以下if語句
if(a<b)
if(c==d)y=0;
Elsey=1;
該語句所表示的含義是()。
A.
B.
C.
D.
66.
67.下列程序的輸出結(jié)果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999
68.(20)數(shù)據(jù)庫設(shè)計包括兩個方面的設(shè)計內(nèi)容,它們是()
A.概念設(shè)計和邏輯設(shè)計
B.模式設(shè)計和內(nèi)模式設(shè)計
C.內(nèi)模式設(shè)計和物理設(shè)計
D.結(jié)構(gòu)特性設(shè)計和行為特性設(shè)計
69.以下與存儲類別有關(guān)的四組說明符中,全部屬于靜態(tài)類的一組是()。
A.extem和static
B.auto和static
C.register和static
D.register和ex[erll
70.有以下程序:
程序運行后的輸出結(jié)果是()。
71.有以下程序:
若運行時輸入:246<;回車>;,則輸出結(jié)果為()。
A.204B.200C.240D.246
72.有以下程序
#include<stdio.h>
voidfun(char**p)
{++p;printf("%s",*p);}
main
{char*a[]={"Morning","Afternoon","Evening","Night");
fun(a);
}
程序的運行結(jié)果是()。A.A.AfternoonB.fternoonC.MorningD.orning
73.瀏覽器中用于負(fù)責(zé)向用戶顯示數(shù)據(jù)的是()。
A.WWWB.IP地址C.HTMLD.DNS
74.軟件按功能可以分為應(yīng)用軟件、系統(tǒng)軟件和支撐軟件(或工具軟件),下面屬于系統(tǒng)軟件的是()。A.學(xué)生管理系統(tǒng)B.C語言編譯程序C.UNIX操作系統(tǒng)D.數(shù)據(jù)庫管理系統(tǒng)
75.下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是()
A.數(shù)據(jù)結(jié)構(gòu)B.數(shù)據(jù)操作C.數(shù)據(jù)查詢D.數(shù)據(jù)約束
76.
77.
78.
79.設(shè)inti=2,j=1,k=3,則表達式i&&(i+j)&k|i+j的值是_______。
A.0B.2C.1D.3
80.定義如下變量和數(shù)組:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};
則語句for(i=0;i<3;i++)printf("%d",x[i][2-i]);的輸出結(jié)果是()。
A.159B.147C.357D.369
五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun的功能是:求出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;’若未找到,則函數(shù)值為NULL。例如,當(dāng)字符串中的內(nèi)容為“123dabfl23dx”,t中內(nèi)容為“ab”時,輸出結(jié)果應(yīng)是“l(fā)23dx”。當(dāng)字符串中的內(nèi)容為“l(fā)23dabfl23dx”,t中內(nèi)容為“aim”時,則程序輸出未找到信息“Notfound!”。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:
六、程序設(shè)計題(1題)82.請編寫函數(shù)proc,其功能是:將str所指字符串中除下標(biāo)為偶數(shù)、同時ASCIl碼值為奇數(shù)的字符外,其余的字符都刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符B的ASCIl碼值為偶數(shù),所在元素的下標(biāo)為奇數(shù),因此必須刪除;而字符A的ASCIl碼值為奇數(shù),所在數(shù)組中的下標(biāo)為偶數(shù),因此不應(yīng)當(dāng)刪除。依此類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEG。注意:部分源程序給出如下。請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc的花括號中填人所寫的若干語句。試題程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>voidproc(char*str,chart[]){}voidmain{charstr[100],t[100];system("CLS");printf("\nPleaseenterstringstr:");scanf("%S",str);proc(str,t);printf("\nTheresultiS:%s\n",t);
參考答案
1.A程序定義整型的全局變量a,初值為5,main函數(shù)定義整型局部變量a,初值為4。所以在main函數(shù)中,局部變量a屏蔽全局變量a。func函數(shù)中定義局部變量b,初值為5,定義靜態(tài)變量c,初值為5,并且在func函數(shù)中變量a引用的是全局變量a。綜上,我們使用a_a代表全局變量a,使用m_a代表main函數(shù)中局部變量a。main函數(shù)中,當(dāng)k=0時,a_a=5,m_a=4,調(diào)用函數(shù)func(4),函數(shù)func中d的值為4,b的值為5,c的值為5,執(zhí)行表達式“a_a--;b--;--c;--d;”后,a_a的值為4,b的值為4,c的值為4,d的值為3,a+b+c+d的值為15,程序輸出15。當(dāng)k=1時,a_a=4,m_a=3,調(diào)用函數(shù)func(3),函數(shù)func中d的值為3,b的值為5,c的值為4(靜態(tài)變量使用上一次調(diào)用結(jié)束時的值),執(zhí)行表達式“a_a--;b--;--c;--d;”后,a_a的值為3,b的值為4,c的值為3,d的值為2,a+b+c+d的值為12,程序輸出12。當(dāng)k=2時,a_a=3,m_a=2,調(diào)用函數(shù)func(2),函數(shù)func中cl的值為2,b的值為5,c的值為3,執(zhí)行表達式“a_a--;b--;--c;--d;”后,a_a的值為2,b的值為4,c的值為2,d的值為1,a+b+c+d的值為9,程序輸出9。本題答案為A選項。
2.A由于a==l和a!=1兩者互斥,即總有一個為真,因此二者的或也必定為真。
3.D解析:選項A:'a'&&'b'是字符a與b的相與,不為0:選項B:a<=b,由題中變量賦值可知,結(jié)果為1。選項C:a||+c&&b-c,結(jié)果為1;選項D:!((a<B)&&!c||1),運算結(jié)果為0。
4.A樹形結(jié)構(gòu)是一類重要的非線性數(shù)據(jù)結(jié)構(gòu)。樹是n(n≥0)個結(jié)點的集合,對應(yīng)任意一棵非空樹,它具有以下幾點重要的性質(zhì)。
①有且僅有一個特定的稱為根的結(jié)點。
②當(dāng)n>1時,其余結(jié)點可分為m(m>0)個互不相交的有限集T1,T2,…,TM,其中每一個集合本身又是一棵樹,稱為子樹。
因此,本題的正確答案有且只有一個。
5.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟毩⒌膬刹?/p>
分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼
續(xù)進行排序,以達到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依
次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整
個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩
下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合
成一個新的有序表。
注意:各種排序方法實現(xiàn)過程及實現(xiàn)機制。
6.D循環(huán)鏈表是線性表的一種鏈?zhǔn)酱鎯Y(jié)構(gòu),循環(huán)隊列是隊列的一種順序存儲結(jié)構(gòu)。因此D選項敘述錯誤。本題答案為D選項。
7.C解析:棧和隊列都是操作受限制的線性表,只允許在端點插入和刪除。不同點是:棧只允許在表的一端進行插入和刪除操作,而隊列允許在表的一端進行插入操作,而在另一端進行刪除操作。
8.D解析:測試不是為了證明程序是正確的,而是在設(shè)想程序有錯誤的前提下進行的,其目的是設(shè)法暴露程序中的錯誤和缺陷,一般應(yīng)當(dāng)避免由開發(fā)者測試自己的程序,因此,選項A錯誤;測試是為了發(fā)現(xiàn)程序錯誤,不能證明程序的正確性,調(diào)試主要是推斷錯誤的原因,從而進一步改正錯誤,調(diào)試用例與測試用例可以一致,也可以不一致,選項B錯誤;測試發(fā)現(xiàn)錯誤后,可進行調(diào)試并改正錯誤:經(jīng)過調(diào)試后的程序還需進行回歸測試,以檢查調(diào)試的效果,同時也可防止在調(diào)試過程中引進新的錯誤,選項C錯誤。
9.A在表達式“z=0.9+x/y”中,先計算“3.6-2”,結(jié)果為1;再計算“0.9+1”,結(jié)果為1.9。因為變量z為整型,所以z的值為1。故本題答案為A選項。
10.A
11.C
12.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進先出”的原則組織數(shù)據(jù)的。
【知識拓展】“隊列”和“棧”都是一種特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。
13.A【答案】:A
【知識點】:黑盒測試
【解析】:黑盒測試也稱功能測試或數(shù)據(jù)驅(qū)動測試,它完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特征,只著眼于程序的外部結(jié)構(gòu),主要用來檢查程序功能是否按照需求規(guī)格說明書的規(guī)定正常使用。故選A。
14.B解析:在主函數(shù)中,第—次調(diào)用fun函數(shù),將變量b,c的值傳給形參x,y,在fun()函數(shù)中執(zhí)行if語句,判斷b和c的值是否相等,由于在主函數(shù)中賦初值b=5,c=6,所以判斷條件不滿足,執(zhí)行else語句,返回表達式(x+y)/2的值,即:(5+6)/2,因為參數(shù)的類型都為int型,所以結(jié)果也為整型:5,第二次調(diào)用時8和5也不相等,所以返回值為6,因此,選項B是正確的。
15.B解析:選項A)定義的是長度為5的數(shù)組元素,但初值有6個元素,所以錯誤;選項C)不符合數(shù)組定義形式,數(shù)組名后應(yīng)加上“[];選項D)的類型說明符錯誤,應(yīng)改為char;選項B)中的0,1,2,3,4,5分別表示對應(yīng)字符的ASCII碼,所以正確。
16.C
17.A
18.D程序調(diào)試的任務(wù)是診斷和改正程序中的錯誤。
19.D
20.A
21.1212解析:本題的第一個for循環(huán)用于給數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。
22.
23.bedefghabedefgha解析:函數(shù)9,的作用是將指針變量。指向的字符串的首字符移到最后一個位置,其他字符依次前移。其方法是:首先將指針變量p指向字符串s的第2個字符b,然后將首字符保存在字符變量t中;從字符串的第2個字符開始,通過語句*(P-1)=*p;依次前移,直到字符串結(jié)束符;最后通過語句*(P-1)=t;將保存在t中的字符放到移動后的字符串末尾,返回main函數(shù)并輸出,輸出結(jié)果為bedefsh。
24.\0's*p++\\0'\r\ns\r\n*p++解析:本題先通過for循環(huán)從鍵盤接收20個字符,然后在串尾賦一空值'\\0'作為串結(jié)束標(biāo)志。再使指針p指向串的首地址。最后通過while循環(huán)對字符串進行掃描并輸出。
25.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函數(shù)只有一個參數(shù),該參數(shù)指定了需要分配多少字節(jié)的內(nèi)存。然后將分配好的內(nèi)存塊的首地址作為void*(未知類型指針)返回.故標(biāo)準(zhǔn)的調(diào)用形式應(yīng)該寫成:
p(double*)malloc(sizeof(double));
26.1010解析:strlen(s)函數(shù)的返回值為字符串s包含的字符個數(shù)<不計最后的'\\0')。
27.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。
28.完善性軟件維護活動包括以下幾類:改正性維護,適應(yīng)性維護、完善性維護和預(yù)防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。
29.扇出扇出解析:在結(jié)構(gòu)圖中,調(diào)用一個給定模塊的模塊個數(shù)稱為扇入,一個模塊直接調(diào)用的其他模塊個數(shù)稱為扇出。
30.b[j][i]=a[i][j]
31.棧頂棧頂解析:棧是限定在表的一端進行插入和刪除操作的線性表。在表中,允許插入和刪除的一端叫做“棧頂”,不允許插入和刪除的一端叫做“棧底”。
32.44解析:本題考查了靜態(tài)存儲類別的局部變量的特點。靜態(tài)存儲類別的局部變量在程序的整個生存周期內(nèi)都存在,但作用域卻只局限于定義它的函數(shù)或局部范圍。當(dāng)i=0時執(zhí)行第一次for循環(huán),k=f(2),a=c++,b++;因為賦值運算符的優(yōu)先級高于逗號運算符,所以a=3,c=4;當(dāng)i=1時執(zhí)行第二次for循環(huán),k=f(3),a=c++,b++;因為c為靜態(tài)局部變量所以保留著這一次執(zhí)行的結(jié)果值4,所以a=4,c=5,所以函數(shù)f()返回a的值為4。
33.NN解析:函數(shù)說明語句中的類型名必須與函數(shù)返回值的類型一致。本題實現(xiàn)的是在字符'A'的ASCII碼值上加上一個常數(shù),使之變成另一個ASCII碼值,從而輸出字符。
34.4599
35.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。
36.參照完整性參照完整性
37.可重用性繼承的優(yōu)點:相似的對象可以共享程序代碼和數(shù)據(jù)結(jié)構(gòu),從而大大減少了程序中的冗余,提高軟件的可重用性。
38.43214321解析:靜態(tài)存儲類的局部變量其生存期為整個程序的運行期間,作用域卻只是定義它的函數(shù)或局部范圍。注意:局部變量和全局變量的作用域。
39.概要概要
40.相關(guān)文檔相關(guān)文檔解析:軟件指的是計算機系統(tǒng)中與硬件相互依賴的另一部分,包括程序、數(shù)據(jù)和有關(guān)的文檔。程序足對計算機的處理對象和處理規(guī)則的描述,是軟件開發(fā)入員根據(jù)用戶需求開發(fā)的、用程序語言描述的、適合計算機執(zhí)行的指令序列。數(shù)拼是使程序能正常操作信息的數(shù)據(jù)結(jié)構(gòu)。文檔是為了便于了解程序所需的資源說明,是與程序的開發(fā)、維護和使用有關(guān)的資料。
41.A結(jié)構(gòu)化程序設(shè)計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句,其中不包括多態(tài)性。
42.C解析:選項A用了一個絕對值函數(shù)abs(),故選項A正確;選項B中用了一個“&&”邏輯與,故選項B正確;選項C中,“||”左邊的式子如為真,將不再判斷其后的表達式的值,故選項C不正確;選項D為本題中數(shù)學(xué)關(guān)系式的一個等價命題,故選項D正確。所以,4個選項中選項C符合題意。
43.A
44.A解析:本題首先聲明了6個int型變量,然后分別讓m、n、k為0,a為-1,b為2,c為3。接下來因為c>O為真,故執(zhí)行子句“m=a=b;”,結(jié)果使m的值變?yōu)?;然后判斷a是否<=0,結(jié)果也為真,進入大括號里面;由于b>O為真,再判斷c<=0,為假。所以子句“n=a=b;”沒有執(zhí)行,跳出大括號。而后面的elseif語句和else語句因為大括號的原因,使其對應(yīng)第二個if語句,而第二個if語句的條件已滿足(進入大括號之前),所以這兩條else語句的子句不被執(zhí)行,故最后輸出結(jié)果為1,0,0,所以應(yīng)該選擇A。
45.D解析:選項A),B),C)的指針賦值表達方式都不正確,*p=5表達整數(shù)5放到指針p所指向的存儲單元中。注意:通過指針引用一個存儲單。
46.C解析:帶參數(shù)宏的格式為:#define標(biāo)識符(形參表)形參表達式。其功能是:在預(yù)處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達式。
47.B解析:本題考查的是指針函數(shù)。指針函數(shù)定義的基本格式為:類型說明符(*函數(shù)名)()。其中,類型說明符表示返回的指針值指向的數(shù)據(jù)類型。
48.D解析:本題考查了二維數(shù)組元素引用的方法。題中用動態(tài)存儲分配函數(shù)malloc分配了一個int型數(shù)據(jù)長度大小的內(nèi)存,然后指針p指向了這段內(nèi)存,函數(shù)f()中對p所指向的數(shù)據(jù)進行了賦值,p[1][1]為二維數(shù)組第二行第二列的元素,對應(yīng)于實參a的元素5,所以輸出結(jié)果為5。
49.C解析:本題考查do…while循環(huán)。在do…while構(gòu)成的循環(huán)體中,總是先執(zhí)行一次循環(huán)體,然后再求表達式的值。當(dāng)執(zhí)行完第三次循環(huán)時,得到n=3,while循環(huán)表達式仍然成立,接著執(zhí)行直到n=4,表達式不成立,跳出循環(huán),結(jié)束程序。
50.A解析:程序中的第一個輸出語句輸出表達式++a的值,該++a是在使用a之前,先使a的值加1,即為a加1為字符b,此時a的值為b,所以第一個輸出語句輸出的值為b,第二個輸出語句中輸出的b的值,這時b的值為表達式a++的值,a++是在使用a之后(此時a的值為b,所以賦給b的值為B),使a的值加一因此第二個輸出的值也為b.所以,4個選項中選項A符合題意。
51.B解析:我們嚴(yán)格區(qū)分調(diào)試與測試,調(diào)試是已知有錯誤而來找錯誤,是被動的;測試有很多種,比如未發(fā)現(xiàn)錯誤但不能保證程序沒錯而來找BUG,還比如我們運行測試程序是否符合用戶的要求,是主動的。所以答案是選項B。A、C、D都是具體的程序調(diào)試方法,而B是宏觀的程序測試方法。測試有單元測試、集成測試、確認(rèn)測試、系統(tǒng)測試。比如我們在進行單元測試時,發(fā)現(xiàn)程序有錯誤,我們再可以根據(jù)A、C、D的方法來找錯誤。
52.A解析:條件表達式“a?b:c”的含義是:當(dāng)a為真時,其值等于表達式b的值;當(dāng)a為假時,其值等于表達式c的值。
表達式運算過程:第1個表達式:w=2<x=3為真,所以返回w的值,即m=w=2;第2個表達式:m=2<z=5為真,所以返回m的值,即m=2;第3個表達式:w=2<y=4為真,所以返回m的值,即m=2。
53.B解析:注意C語言中宏定義是先替換再參與運算,因此:z=2*(N+(N+1)*3+2)=2*(3+(3+1)*3+2)=34。
54.B解析:程序中首先定義了一個結(jié)構(gòu)體,其成員為一字符數(shù)組和一實型數(shù)組。在main()中首先定義了一個結(jié)構(gòu)體數(shù)組并初始化。接下來在for循環(huán)中遍歷了結(jié)構(gòu)體數(shù)組的第一個元素中數(shù)組成員即{'20021',90,95,85'}循環(huán)結(jié)果為90+95+85=270最后sum為270,又輸出格式為%6.2f\\n要求保留兩位小數(shù),故最后輸出為270.00。所以4個選項中B正確。
55.D解析:40000已經(jīng)超過了C語言規(guī)定的短整型的范圍。要將這樣的數(shù)賦值給一個長整型變量,需要在整型常量后面加字母L。
56.C解析:帶參數(shù)的宏定義命令行形式如下:
#define宏名(形參表)替換文本
在編譯的時候編譯預(yù)處理程序用“替換文本”來替換宏,即M(n,m)被替換為n%m,之后計算,將計算的結(jié)果賦給a。注意,宏替換是在編譯時由預(yù)處理程序完成的,宏替換不占用運行的時間,而函數(shù)調(diào)用是在程序運行時進行的,在函數(shù)的調(diào)用過程中需要占用一系列的處理時間。
57.C解析:程序中定義了兩個整型變量,一個用八進制表示,一個用十進制表示,輸出語向中要求m,n都為八進制輸出,顯然m原樣輸出為256,n的值轉(zhuǎn)換為八進制輸出(256的八進制為400),故輸出400.所以,4個選項中選項C符合題意。
58.D解析:該程序先判斷a[i]<a[p],如果條件為真,則a[i]比當(dāng)前設(shè)定的最小值小(p保留的當(dāng)前最小元素的下標(biāo)),那么將i賦給p,即將比較過的最小元素下標(biāo)保留在p中,作為下面判斷的標(biāo)準(zhǔn)。
59.A解析:符合結(jié)構(gòu)化程序設(shè)計風(fēng)格中,應(yīng)該選擇只有一個入口和一個出口的模塊,故選項B錯誤;首先要保證程序正確,然后才要求提高效率,故選項C錯誤;嚴(yán)格控制使用goto語句,必要時可以使用,故選項D錯誤。
60.D解析:a='ABCD'書寫錯誤,因為“=”左邊不能出現(xiàn)常量;數(shù)組名s是代表s數(shù)組首地址的地址常量,而不是變量;字符串只有在定義時維數(shù)可以省略。
61.A空格是一種字符,所以空串肯定比空格打頭的字符串小。
62.Bsizeof是返回字符串在內(nèi)存中所占用的
63.D本題考查結(jié)構(gòu)體的相關(guān)操作以及傳值、傳址的區(qū)別,該題中調(diào)用f函數(shù)后,會生成參數(shù)C的一個副本,而不會改變c的值,所以c值維持原值,選項D正確。
64.D在C語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型,構(gòu)造數(shù)據(jù)類型,指針類型,空類型四大類
65.Cif-else語句時if語句的嵌套,也就是if-else語句在if語句的條件下執(zhí)行,所以兩個條件相同的地方都是a<b.
66.C
67.C本題考查do-while循環(huán),在f
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度醫(yī)療設(shè)備采購及維護服務(wù)合同
- 2025年度合資企業(yè)股份比例調(diào)整合同
- 2025年度婚慶婚車租賃及裝飾服務(wù)合同
- 2025年度法律顧問服務(wù)專項合同
- 2025年度國企聘用工合同(文化產(chǎn)業(yè)發(fā)展顧問)
- 2025年度化工設(shè)計工程技術(shù)人員勞動合同定制版
- 2025年度建筑節(jié)能改造工程施工合同模板
- 2025年度醫(yī)療健康產(chǎn)業(yè)借款合同
- 2025年度文化旅游項目開發(fā)與運營管理合同
- 2025年度全球奢侈品代購服務(wù)合同范本
- RB/T 101-2013能源管理體系電子信息企業(yè)認(rèn)證要求
- GB/T 4513.7-2017不定形耐火材料第7部分:預(yù)制件的測定
- GB/T 10205-2009磷酸一銨、磷酸二銨
- 公司財務(wù)制度及流程
- 高支模專項施工方案(專家論證)
- 深圳版初中英語單詞匯總
- 健康養(yǎng)生,快樂生活課件
- 《物流與供應(yīng)鏈管理-新商業(yè)、新鏈接、新物流》配套教學(xué)課件
- MDD指令附錄一 基本要求檢查表2013版
- 駱駝祥子1一24章批注
- 新部編人教版四年級下冊道德與法治全冊教案(教學(xué)設(shè)計)
評論
0/150
提交評論