版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
2022-2023年湖南省郴州市全國計算機等級考試C語言程序設(shè)計真題二卷(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(20題)1.下列敘述中錯誤的是()。
A.C語言程序必須由一個或一個以上的函數(shù)組成
B.函數(shù)調(diào)用可以作為一個獨立的語句存在
C.若函數(shù)有返回值,必須通過return語句返回
D.函數(shù)形參的值也可以傳回給對應(yīng)的實參
2.數(shù)據(jù)結(jié)構(gòu)通常是研究數(shù)據(jù)的及它們之間的聯(lián)系______。A.存儲和邏輯結(jié)構(gòu)B.存儲和抽象C.理想和抽象D.理想與邏輯
3.有說明語句“inta,b;”,如果輸入111222333,使得a的值為111,b的值為333,則以下正確的語句是()。A.scanf("%3d%*3d%3d",&a,&b);
B.scanf("%*3d%3d%3d",&a,&b);
C.scanf("%3d%3d%*3d",&a,&b);
D.scanf("%3d%*2d%3d",&a,&b);
4.以下敘述中錯誤的是()。
A.函數(shù)的返回值類型不能是結(jié)構(gòu)體類型,只能是簡單類型
B.函數(shù)可以返回指向結(jié)構(gòu)體變量的指針
C.可以通過指向結(jié)構(gòu)體變量的指針訪問所指結(jié)構(gòu)體變量的任何成員
D.只要類型相同,結(jié)構(gòu)體變量之間可以整體賦值
5.以下正確的字符常量是()。A.'\089'B.'\012'C.'\0XAB'D.'\0xab'
6.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)執(zhí)行后的輸出結(jié)果是()。A.5,5B.5,11C.11,11D.11,5
7.下列關(guān)于棧的描述中錯誤的是()。
A.棧是先進先出的線性表B.棧只能順序存儲C.棧具有記憶作用D.對棧的插入刪除操作中,不需要改變棧底指針
8.排序方法中,將整個無序序列分割成若干小的子序列并分別進行插入排序的方法,稱______。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
9.用二分法查找長度為10的、排好序的線性表,查找不成功時,最多需要比較多少次?()
A.3B.4C.5D.6
10.有以下程序:
程序運行后的輸出結(jié)果是()。A.1B.11C.7D.9
11.有以下程序:#include<stdio.h>intf(intx):main{intn=1,m;m=f(f(f(n)));printf("%d\n",m);}intf(intx){returnx*2;)程序運行后的輸出結(jié)果是()。A.1B.2C.4D.8
12.下列運算符中優(yōu)先級最高的是()。
A.!B.%C.-=D.&&
13.設(shè)二叉樹的中序序列為BCDA,前序序列為ABCD,則后序序列為()。
A.CBDAB.DCBAC.BCDAD.ACDB
14.排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進行比較,將其放入已排序序列的正確位置上的方法,稱為()。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
15.有以下程序:#include<stdio.h>main(){chars[]={“012xy”;inti,n=0;for(i=0;s[i]|=0;i++)if(s[i]>=‘a(chǎn)’&&s[i]<=‘z’)n++;printf(“%d\n”,n);}程序的運行結(jié)果是()。
A.0B.2C.3D.5
16.
17.下列程序的輸出結(jié)果是()。#include<stdio.h>main{inti;for(i=1;i<=10,i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i;}A.49B.36C.25D.64
18.直接選擇排序的時間復(fù)雜度為()。(n為元素個數(shù))
A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)
19.對于n個結(jié)點的單向鏈表(無表頭結(jié)點),需要指針單元的個數(shù)至少為______。
A.n-1B.nC.n+1D.2n
20.
二、2.填空題(20題)21.【】是從二維表列的方向進行的運算。
22.軟件工程學(xué)把軟件從開始研制到最終軟件被廢棄的整個階段叫做軟件的【】。
23.以下程序運行后的輸出結(jié)果是【】。
main()
{intX=10,y=20,t=0;
if(X==y)t=x;x=y;y=t;
printf("%d,%d\n",x,y);
}
24.下列程序的功能是將字符串s中所有的字符c刪除。請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[80];
inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(s[i]!='c')
s[j]='\0';
puts(s);
}
25.按“先進后出”原則組織數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是[]。
26.若運行輸入:3<回車>,則以下程序的輸出結(jié)果是()。main(){inta,b;scanf("%d",&A);b=(a>=0)?a:-a;printf("b=%d",B);}
27.下列程序中的函數(shù)stropy2()實現(xiàn)字符串兩次復(fù)制,即將t所指字符串復(fù)制兩次到s所指內(nèi)存空間中,合并形成一個新字符串。例如,若t所指字符串為:efgh,調(diào)用strcpy2后,s所指字符串為:efghefgh。請?zhí)羁铡?/p>
#include<stdio.h>
#include<string.h>
voidstrcpy2(char*s,char*t)
{char*p=t;
while(*s++=*t++);
s=【】;
while(【】=*p++);
}
main()
{charstr1[100]="abed",str2[]="efgh";
strcpy2(str1,str2);printf("%s\n",str1);
}
28.以下程序運行后的輸出結(jié)果是______。
structNODE
{
inthum;
structNODE*next;
};
main()
{structNODEs[3]={{1,'\0'},{2,'\0'},{3,'\0'}},*p,*q,*r;
intsum=0:
s[0].next=s+1;
s[1].next=s+2;
s[2].next=s:
p=s;
q=p->next;
r=q->next;
sum+=q->nexs->num;
sum+=r>next->next->num:
prlntf("%d\n",sum;
}
29.算法的復(fù)雜度主要包括空間復(fù)雜度和______復(fù)雜度。
30.mystrlen函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>
intmystrlen(char*str)
{intI;
for(I=0;【】!='\n';I++);
return(I);}
31.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量info用來存入整型數(shù)據(jù),成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補充完整。
structnode
}intinfo;
【】link;
};
32.某二叉樹中度為2的結(jié)點有18個,則該二叉樹中有【】個葉子結(jié)點。
33.軟件是由兩部分組成的,一部分是【】,另一部分是文檔資料。
34.下面程序輸出的結(jié)果是()。intm=17;intfun(intx,inty){intm=3;return(x*y-m);}main(){inta=5,b=7;printf("%d\n”,fun(a,B)/m);}
35.以下程序的定義語句中,x[1]的初值是[9],程序運行后輸出的內(nèi)容是[10]。
#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");
}
36.下面程序的運行結(jié)果是【】。
main()
{unsigneda=0112,x;
x=a>>3;
printf("x=%o",x);
}
37.以下程序運行后的輸出結(jié)果是【】。
#include<stdio.h>
msin()
{inti,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
}
38.以下程序中,fun函數(shù)的功能足求3行4列二維數(shù)組每行尢素中的最大值。請?zhí)羁?。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,B);for(i=0;j<3;i++)printf("%4d",b[i]);printf("\n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;i<m;i++){x=ar[i][0];for(j=0;j<n;j++)if(())x=ar[i][j];br[i]=x;}}
39.以下程序運行后的輸出結(jié)果是______。
intf(inta[],intn)
{
if(n>=l)
returnf(a,n-1)+a[n-1];
else
return0;
}
main{)
{
intaa[5]={1,2,3,4,5},s;
s=f(aa,5);
printf{'%d\n",s);
}
40.對于長度為n的順序存儲的線性表,當(dāng)隨機插入和刪除—個元素時,需平均移動元素的個數(shù)為【】。
三、1.選擇題(20題)41.以下選項中可作為C語言合法常量的是
A.-80B.-080C.-8e1.0D.-80.0e
42.運行以下程序后,如果從鍵盤上輸入6514<回車>,則輸出結(jié)果為______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}
A.m=3B.m=2C.m=1D.m=0
43.下列敘述中正確的是()。
A.break語句只能用于switch語句體中
B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C.break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)
D.在循環(huán)體內(nèi)使用break語句和continue語句的作用相同
44.以下程序的輸出結(jié)果是______。#include<stdio.h>main(){printf("%d\n",NULL);}
A.不確定的值B.0C.-1D.1
45.下列程序的輸出結(jié)果是()。
#include<stdio.h>
voidmain()
{intb[6]-<2,4,6,8,10,12};
int*p=b,**q=&p;
printf("%d",*(p++));
printf("%d,",**q);
}
A.4,4B.2,2C.4,5D.2,4
46.下面程序段的輸出為()。
#include"stdio.h"
main
{
printf("%d\n",12<<2);
}
A.0B.47C.48D.24
47.下面的概念中,不屬于面向?qū)ο蠓椒ǖ氖?)。
A.對象B.繼承C.類D.過程調(diào)用
48.設(shè)有如下定義structss{charname[10];intage;charsex;}std[3],*p=std;下面各輸入語句中錯誤的是A.scanf("%d",&(*p).age);
B.scanf("%s",&);
C.scanf("%c",&std[0].sex);
D.scanf("%c",&(p->sex));
49.若有下列說明,則()不是對strcpy庫函數(shù)的正確的調(diào)用。strcpy庫函數(shù)用于復(fù)制一個字符串:char*strl="abcd",str2[10],*str3="hijklmn",*str4[2],*str5="aaaa";
A.languageB.lnugC.有語法錯誤D.lang
50.若有下列定義(設(shè)int類型變量占2個字節(jié)):floatx=123.4567;則下列語句:printf("x=%5.2f",x);輸出的結(jié)果是()。
A.x=123.46B.123.4567C.x=123.4567D.123.46
51.有以下程序段
intj;floaty;charname[50];
scanf("%2d%f%s",&j,&y,name);
當(dāng)執(zhí)行上述程序段,從鍵盤上輸入555667777abc后,y的值為
A.55566.0B.566.0C.7777.0D.566777.0
52.微型計算機的性能主要取決于()
A.內(nèi)存B.中央處理器C.硬盤D.顯示卡
53.若有說明語句"inta;floatb;”,以下輸入語句正確的是()
A.scanf("%f%f",&a,&b);
B.scanf("%f%d",&a;&b);
C.scanf("%d,%f",&a,&b);
D.scanf("%6.2f%6.2f",&a,&b);
54.有以下程序:#include<stdio.h>point(char*p){p+=3;}main()charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);
A.aB.bC.cD.d
55.下列定義變量的語句中錯誤的是()。
A.int_int;B.doubleint_;C.charfor;D.floatUS$
56.若有說明:inta[][3]={1,2,3,4,5,6,7};則數(shù)組a第一維的大小是()。
A.2B.3C.4D.無確定值
57.C語言源程序名的后綴是A..exeB..CC..objD..cp
58.有定義語句:ihtb;charc[10];,則正確的輸入語句是
A.scanf("%d%s",&b,&c);
B.scanf("%d%s",&b,c);
C.scanf("%d%s",b,c);
D.scanf("%d%s",b,&c);
59.對于長度為n的線性表,在最壞的情況下,下列各排序法所對應(yīng)的比較次數(shù)中三確的是
A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2
60.以下敘述中錯誤的是A.C語言是一種結(jié)構(gòu)化程序設(shè)計語言
B.結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成
C.使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題
D.結(jié)構(gòu)化程序設(shè)計提倡模塊化的設(shè)計方法
四、選擇題(20題)61.成功的測試是指A.A.運行測試實例后未發(fā)現(xiàn)錯誤
B.發(fā)現(xiàn)程序的錯誤
C.證明程序正確
D.軟件產(chǎn)生
62.
63.有以下程序:main{intx,i;for(i=l;i<=50;i++){x=i:if(x%2=0)if(x%3=0)if(X%7=0)printf(”%d,i)”;}}輸出結(jié)果是()。A.28B.27C.42D.4l
64.(8)數(shù)據(jù)庫系統(tǒng)的核心是()
A.數(shù)據(jù)模型
B.數(shù)據(jù)庫管理系統(tǒng)
C.軟件工具
D.數(shù)據(jù)庫
65.
66.在以下選項中,不正確的賦值語句是()。
A.i++;B.nl=(n2=(n3=0..;C.m+n=1;D.i=k==j;
67.
68.有以下程序段當(dāng)執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。
A.566.0B.55566.0C.7777.0D.566777.0
69.
70.下列敘述中正確的是()。A.A.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句B.cotinue語句的作用是結(jié)束整個循環(huán)的執(zhí)行
C.在循環(huán)體內(nèi)使用break語句或continue語句的作用相同
D.從多層循環(huán)嵌套中退出時,只能使用got0語句
71.有以下程序程序的運行結(jié)果是()。
A.CDEFB.ABEFC.ABCDD.CDAB
72.有以下程序
main()
{
intx=3,y=2,z=1;
printf("%d\n",x/y&~z);
}
程序運行后的輸出結(jié)果是
A.3B.2
C.1D.0
73.在結(jié)構(gòu)化程序設(shè)計中,模塊劃分的原則是()。
A.各模塊應(yīng)包括盡量多的功能
B.各模塊的規(guī)模應(yīng)盡量大
C.各模塊之間的聯(lián)系應(yīng)盡量緊密
D.模塊內(nèi)具有高內(nèi)聚度,模塊間具有低耦合度
74.
75.有以下程序:
程序運行后的輸出結(jié)果是()。
A.0B.1C.4D.8
76.下列敘述中正確的是()。A.算法的效率只與問題的規(guī)模有關(guān),而與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
B.算法的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量
C.數(shù)據(jù)的邏輯結(jié)構(gòu)與存儲結(jié)構(gòu)是一一對應(yīng)的
D.算法的時間復(fù)雜度與空間復(fù)雜度一定相關(guān)
77.
78.下述程序執(zhí)行的輸出結(jié)果是()。
#include<stdio.h>
main()
{chara[2][4];,
strcpy(a。"are");strcpy(a[1],"you");
a[o][3]=&;
printf("%s\n",a);
}
A.are&you
B.you
C.are
D.&
79.有以下程序
80.
五、程序改錯題(1題)81.下列給定的程序中,函數(shù)proc()的功能是:計算并輸出k以內(nèi)最大的10個能被15或18整除的自然數(shù)之和,k的值由主函數(shù)傳人。若k的值為800,則函數(shù)的值為7605。
請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(),該函數(shù)的功能是使數(shù)組上三角元素中的值乘以m。若m的值為2,a數(shù)組中的值為197238456則返回主程序后a數(shù)組中的值應(yīng)為2181426164512注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#include5#defineN56voidfun(inta[][N],intm)7{89}10main()11{12inta[N][N],m,i,j;13FILE*out;14printf("***Thearray***\n");15for(i=0;i<n;i++)16{for(j=0;j<n;i++)27{for(j=0;j38{for(j=0;j<n;j++)39fprintf(out,"%4d",a[i][j]);40fprintf(out,"\n");41}42fclose(out);43/*********found********/44}1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j<n;j++)5:for(i=0;i<=j;i++)6:a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/
參考答案
1.D形參是定義函數(shù)時由用戶定義的。實參是函數(shù)調(diào)用時,主調(diào)函數(shù)為被調(diào)函數(shù)提供的原始數(shù)據(jù)。在C語言中,實參向形參傳送數(shù)據(jù)的方式是“值傳遞'是單向傳遞。故本題答案為D選項。
2.A
3.A根據(jù)題意,要使a的值為111,b的值為333,必須在讀入時指定a的讀入寬度為3,b的讀入寬度為3,且a和b的控制字符之間必須額外增加%*控制符,用于跳過中間的3位輸入數(shù)字,選項A正確。本題答案為A選項。
4.A函數(shù)返回值類型可以是簡單類型和結(jié)構(gòu)體類型。
5.B題目中的選項都以轉(zhuǎn)義字符“\\”開頭,“\\ddd”表示3位八進制數(shù)代表的一個ASCII字符,“\\xhh”表示2位十六進制數(shù)代表的一個ASCII字符。選項A中“089”是不合法的八進制數(shù),錯誤;選項C、D中“\\0X”或“\\0x”不合法,錯誤;選項B表示八進制數(shù)012代表的ASCII字符,正確。本題答案為B選項。
6.B子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第l次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第l次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。
7.B
\n棧是線性表的一種,它的特點是先進后出,并且只能在表的一端進行插入和刪除操作的線性表,入棧和出棧都是在棧頂進行,因此具有記憶作用,棧可以采用順序存儲,也可以采用鏈?zhǔn)酱鎯Α?/p>
\n
8.A解析:希爾排序法的基本思想是:將整個無序列分割成若干小的子序列分別進行插入排序。
9.B
10.D題干中,函數(shù)fun的功能是將二維數(shù)組p的行下標(biāo)為1、列下標(biāo)為1的元素(p[1][1])的值賦給二維地址s指向的*s所指向的存儲單元。main函數(shù)中定義了整型指針p,動態(tài)分配了整型長度的內(nèi)存空間,調(diào)用函數(shù)fun將數(shù)組元素a[1][1],即9賦給p所指向的空間。本題答案為D選項。
11.D本題考查函數(shù)返回值作參數(shù),最初n=1,f(n)=f(1)=2,將f(n)的結(jié)果代入第二個f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。
12.A
13.B二叉樹的前序序列為ABCD,由于前序遍歷首先訪問根節(jié)點,可以確定該二叉樹的根節(jié)點是A。再由中序序列為BCDA,可知以A為根節(jié)點的該二叉樹只存在左子樹,不存在右子樹,故后序序列為DCBA。本題答案為B選項。
14.C
15.B程序首先給字符數(shù)組s賦值為“012xy”。for循環(huán)語句的功能是遍歷字符串,通過if條件語句對字符串中的小寫字母進行計數(shù),字符串中小寫字母個數(shù)為2,即n=2。故本題答案為B選項。
16.A
17.C本題考查for循環(huán)及if語句。當(dāng)執(zhí)行到第一個滿足(i*i>一20)&&(i*i<=100)這個條件的i出現(xiàn)時,break跳出循環(huán),執(zhí)行下列的printf語句。
18.D
19.C解析:在n個結(jié)點的單向鏈表(無表頭結(jié)點)中,每個結(jié)點都有一個指針單元(即指針域),加上頭指針,至少需要n+1個指針單元。
20.D
21.投影投影解析:在關(guān)系模型的數(shù)據(jù)語言中,一般除了運用常規(guī)的集合運算,(并、交,差、笛卡爾積等)外,還定義了一些專門的關(guān)系運算,如投影、選擇、連接等。投影是從二維表的列方向上進行的運算。
22.生命期生命期解析:軟件的生存周期是軟件工程最基本的重要概念。軟件產(chǎn)品和其他產(chǎn)品的生產(chǎn)一樣,都要經(jīng)過分析、設(shè)計、制造、檢測和運行使用幾個階段。通常,把軟件從開始研制(形成概念)到最終軟件被廢棄這整個過程稱為軟件的生命期。
23.20020,0解析:在主函數(shù)中首先定義了3個整型變量x、y、t,并分別給它們賦初值為10、20、0,接著執(zhí)行汀語句,在if后面括號內(nèi)的條件表達(dá)式中,條件x==y即10==20不成立,則不執(zhí)行其后的語句t=x,然后退出if語句,順序執(zhí)行語句x=y;y=t;。執(zhí)行完這兩條語句后x的值變?yōu)?0,y的值變?yōu)?,所以最后輸出x、y的值為20和0。
24.S[j++]=s[i]S[j++]=s[i]解析:循環(huán)開始后如果數(shù)組s中儲存值與字符c相同,則i++直接跳過當(dāng)前值;如果不相同,則將當(dāng)前值賦予數(shù)組指定位置,并通過j++將下標(biāo)加1,指向下一元素要存儲的位置。
25.棧棧解析:棧和隊列都是—種特殊的操作受限的線性表,只允許在端點處進行插入和刪除。二者的區(qū)別是:棧只允許在表的—端進行插入或刪除操作,是—種“先進后出”的線性表;而隊列只允許在表的—端進行插入操作,在另—端進行刪除操作,是—種“先進先出”的線性表。
26.b=3b=3解析:條件表達(dá)式的基本格式為:“表達(dá)式1?表達(dá)式2:表達(dá)式3”;其功能是:表達(dá)式1的值若非0,則計算表達(dá)式2的值,且為最終結(jié)果;若表達(dá)式1的值為0,則計算表達(dá)式3的值,且為最終結(jié)果。因為a=3,則a>=0成立,所以b=a=3。
27.s-1或--s或s--*s++s-1或--s或s--\r\n*s++解析:在函數(shù)。strcpy2()中,首先將指針t保存到指針p中,然后進入第1個while()循環(huán),其循環(huán)條件為*s++=*t++,其中“*”和“++”運算符的優(yōu)先級相同,但他們的結(jié)合性為從右至左,而“=”運算符優(yōu)先級比較低,所以原表達(dá)式等價于(*s++)=(*(t++)),即將t當(dāng)前所指內(nèi)容復(fù)制到s當(dāng)前所指地址中,然后讓s和t同時往后移動一位,整個表達(dá)式返回的是復(fù)制給s的值。所以,當(dāng)t所指內(nèi)容是字符串結(jié)束符'\\0',時,while循環(huán)結(jié)束,原先t所指的整個字符串也就復(fù)制到s所指的地址中去了。但是,while循環(huán)最后一次判斷也會讓s和t往后移動一位,即此時s指向了字符串結(jié)束符'\\0'的后一位。所以第2次復(fù)制字符串之前,應(yīng)先將s指針往回移動一位,故前一空應(yīng)該填入s-1或其他等價形式。接下來的while循環(huán)實現(xiàn)第二次復(fù)制,照抄第1次的while循環(huán)就行,故后一空應(yīng)填入*s++。
28.55解析:主函數(shù)首先聲明了一個結(jié)點數(shù)組s[3],并分別初始化其成員num為1,2、3,而成員next全部被初始化為'\\0',也就是0。下面又用三條語句s[0].next=s+1;s[1].next=s+2;s[2].next=s;分別將三個結(jié)點指向其后面一個結(jié)點,而最后一個結(jié)點指向笫1個結(jié)點,構(gòu)造出一條單向循環(huán)鏈表。接下來用結(jié)點指針p=s即讓其指向s[0],然后讓q=p->next,即指向了s[1],r=-q->next即讓r指向s[2],然后讓一個累計變量sam累加q->next->hum和r->next->next->num,因為q指向s[1)所以它的next指針指向的是s[2],故第1次累加的是s[2].num=3,而r指向的是s[2]所以它的next是s[0],s[0]的next指向s[1],故笫2次累加的是s[1].num=2。所以程序最終輸出結(jié)果為5。
29.時間時間解析:算法的復(fù)雜度主要指時間復(fù)雜度和空間復(fù)雜度。
30.*(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]。
31.struetnode*struetnode*解析:本題中的結(jié)構(gòu)類型名為struetnode,所以空白處應(yīng)填:structnode*,即定義一個指向自身的結(jié)構(gòu)體指針。
32.1919解析:根據(jù)二叉樹的性質(zhì):在任意一棵二叉樹中,度為。的結(jié)點(即葉子結(jié)點)總是比度為2的結(jié)點多一個。本題中度為2的結(jié)點數(shù)為18,故葉子結(jié)點數(shù)為18+1=19個。
33.程序程序解析:按照軟件工程學(xué)的觀點,一個完整的軟件系統(tǒng)不僅包括一整套供計算機系統(tǒng)執(zhí)行所必須的計算機化了的數(shù)據(jù)信息(簡稱為程序),還應(yīng)包括一整套供計算機領(lǐng)域的技術(shù)人員和用戶使用的非計算機化的文檔資料。
34.11解析:本題考查局部變量和全局變量的區(qū)別:局部變量是指作甩域在函數(shù)級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。
35.在主函數(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],p[3][0]=8,所以程序輸出的結(jié)果為2、4、6、8。\r\n\r\n
36.x=11x=11解析:在對無符號數(shù)的右移是高位補0。
37.1371513715解析:程序中n是一個有5個元素,且元素值全為0的數(shù)組。在for循環(huán)中,當(dāng)i=1時,n[1]=n[0]*2+1,此時n[1]=1;i=2時,n[2]=n[1]*2+1,此時n[2]=3;i=3時,n[3]=n[2]*2+1,此時n[3]=7;i=4時,n[4]=n[3]*2+1,此時n[4]=15,循環(huán)結(jié)束。輸出函數(shù)中%d后有空格,因此輸出結(jié)果為13715。
38.x<ar[i][j]x<ar[i][j]解析:本題考查的是循環(huán)的嵌套。本題定義了二維數(shù)組a,存放3行4列的數(shù)組元素,定義了,一維數(shù)組b用于存放每行的最大數(shù)。存函數(shù)fun中,通過二重for循環(huán)求每行的最大數(shù),外層for循環(huán)用于控制行數(shù),內(nèi)層for循環(huán)用于控制列數(shù)。當(dāng)外層循環(huán)執(zhí)行一次時,內(nèi)層循環(huán)則執(zhí)行4次,并求出了這一行的最大值x,最后將每一行求出最大值x賦值給存放最大值的數(shù)組br,故本題答案為x<ar[i][j]。
39.1515解析:在函數(shù)f()中只有一條if語句,如果n不小于1,則返回f(a,n-1)+a[n-1);,否則返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3]……直到f(aa,0)返回0.故f(aa,5)實際返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本題最終輸出15。
40.n/2n/2解析:刪除—個元素,平均移動的元素個數(shù)為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數(shù)為(n+n-1+n-2+…+1)/n=(n+1)/2:所以總體平均移動元素個數(shù)為n/2。
41.A解析:C語言的常量分為整型常量、實型常量和字符型常量。本題中包含整型常量和實型常量。選項B)以0打頭,應(yīng)該屬于八進制整數(shù),而八進制整數(shù)只能用數(shù)字0~7表示,所以選項B)不合法;選項C)和D)從形式上看屬于實型常量,但對于指數(shù)形式的實型常量,e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),所以選項C)和D)都不合法;選項A)屬于實型常量中正確的十進制小數(shù)形式。
42.C解析:分析程序可知,該程序?qū)崿F(xiàn)的功能是對數(shù)m,n求其最大公約數(shù)。在本題中m與n的值分別為65與14,其最大公約數(shù)為1,故其輸出結(jié)果為m=1。
43.C解析:只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句。當(dāng)break出現(xiàn)在循環(huán)體的switch語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設(shè)置break語句,滿足某種條件,則跳出本層循環(huán)體。
44.B解析:NULL的代碼值為0,所以printf('%d\\n',NULL)相當(dāng)于printf('\\n',0)。
45.D解析:首先定義了一個指向一維數(shù)組b的指針p,一個指向指針p的指針變量q,輸出*(p++)是先輸出*p即b[0]的值,再將指針p指向數(shù)組的下一個元素b[1],輸出**q是輸出指針p所指單元的內(nèi)容,即b[1]的值。
46.C解析:考查位運算的運算原理。<<為左移運算符,運算符的左邊是移位對象;右邊是整型表達(dá)式,代表左移的位數(shù),左移時,右端(低位)補0;左端(高位)移出的部分舍棄。
47.D解析:面向?qū)ο蠓椒ㄊ且环N運用對象、類、封裝、繼承、多態(tài)和消息等概念來構(gòu)造、測試、重構(gòu)軟件的方法。面向?qū)ο蠓椒◤膶ο蟪霭l(fā),發(fā)展出對象、類、消息、繼承等概念。
48.B解析:選項A中&(*p).age代表的是std[0].age的地址,是正確的,選項C也是正確的,選項D先用指針變量引用結(jié)構(gòu)型的成員sex,然后取它的地址,也是正確的,選項B中的是錯誤的引用,因為std是數(shù)組名,代表的是數(shù)組的首地址,地址沒有成員name。所以B選項為所選。
49.B解析:本程序首先定義了靜態(tài)字符數(shù)組a,然后將指針p指向數(shù)組a的首地址。
第1次for循環(huán),p=a,p指向數(shù)組的第1個元素,*p是取指針p所指地址的內(nèi)容,輸出1;第2次for循環(huán),p=p+2,則p指向數(shù)組的第3個元素,*p是取指針p所指地址的內(nèi)容,輸出n;第3次for循環(huán),p=p+2,則p指向數(shù)組的第5個元素,*p是取指針p所指地址的內(nèi)容,輸出u;第4次for循環(huán),p=p+2,則p指向數(shù)組的第7個元素,*p是取指針p所指地址的內(nèi)容,輸出g,結(jié)束循環(huán)。
50.A解析:本題考查printf函數(shù)的格式。“%5.2f”格式符中的“f”表示以帶小數(shù)點的形式輸出單精度或者雙精度數(shù):“5”表示指定數(shù)據(jù)輸出寬度為5;“.2”表示指定輸出數(shù)據(jù)小數(shù)位占2位數(shù),并對截去的第一位小數(shù)做四舍五入處理。
51.B解析:本題考查通過scanf函數(shù)輸入數(shù)據(jù)時的格式控制問題。變量j的格式控制為“%2d”,即只接收輸入數(shù)據(jù)的前兩位,從第三位開始直到空格之間的輸入都會被保存到變量y中,因為y為浮點型數(shù)據(jù),所以輸出結(jié)果為選項B)。
52.B
53.C解析:說明語句中變量a為整型,變量b為實型。選項A、B和D的格式控制中變量a的格式描述符為f,與定義的變量類型不符,故選項A、B和D錯誤。
54.A解析:C函數(shù)的參數(shù)傳遞方式采用按值傳遞,不能通過調(diào)用函數(shù)改變形參指針本身的值,只能改變指針?biāo)缸兞康闹?。調(diào)用point函數(shù)時,將實參指針p的值(b數(shù)組的首地址)傳給了形參指針P,P+=3運算使形參指針指向字符d,但并不能改變main函數(shù)中p的值,所以本題正確答案應(yīng)該是選項A)。
55.D解析:$不能用做變量名,合法的標(biāo)識符由字母、數(shù)字和下畫線組成。
56.B解析:本題考查二維數(shù)組的定義方式。第一維的大小由以下方法判斷:
①當(dāng)初值的個數(shù)能被第二維的常量表達(dá)式的值除盡時,所得商數(shù)就是第一維的大小;
②當(dāng)初值的個數(shù)不能被第二維的常量表達(dá)式的值除盡時,則第一維的大?。核玫纳虜?shù)+1。
57.B解析:C語言源程序的后綴為.c;經(jīng)過編譯得到的目標(biāo)程序文件的后綴為.obj;再將目標(biāo)程序文件鏈接后得到可執(zhí)行文件的后綴為.exe。故本題應(yīng)該選擇B。
58.B解析:定義b為整型數(shù),c為字符數(shù)組,所以在輸入語句的地址表列中,要在b前加上取址符“&”,而c就是字符數(shù)組的首地址,所以不用加上取址符&。
59.D解析:冒泡排序法在最壞的情況下需要比較的次數(shù)為n(n-1)/2,快速排序法在最壞的情況下需要比較的次數(shù)也為n(n-1)/2。
60.C解析:結(jié)構(gòu)化程序設(shè)計是指在程序的構(gòu)成上只使用順序、選擇(即分支)和循環(huán)3種結(jié)構(gòu)組成的編程方式。它強調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化,提倡清晰的結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計方法的基本思路,是把一個復(fù)雜問題的求解過程分階段進行,每個階段處理的問題都控制在人們?nèi)菀桌斫夂吞幚淼姆秶鷥?nèi)。結(jié)構(gòu)化程序設(shè)計提倡模塊化的設(shè)計方法。
61.B軟件測試的目的主要有以下幾個方面。
(1)軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。
(2)一個好的測試用例能夠發(fā)現(xiàn)至今尚未發(fā)現(xiàn)的錯誤。
(3)一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。
另外,即使經(jīng)過了最嚴(yán)格的測試,可能仍然還有沒被發(fā)現(xiàn)的錯誤藏在程序中,測試只是找出程序中的錯誤,不能證明程序中沒有錯誤。
62.D
63.C只有當(dāng)3個if條件同時成立,即能夠同時被2、3、7整除時,才輸出i的值,而從0到50能夠同時被2、3、7整除的數(shù)只有42,故選擇C選項。
64.B數(shù)據(jù)庫管理系統(tǒng)是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護、控制及保護和數(shù)據(jù)服務(wù)等,因此數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫系統(tǒng)的核心。
65.C
66.C賦值運算符的左邊只能是變量,而不能是常量或表達(dá)式。
67.A
68.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域?qū)?。在百分?%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。
69.B
70.A本題考查循環(huán)跳出的知識點:①break語句可以出現(xiàn)在switch循環(huán)體內(nèi)及語句體內(nèi),它的作用是跳出循環(huán)體,不能用于其他的語句;②continue語句的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,而接著判定循環(huán)條件是否成立,確定下一次循環(huán)是否繼續(xù)執(zhí)行,執(zhí)行contiune語句不會使整介循環(huán)終止;③循環(huán)體內(nèi)使用break語句會使循環(huán)提前終止;④從多層循環(huán)嵌
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東水利電力職業(yè)技術(shù)學(xué)院《數(shù)字邏輯設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東生態(tài)工程職業(yè)學(xué)院《建筑裝飾工程概預(yù)算》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東梅州職業(yè)技術(shù)學(xué)院《地下水污染與防治》2023-2024學(xué)年第一學(xué)期期末試卷
- 【2022屆走向高考】高三數(shù)學(xué)一輪(人教B版)基礎(chǔ)鞏固:第2章-第1節(jié)-函數(shù)及其表示
- 廣東省揭陽市榕城區(qū)2024-2025年第一學(xué)期期終質(zhì)量檢測小學(xué)五年級語文科試卷(有答案)
- 【金版學(xué)案】2014-2021學(xué)年高中歷史優(yōu)化訓(xùn)練(人教版必修3)第11課-物理學(xué)的重大進展
- 【全程復(fù)習(xí)方略】2020年人教A版數(shù)學(xué)理(福建用)課時作業(yè):第十章-第九節(jié)離散型隨機變量的均值與方差
- 2022屆《創(chuàng)新設(shè)計》數(shù)學(xué)一輪課時作業(yè)(文科)(浙江專用)-第四章-三角函數(shù)、解三角形-4-2
- 四年級數(shù)學(xué)(四則混合運算)計算題專項練習(xí)與答案匯編
- 會議應(yīng)急預(yù)案策劃包括哪些內(nèi)容
- 2025版工業(yè)制造工程墊資建設(shè)合同2篇
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實踐指導(dǎo)材料之4:4組織環(huán)境-4.2理解相關(guān)方的需求和期望(雷澤佳編制-2025B0)
- 2024年一級支行行長競聘演講稿例文(4篇)
- 健身房銷售人員培訓(xùn)
- 建筑工程施工合同:游泳館建設(shè)
- 中建中建機械頂管專項方案范本
- 機動車檢測站程序文件(根據(jù)補充要求修訂)
- 廣東省廣州市2022-2023學(xué)年高二上學(xué)期期末考試化學(xué)試題
- 2024-2025學(xué)年 數(shù)學(xué)二年級上冊冀教版期末測試卷(含答案)
- 人教版-六年級上數(shù)學(xué)-扇形統(tǒng)計圖單元測試(含答案)
- 2023年題工會基礎(chǔ)知識試題及答案
評論
0/150
提交評論