版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.下列敘述中錯誤的是()。
A.線性表是由n個元素組成的一個有限序列
B.線性表是一種線性結(jié)構(gòu)
C.線性表的所有結(jié)點有且僅有一個前件和后件
D.線性表可以是空表
2.
3.
4.
5.若x,y均定義為int型,z定義為double型,以下不合法的scanf函數(shù)調(diào)用語句是()。A.scanf(“%d%lx,%le”,&x,&y,&z);
B.scanf(“%2d*%d%lf”&x,&y,&z);
C.scanf(“%x%*d%o”,&x,&y);
D.scanf(“%x%o%6.2f”,&x,&y,&z)
6.
7.
8.有以下程序voidss(char*s,chart){while{*s)if(*s==t)*s-t-'a'+'A';S++;main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結(jié)果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
9.
10.下列二叉排序樹中查找效率最高的是()
A.平衡二叉樹B.二叉查找樹C.沒有左子樹的二叉排序樹D.沒有右子樹的二叉排序樹
11.運行下面程序段的輸出結(jié)果是().A.A.Set
B.Setup
C.Setup
D.'S''e''t'
12.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結(jié)果是
#include<stdio.h>
main()
{charc;
intv0=1,v1=0,v2=0;
do{switch(c=getchar())
{case′a′:case′A′:
case′e′:case′E′:
case′i′:case′I′:
case′o′:case′O′:
case′u′:case′U′:v1+=1;
default:v0+=1;v2+=1;}}while(c!='\n');
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
A.v0=7,v1=4,v2=7
B.v0=8,v1=4,v2=8
C.v0=11,v1=4,v2=11
D.v0=13,v1=4,v2=12
二、2.填空題(12題)13.下列程序的運行結(jié)果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%\n",p);
}
14.以下程序用以刪除字符串中所有的空格,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[100]={"OurteacherteachClanguage!"};inti,j;
for(i=j=0;s[i]!='\0';i++)
if(s[i]!=''){()}
s[j]='\0';
printf("%s\n",s);
}
15.以下定義的結(jié)構(gòu)體類型包含兩個成員,其中成員變量info用來存放整型數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針。請將定義補充完整。
structnode
{intinfo;
【】Link;
};
16.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。
17.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數(shù)為______。
18.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
19.以下程序運行后的輸出結(jié)果是______。
main()
{intp=30;
printf{"%d\n",(p/3>0?p/10:p%3)};
}
20.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護。
21.下面程序的運行結(jié)果是()。
#include<stdio.h>
main()
{inta=25;
fun(&A);
}
fun(int*x)
{printf("%d\n",++*x);
}
22.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內(nèi)容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,161},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");
}
23.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。
24.設(shè)a、b、c為整形數(shù),且a=2,b=3,c=4則執(zhí)行完以下語句后,a的值是【】。
a*=16+(b++)-(++c);
三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun(),該函數(shù)的功能是:實現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。
例如,輸入下面矩陣:
123
456
789
其轉(zhuǎn)置矩陣為:
147
258
369
則程序輸出:
2610
61014
101418
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio,h>
voidfun(inta[3][3],intb[3][3])
{
}
main()
{
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},
t[3][3];
inti,j;
clrscr();
fun(a,t);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
26.已知學生的記錄由學號和學習成績構(gòu)成,N名學生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是:找出成績最低的學生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最低分)。己給出函數(shù)的首部,請完成該函數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#include<aonio.h>
#defineN10
typedefstructss
{charnum[10];
ihts;
}STU;
fun(STUail,STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80),{"Al0",71}},m;
inti;
clrscr0;
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",ail].num,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thelowest:%s,%d\n",m.num,
m.s);
}
27.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請編寫一個函數(shù)fun(),函數(shù)的功能是:求數(shù)組周邊元素的平方和,并作為函數(shù)值返回給主函數(shù)。例如,若數(shù)組a中的值為
01279
1112155
2216111
979102
54141
則返回主程序后s的值應為310。
[注意]部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
[試題源程序]
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineN5
intfun(intw[][N])
{
}
main()
{
inta[N][N]=(0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1);
inti,j;
ints;
clrscr()
printf("*****Thearray*****\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
s=fun(a);
printf("*****THERESULT*****\n");
printf("Thesumis:%d\n",s);
}
28.請編寫一個函數(shù)voidfun(intm,intk,intxx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。
例如,若輸入17,5,則應輸出19,23,29,3l,37。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,intk,intxx[])
{
}
main()
{
intm,n,zz[1000];
clrscr();
printf("\nPleaseentertwointegers:");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=O;m<n;m++)
printf("%d",zz[m]);
printf("\n");
}
29.已知學生的記錄由學號和學習成績構(gòu)成,N名學生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是;找出成績最高的學生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最高分)。已給出函數(shù)的首部,請完成該函數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#defineN10
typedefstructss/*定義結(jié)構(gòu)體*/
{charnum[10];
ints;
}STU;
fun(STUa[],STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80},{"A10",71}},m;
inti;
clrscr();
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",a[i].hum,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thetop:%s,%d\n",m.num,m.s);
}
30.請編寫函數(shù)fun,其功能是:計算并輸出3~n之間(含3和n)所有素數(shù)的平方根之和。
例如,在主函數(shù)中從鍵盤為n輸入100后,輸出為:sum=148.874270。
[注意]要求n的值大于2但不大于100。
[注意]部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
[試題源程序]
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doublesum;
printf("\n\nInputn:");
scanf("%d",&n);
sum=fun(n);
printf("kn\nsum=%f\n\n",sum);
}
31.請編寫函數(shù)fun(),它的功能是求Fibonacci數(shù)列中小于t的最大的一個數(shù),結(jié)果由函數(shù)返回。其中Fibonacci數(shù)列F(n)的定義為
F(0)=0,F(xiàn)(1)=1
F(n)=F(n-1)+F(n-2)
例如:t=1000時,函數(shù)值為987。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<math.h>
#include<stdio.h>
intfun(intt)
{
}
main()
{
intn;
clrscr();
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
}
32.請編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;kif((k+1)%10==0)
{printf("%5d",aa[k]);
printf("\n");}/*一行寫9個數(shù)*/
else
printf("%5d",aa[k]);
}
33.請編寫函數(shù)fun(),該函數(shù)的功能是:將兩個兩位數(shù)的正整數(shù)a,b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。
例如,當a=45時,b=12,調(diào)用到該函數(shù)后,c=5142。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(inta,intb,long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b:");
scanf(,%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n",c);
}
34.請編寫一個函數(shù)fun(),它的功能是:將ss所指字符串中所有下標為偶數(shù)位置的字母轉(zhuǎn)換為小寫(若該位置上不是字母,則不轉(zhuǎn)換)。
例如,若輸入ABC4efG,則應輸出aBc4efg。
注意:部分源程序給出如下。
請勿改動主函數(shù)miain和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*SS)
{
}
main()
{
chartt[81];
clrscr();
printf("\nPleaseenteranstringwithin80
characters:\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n
\%s",tt);
fun(tt);
printf("\nbecomes\n\%S\n",tt);
}
四、單選題(0題)35.判斷字符串s1是否大于字符串s2,應該使用()。
A.if(strcmp(s1,s2)<0)
B.if(s1>s2)
C.if(strcmp(s2,s1)<0)
D.if(strcmp(s1,s2))
五、單選題(0題)36.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值
B.執(zhí)行函數(shù)test后,函數(shù)不再返回
C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值
D.以上三個答案都是錯誤的
六、單選題(0題)37.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14
參考答案
1.CC.【解析】線性表是一種線性結(jié)構(gòu),由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結(jié)點沒有前件,最后一個結(jié)點沒有后件,其他結(jié)點有且只有一個前件和后件,所以選項C.是錯誤的。
2.A
3.B
4.A
5.D
6.D
7.B
8.B解析:本題中的函數(shù)ss()有兩個參數(shù),一個是字符型指針變量s,另一個是字符型變量t在函數(shù)中通過一個while循環(huán),在循環(huán)中一次取出s指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“s=t-'a'+'A':”(若是小寫字母,則把它轉(zhuǎn)換成大寫字母)語句。在主函數(shù)中執(zhí)行函數(shù)調(diào)用ss(strl,c),很顯然是把str1數(shù)組中所有字符“d”變成大寫字母,其他字符不變。所以4個選項中B正確。
9.B
10.A
11.A
12.D解析:本題考查switch語句的掌握。必須撐握以下內(nèi)容:首先應該明白switch語句的語法格式:
switch語句的語法格式為:
switch(表達式)
{
case常量表達式1:語句組1;
case常量表達式2:語句組2;
case常量表達式n:語句組n;
default:語句組n+1;
}
另外,以下幾點關(guān)于switch語句的重點:
①系統(tǒng)在執(zhí)行時計算開關(guān)表達式的值;②根據(jù)所得的值在各個case標號表達式中尋找匹配,直到發(fā)現(xiàn)與表達式匹配的標號(本例中匹配的是case\'B\':);\ue008③找\ue009到匹配后執(zhí)行后面相應的語句表,順序往下執(zhí)行;④如果無相匹配的標號,若存在default標號,則執(zhí)行該語句標號后面的語句表n+1;當不存在default標號時,不執(zhí)行switch中的任何一個語句表。
一般而言,在多分支結(jié)構(gòu)中總會出現(xiàn)'意外'的情況,這時均可歸入default程序段,作統(tǒng)一的處理。default標號是可選性的,不必每次都有,視需要而定。switch語句中還可以包含switch語句,形成switch的嵌套。
13.efghefgh解析:函數(shù)ss的作用是讓形參指針s指向該字符串的右半部分。主函數(shù)中首先定義了一個字符型指針變量p和字符型指針str,并初始化為“abcdefgh”,然后調(diào)用函數(shù)ss,將實參str傳給形參s,因此可知該函數(shù)返回的指針,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后輸出指針p(指針p的值為調(diào)用函數(shù)ss(str)的返回值)所指向的字符串為“efgh”。
14.s[j]=s[i];j++;s[j]=s[i];j++;解析:本題中相當于字符串s中存儲著含有空格的字符,當發(fā)現(xiàn)空格的時候就用這個空格字符后面的字符前移覆蓋這個空格字符,依次類推向后繼續(xù)。因此,應填s[j]=s[i];j++;兩條語句。
15.structnode*structnode*解析:link是指向結(jié)構(gòu)體自身的指針,因此link是指針,指向strictnode類型的數(shù)據(jù),可定義成“stmctnode*link”。
16.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進行測試。
17.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現(xiàn)在的順序與目標順序正好相反),冒泡排序需要經(jīng)過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數(shù)為N(N-1)/2。
18.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系表達式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=2,所以z=2;當y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。
19.33解析:本題考核的知識點是條件運算符的運用。三目運算表達式的規(guī)則為如果“?”前面表達式的值為真,則取“:”前的表達式的值,否則,取“:”后面表達式的值。又由于條件運算符的結(jié)合方向是自右向左的,所以在本試題中,先計算表達式中p%3,該值為0,在計算表達式P/10其值為3,最后計算表達式p/3該值為10.所以此表達式等價于“10?3:0”,顯然取“:”前的僵為3,所以最后輸出的值為3。
20.完善性軟件維護活動包括以下幾類:改正性維護,適應性維護、完善性維護和預防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。
21.2626解析:在主函數(shù)中只調(diào)用了fun函數(shù),調(diào)用時把變量a的地址傳遞給形參。fun函數(shù)的形參x是一個指針,其基類型與主函數(shù)中a的類型一致,因此在調(diào)用時得到的是a的地址,輸出項是++*x,*x代表的就是主函數(shù)中變量a的存儲單元,++*x就是使主函數(shù)中a的值加1,輸出26。
22.224682\r\n2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當i=0時,p[0]=&x[1],p[0][0]=2;當i=1時,p[1==&x[3],p[1][0]=4;當i=2時,p[2]=&x[5],p[2][0]=6;當i=3時,p[3]=&x[7],p[3][0]=8,所以程序輸出的結(jié)果為2、4、6、8。
23.1212解析:x=(表達式1,表達式2,…)的形式,結(jié)果為最后一個表達式的值:x=(a=4,6*2)=2*6=12。
24.28
25.voidfun(inta[3][3]intb[3][3]){intij;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置存放在矩陣b中*/}voidfun(inta[3][3],intb[3][3])\r\n{\r\ninti,j;\r\nfor(i=0;i<3;i++)\r\nfor(j=0;j<3;j++)\r\nb[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中*/\r\n}解析:在《線性代數(shù)》里面有矩陣轉(zhuǎn)置的概念,行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對應原矩陣的第j行第i列。
若要將矩陣a轉(zhuǎn)置后還存入a中可用程序:
inti,j,t;
for(i=0;i<N;i++)
for(j=i;j<N;j++)
{t=a[i][j];a[i][j]=a[j][i];a[j][ii=t;}
注意第2個循環(huán)的初值。
若要將矩陣a轉(zhuǎn)置后存入c中:
inti,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
c[i][j]=a[j][i];
注意數(shù)組c和a的下標。
26.fun(STUa[]STU*s){inti;*s=a[0];for(i=0;i<N;i++)/*先認為第1個值最小*/if(s->s>aIi].s)/*如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個值更小的則賦給*s*/*s=a[i];}fun(STUa[],STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*先認為第1個值最小*/\r\nif(s->s>aIi].s)/*如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個值更小的則賦給*s*/\r\n*s=a[i];\r\n}解析:我們先認為第1個值最小,即*s=a[0]語句,如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個值更小的隨即賦給該*s就可以了。另外,還涉及到結(jié)構(gòu)體中的指向運算符,請學習者注意。若要找出最高成績則if()中的條件改成s->s<a[i].s即可。
27.intfun(intw[][N]){intijk=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1){s=s+w[i][j]*w[i][j];}returns;}intfun(intw[][N])\r\n{\r\ninti,j,k=0;\r\nints=0;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<N;j++)\r\nif(i==0||i==N-1||j==0||j==N-1)\r\n{\r\ns=s+w[i][j]*w[i][j];\r\n}\r\nreturns;\r\n}
28.voidfun(intmintkintxx[]){intijn;for(i=m+1n=0;n<k;i++)/*找大于m的素數(shù)循環(huán)k次即找出緊靠m的k個素數(shù)*/{for(j=2;j<i;j++)/*判斷一個數(shù)是否為素數(shù)如果不是跳出此循環(huán)判斷下一個數(shù)*/if(i%j==O)break;if(j>=i)/*如果是素數(shù)放入數(shù)組xx中*/xx[n++]=i;}}voidfun(intm,intk,intxx[])\r\n{\r\ninti,j,n;\r\nfor(i=m+1,n=0;n<k;i++)/*找大于m的素數(shù),循環(huán)k次,即找出緊靠m的k個素數(shù)*/\r\n{for(j=2;j<i;j++)/*判斷一個數(shù)是否為素數(shù),如果不是,跳出此循環(huán),判斷下一個數(shù)*/\r\nif(i%j==O)break;\r\nif(j>=i)/*如果是素數(shù),放入數(shù)組xx中*/\r\nxx[n++]=i;\r\n}\r\n}解析:本題只要掌握了判斷素數(shù)的算法即不難完成了,其實程序缺少部分也正是這部分。
29.fun(STUa[]STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*找出成績最高的學生記錄*/\r\nif(s->s<a[i].s)\r\n*s==a[i];\r\n}fun(STUa[],STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*找出成績最高的學生記錄*/\r\nif(s->s<a[i].s)\r\n*s==a[i];\r\n}解析:本題的流程是這樣的,先使s指向第1個學生,我們的題干目的是找出分數(shù)最高的學生,所以if語句的條件是s->s<a[i].s。此外,在做本題時,我們應該熟練掌握“指向運算符”和“成員運算符”的相關(guān)知識。題中“s->s”也可換成“(*s).s”。
30.doublefun(intn){intij=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j==i)s=s+sqrt(i);}returns;}doublefun(intn)\r\n{\r\ninti,j=0;\r\ndoubles=0;\r\nfor(i=3;i<=n;i++)\r\n{\r\nfor(j=2;j<i;j++)\r\nif(i%j==0)\r\nbreak;\r\nif(j==i)\r\ns=s+sqrt(i);\r\n}\r\nreturns;\r\n}
31.intfun(intt){inta=1b=1c=0i;/*a代表第n-2項b代表第n-1項c代表第n項*//*如果求得的數(shù)。比指定比較的數(shù)小則計算下一個Fibonacci數(shù)對ab得新置數(shù)*/do{c=a+b;a=b;b=c;}while(c<t);/*如果求得的數(shù)c比指定比較的數(shù)大時退出循環(huán)*/c=a;/*此時數(shù)c的前一個Fibonacci數(shù)為小于指定比較的數(shù)的最大的數(shù)*/returnc;}intfun(intt)\r\n{\r\ninta=1,b=1,c=0,i;/*a代表第n-2項,b代表第n-1項,c代表第n項*/\r\n/*如果求得的數(shù)。比指定比較的數(shù)小,則計算下一個Fibonacci數(shù),對a,b得新置數(shù)*/\r\ndo\r\n{\r\nc=a+b;\r\na=b;\r\nb=c;\r\n}\r\nwhile(c<t);/*如果求得的數(shù)c比指定比較的數(shù)大時,退出循環(huán)*/\r\nc=a;/*此時數(shù)c的前一個Fibonacci數(shù)為小于指定比較的數(shù)的最大的數(shù)*/\r\nreturnc;\r\n}解析:根據(jù)所給數(shù)列定義不難發(fā)現(xiàn),該數(shù)列最終的結(jié)果是由兩個數(shù)列之和組成,所以可以在循環(huán)內(nèi)部始終把c看成是前兩項之和(即第n項),而a始終代表第n-2項,b始終代表第n-1項(通過不斷地重新賦值來實現(xiàn))。應注意,退出循環(huán)時得到的數(shù)c是大于指定比較的數(shù)的最小的數(shù),而它的前一個數(shù)就是小于指定比較的數(shù)的最大的數(shù)。
32.voidfun(int*aint*n){intij=0;for(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù)并放入數(shù)組a中*/if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/}voidfun(int*a,int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<=1000;i++)/*求1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù),并放入數(shù)組a中*/\r\nif((i%7==0||i%11==0)&&i%77!=0)\r\na[j++]=i;\r\n*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/\r\n}解析:注意本題題目應是找出能被7或11整除但不能同時被7和11整除的所有整數(shù)。能同時被7和11整除的整數(shù)一定能被77整除,且不能被77整除的數(shù)不一定就是能被7或11整除的數(shù)。所以可得出程序中的if()。按運算優(yōu)先級可知(i%7==0||i%11==0),注意,兩邊必須要有小括號。
33.voidfun(intaihtblong*c){*c=a%10*i000+b/10*l00+a/10*10+b%10;/*將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上*/}voidfun(inta,ihtb,long*c)\r\n{\r\n*c=a%10*i000+b/10*l00+a/10*10+b%10;/*將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和\r\n個位數(shù)依次放在c數(shù)的百位和個位上*/\r\n}解析:本題中主要的問題是怎么取出a和b的個位數(shù)和十位數(shù),取出后怎么表示成c中相應的位數(shù)。由于a和b都是只有兩位的整數(shù),所以分別對它們除10可得到它們的十位數(shù),分別用10對它們求余可得到它們的個位數(shù)。如45/10結(jié)果為4而不是4.5(這是由于兩個數(shù)都為整型,所以結(jié)果出為整型),45%10結(jié)果為5。若a為45,則a/10*10的結(jié)果為40而非45。乘1000,乘100和乘10的作用是分別使其膠面的數(shù)成為*c的千位數(shù)、百位數(shù)。注意要使用c時要注意進行指針運算,即*c,不能少了*號。
34.voidfun(char*ss){inti;for(i=0;ss[i]!='\0'i++)/*將ss所指字符串中所有下標為偶數(shù)位置的字母轉(zhuǎn)換為小寫*/if(i%2==0&&ss[i]>='A'&&ss[i]<='z')ss[i]=ss[i]+32;}voidfun(char*ss)\r\n{\r\ninti;\r\nfor(i=0;ss[i]!='\\0'i++)/*將ss所指字符串中所有下標為偶數(shù)位置的字母轉(zhuǎn)換為小寫*/\r\nif(i%2==0&&ss[i]>='A'&&ss[i]<='z')\r\nss[i]=ss[i]+32;\r\n}解析:從C語言的學習中我們知道,只要將小寫字母減去32則轉(zhuǎn)成大寫字母,將大寫字母加上32則轉(zhuǎn)成小寫字母。該程序是用if語句實現(xiàn)該功能轉(zhuǎn)化的。
35.C解析:本題考查字符串比較函數(shù)strcmp()。調(diào)用形式:strcmp(s1,s2),其中s1、s2分別是字符串存儲區(qū)的首地址。函數(shù)功能:比較字符串str1和str2,當str1<str2時,返回值為負數(shù);當str1=str2時,返回0;當str1>str2,返回值為正數(shù)(注意:不能使用關(guān)系運算符比較兩個字符串的大小)。
36.A
37.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時不滿足a<8,跳出循環(huán)。2022年四川省瀘州市全國計算機等級考試C語言程序設(shè)計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.下列敘述中錯誤的是()。
A.線性表是由n個元素組成的一個有限序列
B.線性表是一種線性結(jié)構(gòu)
C.線性表的所有結(jié)點有且僅有一個前件和后件
D.線性表可以是空表
2.
3.
4.
5.若x,y均定義為int型,z定義為double型,以下不合法的scanf函數(shù)調(diào)用語句是()。A.scanf(“%d%lx,%le”,&x,&y,&z);
B.scanf(“%2d*%d%lf”&x,&y,&z);
C.scanf(“%x%*d%o”,&x,&y);
D.scanf(“%x%o%6.2f”,&x,&y,&z)
6.
7.
8.有以下程序voidss(char*s,chart){while{*s)if(*s==t)*s-t-'a'+'A';S++;main(){charstrl[100]="abcddfefdbd",c='d';ss(str1,c);printf("%s\n",str1);}程序運行后的輸出結(jié)果是
A.ABCDDEFEDBDB.abcDDfefDbDC.abcAAfefAbAD.Abcddfefdbd
9.
10.下列二叉排序樹中查找效率最高的是()
A.平衡二叉樹B.二叉查找樹C.沒有左子樹的二叉排序樹D.沒有右子樹的二叉排序樹
11.運行下面程序段的輸出結(jié)果是().A.A.Set
B.Setup
C.Setup
D.'S''e''t'
12.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結(jié)果是
#include<stdio.h>
main()
{charc;
intv0=1,v1=0,v2=0;
do{switch(c=getchar())
{case′a′:case′A′:
case′e′:case′E′:
case′i′:case′I′:
case′o′:case′O′:
case′u′:case′U′:v1+=1;
default:v0+=1;v2+=1;}}while(c!='\n');
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}
A.v0=7,v1=4,v2=7
B.v0=8,v1=4,v2=8
C.v0=11,v1=4,v2=11
D.v0=13,v1=4,v2=12
二、2.填空題(12題)13.下列程序的運行結(jié)果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%\n",p);
}
14.以下程序用以刪除字符串中所有的空格,請?zhí)羁铡?/p>
#include<stdio.h>
main()
{chars[100]={"OurteacherteachClanguage!"};inti,j;
for(i=j=0;s[i]!='\0';i++)
if(s[i]!=''){()}
s[j]='\0';
printf("%s\n",s);
}
15.以下定義的結(jié)構(gòu)體類型包含兩個成員,其中成員變量info用來存放整型數(shù)據(jù);成員變量link是指向自身結(jié)構(gòu)體的指針。請將定義補充完整。
structnode
{intinfo;
【】Link;
};
16.軟件測試中路徑覆蓋測試是整個測試的基礎(chǔ),它是對軟件【】進行測試。
17.度為10的線性表進行冒泡排序,最壞情況下需要比較的次數(shù)為______。
18.下列程序的輸出結(jié)果是【】。
main()
{
inta[]={2,4,6},*ptr=&a[0],x=8,y,z;
for(y=0;y<3;y++)
z=(*(ptr+y)<x)?*(ptr+y):x;
printf("%d\n",z);
}
19.以下程序運行后的輸出結(jié)果是______。
main()
{intp=30;
printf{"%d\n",(p/3>0?p/10:p%3)};
}
20.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護。
21.下面程序的運行結(jié)果是()。
#include<stdio.h>
main()
{inta=25;
fun(&A);
}
fun(int*x)
{printf("%d\n",++*x);
}
22.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內(nèi)容是【】。
#include<stdio.h>
main()
{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,161},*p[4],i;
for(i=0;i<4;i++)
{p[i]=&x[2*i+1];
printf("%d",p[i][0]);
}
printf("\n");
}
23.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。
24.設(shè)a、b、c為整形數(shù),且a=2,b=3,c=4則執(zhí)行完以下語句后,a的值是【】。
a*=16+(b++)-(++c);
三、3.程序設(shè)計題(10題)25.請編寫函數(shù)fun(),該函數(shù)的功能是:實現(xiàn)B=A+A',即把矩陣A加上A的轉(zhuǎn)置,存放在矩陣B中。計算結(jié)果在main()函數(shù)中輸出。
例如,輸入下面矩陣:
123
456
789
其轉(zhuǎn)置矩陣為:
147
258
369
則程序輸出:
2610
61014
101418
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio,h>
voidfun(inta[3][3],intb[3][3])
{
}
main()
{
inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},
t[3][3];
inti,j;
clrscr();
fun(a,t);
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
26.已知學生的記錄由學號和學習成績構(gòu)成,N名學生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是:找出成績最低的學生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最低分)。己給出函數(shù)的首部,請完成該函數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#include<aonio.h>
#defineN10
typedefstructss
{charnum[10];
ihts;
}STU;
fun(STUail,STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80),{"Al0",71}},m;
inti;
clrscr0;
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",ail].num,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thelowest:%s,%d\n",m.num,
m.s);
}
27.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請編寫一個函數(shù)fun(),函數(shù)的功能是:求數(shù)組周邊元素的平方和,并作為函數(shù)值返回給主函數(shù)。例如,若數(shù)組a中的值為
01279
1112155
2216111
979102
54141
則返回主程序后s的值應為310。
[注意]部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
[試題源程序]
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineN5
intfun(intw[][N])
{
}
main()
{
inta[N][N]=(0,1,2,7,9,1,11,21,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1);
inti,j;
ints;
clrscr()
printf("*****Thearray*****\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
s=fun(a);
printf("*****THERESULT*****\n");
printf("Thesumis:%d\n",s);
}
28.請編寫一個函數(shù)voidfun(intm,intk,intxx[]),該函數(shù)的功能是:將大于整數(shù)m且緊靠m的k個素數(shù)存入所指的數(shù)組中。
例如,若輸入17,5,則應輸出19,23,29,3l,37。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,intk,intxx[])
{
}
main()
{
intm,n,zz[1000];
clrscr();
printf("\nPleaseentertwointegers:");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=O;m<n;m++)
printf("%d",zz[m]);
printf("\n");
}
29.已知學生的記錄由學號和學習成績構(gòu)成,N名學生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是;找出成績最高的學生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最高分)。已給出函數(shù)的首部,請完成該函數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
#include<conio.h>
#defineN10
typedefstructss/*定義結(jié)構(gòu)體*/
{charnum[10];
ints;
}STU;
fun(STUa[],STU*s)
{
}
main()
{
STUa[N]={{"A01",81},{"A02",89},
{"A03",66},{"A04",87},{"A05",77},
{"A06",90},{"A07",79},{"A08",61},
{"A09",80},{"A10",71}},m;
inti;
clrscr();
printf("*****Theoriginaldata*****");
for(i=0;i<N;i++)
printf("No=%sMark=%d\n",a[i].hum,
a[i].s);
fun(a,&m);
printf("*****THERESULT*****\n");
printf("Thetop:%s,%d\n",m.num,m.s);
}
30.請編寫函數(shù)fun,其功能是:計算并輸出3~n之間(含3和n)所有素數(shù)的平方根之和。
例如,在主函數(shù)中從鍵盤為n輸入100后,輸出為:sum=148.874270。
[注意]要求n的值大于2但不大于100。
[注意]部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
[試題源程序]
#include<math.h>
#include<stdio.h>
doublefun(intn)
{
}
main()
{
intn;
doublesum;
printf("\n\nInputn:");
scanf("%d",&n);
sum=fun(n);
printf("kn\nsum=%f\n\n",sum);
}
31.請編寫函數(shù)fun(),它的功能是求Fibonacci數(shù)列中小于t的最大的一個數(shù),結(jié)果由函數(shù)返回。其中Fibonacci數(shù)列F(n)的定義為
F(0)=0,F(xiàn)(1)=1
F(n)=F(n-1)+F(n-2)
例如:t=1000時,函數(shù)值為987。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<math.h>
#include<stdio.h>
intfun(intt)
{
}
main()
{
intn;
clrscr();
n=1000;
printf("n=%d,f=%d\n",n,fun(n));
}
32.請編寫函數(shù)fun(),它的功能是:求出1到1000之內(nèi)能被7或11整除、但不能同時被7和11整除的所有整數(shù)并將它們放在a所指的數(shù)組中,通過n返回這些數(shù)的個數(shù)。
注意:部分源程序給出如下。
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(int*a,int*n)
{
}
main()
{
intaa[1000],n,k;
clrscr();
fun(aa,&n);
for(k=0;kif((k+1)%10==0)
{printf("%5d",aa[k]);
printf("\n");}/*一行寫9個數(shù)*/
else
printf("%5d",aa[k]);
}
33.請編寫函數(shù)fun(),該函數(shù)的功能是:將兩個兩位數(shù)的正整數(shù)a,b合并形成一個整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上,b數(shù)的十位和個位數(shù)依次放在c數(shù)的百位和個位上。
例如,當a=45時,b=12,調(diào)用到該函數(shù)后,c=5142。
注意:部分源程序給出如下.
請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(inta,intb,long*c)
{
}
main()
{
inta,b;
longc;
clrscr();
printf("Inputa,b:");
scanf(,%d%d",&a,&b);
fun(a,b,&c);
printf("Theresultis:%ld\n",c);
}
34.請編寫一個函數(shù)fun(),它的功能是:將ss所指字符串中所有下標為偶數(shù)位置的字母轉(zhuǎn)換為小寫(若該位置上不是字母,則不轉(zhuǎn)換)。
例如,若輸入ABC4efG,則應輸出aBc4efg。
注意:部分源程序給出如下。
請勿改動主函數(shù)miain和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
voidfun(char*SS)
{
}
main()
{
chartt[81];
clrscr();
printf("\nPleaseenteranstringwithin80
characters:\n");
gets(tt);
printf("\n\nAfterchanging,thestring\n
\%s",tt);
fun(tt);
printf("\nbecomes\n\%S\n",tt);
}
四、單選題(0題)35.判斷字符串s1是否大于字符串s2,應該使用()。
A.if(strcmp(s1,s2)<0)
B.if(s1>s2)
C.if(strcmp(s2,s1)<0)
D.if(strcmp(s1,s2))
五、單選題(0題)36.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值
B.執(zhí)行函數(shù)test后,函數(shù)不再返回
C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值
D.以上三個答案都是錯誤的
六、單選題(0題)37.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14
參考答案
1.CC.【解析】線性表是一種線性結(jié)構(gòu),由n(n≥0)個元素組成,所以線性表可以是空表。但是在線性表中,第一個結(jié)點沒有前件,最后一個結(jié)點沒有后件,其他結(jié)點有且只有一個前件和后件,所以選項C.是錯誤的。
2.A
3.B
4.A
5.D
6.D
7.B
8.B解析:本題中的函數(shù)ss()有兩個參數(shù),一個是字符型指針變量s,另一個是字符型變量t在函數(shù)中通過一個while循環(huán),在循環(huán)中一次取出s指向的字符串并判斷它是否和t中存放的字符相同,若相等,則執(zhí)行“s=t-'a'+'A':”(若是小寫字母,則把它轉(zhuǎn)換成大寫字母)語句。在主函數(shù)中執(zhí)行函數(shù)調(diào)用ss(strl,c),很顯然是把str1數(shù)組中所有字符“d”變成大寫字母,其他字符不變。所以4個選項中B正確。
9.B
10.A
11.A
12.D解析:本題考查switch語句的掌握。必須撐握以下內(nèi)容:首先應該明白switch語句的語法格式:
switch語句的語法格式為:
switch(表達式)
{
case常量表達式1:語句組1;
case常量表達式2:語句組2;
case常量表達式n:語句組n;
default:語句組n+1;
}
另外,以下幾點關(guān)于switch語句的重點:
①系統(tǒng)在執(zhí)行時計算開關(guān)表達式的值;②根據(jù)所得的值在各個case標號表達式中尋找匹配,直到發(fā)現(xiàn)與表達式匹配的標號(本例中匹配的是case\'B\':);\ue008③找\ue009到匹配后執(zhí)行后面相應的語句表,順序往下執(zhí)行;④如果無相匹配的標號,若存在default標號,則執(zhí)行該語句標號后面的語句表n+1;當不存在default標號時,不執(zhí)行switch中的任何一個語句表。
一般而言,在多分支結(jié)構(gòu)中總會出現(xiàn)'意外'的情況,這時均可歸入default程序段,作統(tǒng)一的處理。default標號是可選性的,不必每次都有,視需要而定。switch語句中還可以包含switch語句,形成switch的嵌套。
13.efghefgh解析:函數(shù)ss的作用是讓形參指針s指向該字符串的右半部分。主函數(shù)中首先定義了一個字符型指針變量p和字符型指針str,并初始化為“abcdefgh”,然后調(diào)用函數(shù)ss,將實參str傳給形參s,因此可知該函數(shù)返回的指針,指向str所指的字符串“abcdefgh”的右半部分,即指向字符串“efgh”,所以最后輸出指針p(指針p的值為調(diào)用函數(shù)ss(str)的返回值)所指向的字符串為“efgh”。
14.s[j]=s[i];j++;s[j]=s[i];j++;解析:本題中相當于字符串s中存儲著含有空格的字符,當發(fā)現(xiàn)空格的時候就用這個空格字符后面的字符前移覆蓋這個空格字符,依次類推向后繼續(xù)。因此,應填s[j]=s[i];j++;兩條語句。
15.structnode*structnode*解析:link是指向結(jié)構(gòu)體自身的指針,因此link是指針,指向strictnode類型的數(shù)據(jù),可定義成“stmctnode*link”。
16.結(jié)構(gòu)結(jié)構(gòu)解析:路徑測試是白盒測試方法中的—種,它要求對程序中的每條路徑最少檢查一次,目的是對軟件的結(jié)構(gòu)進行測試。
17.4545解析:對于長度為N的線性表,在最壞情況下(即線性表中元素現(xiàn)在的順序與目標順序正好相反),冒泡排序需要經(jīng)過N/2遍的從前往后的掃描和N/2遍的從后往前的掃描,需要的比較次數(shù)為N(N-1)/2。
18.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關(guān)系表達式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=2,所以z=2;當y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結(jié)束。因此輸出z的結(jié)果為6。
19.33解析:本題考核的知識點是條件運算符的運用。三目運算表達式的規(guī)則為如果“?”前面表達式的值為真,則取“:”前的表達式的值,否則,取“:”后面表達式的值。又由于條件運算符的結(jié)合方向是自右向左的,所以在本試題中,先計算表達式中p%3,該值為0,在計算表達式P/10其值為3,最后計算表達式p/3該值為10.所以此表達式等價于“10?3:0”,顯然取“:”前的僵為3,所以最后輸出的值為3。
20.完善性軟件維護活動包括以下幾類:改正性維護,適應性維護、完善性維護和預防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。
21.2626解析:在主函數(shù)中只調(diào)用了fun函數(shù),調(diào)用時把變量a的地址傳遞給形參。fun函數(shù)的形參x是一個指針,其基類型與主函數(shù)中a的類型一致,因此在調(diào)用時得到的是a的地址,輸出項是++*x,*x代表的就是主函數(shù)中變量a的存儲單元,++*x就是使主函數(shù)中a的值加1,輸出26。
22.224682\r\n2468解析:在主函數(shù)中根據(jù)整型數(shù)組x[]的定義可知,x[1]的初值等于2。在for循環(huán)語句中,當i=0時,p[0]=&x[1],p[0][0]=2;當i=1時,p[1==&x[3],p[1][0]=4;當i=2時,p[2]=&x[5],p[2][0]=6;當i=3時,p[3]=&x[7],p[3][0]=8,所以程序輸出的結(jié)果為2、4、6、8。
23.1212解析:x=(表達式1,表達式2,…)的形式,結(jié)果為最后一個表達式的值:x=(a=4,6*2)=2*6=12。
24.28
25.voidfun(inta[3][3]intb[3][3]){intij;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置存放在矩陣b中*/}voidfun(inta[3][3],intb[3][3])\r\n{\r\ninti,j;\r\nfor(i=0;i<3;i++)\r\nfor(j=0;j<3;j++)\r\nb[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉(zhuǎn)置,存放在矩陣b中*/\r\n}解析:在《線性代數(shù)》里面有矩陣轉(zhuǎn)置的概念,行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對應原矩陣的第j行第i列。
若要將矩陣a轉(zhuǎn)置后還存入a中可用程序:
inti,j,t;
for(i=0;i<N;i++)
for(j=i;j<N;j++)
{t=a[i][j];a[i][j]=a[j][i];a[j][ii=t;}
注意第2個循環(huán)的初值。
若要將矩陣a轉(zhuǎn)置后存入c中:
inti,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
c[i][j]=a[j][i];
注意數(shù)組c和a的下標。
26.fun(STUa[]STU*s){inti;*s=a[0];for(i=0;i<N;i++)/*先認為第1個值最小*/if(s->s>aIi].s)/*如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個值更小的則賦給*s*/*s=a[i];}fun(STUa[],STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*先認為第1個值最小*/\r\nif(s->s>aIi].s)/*如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個值更小的則賦給*s*/\r\n*s=a[i];\r\n}解析:我們先認為第1個值最小,即*s=a[0]語句,如果在循環(huán)的過程中再發(fā)現(xiàn)比第1個值更小的隨即賦給該*s就可以了。另外,還涉及到結(jié)構(gòu)體中的指向運算符,請學習者注意。若要找出最高成績則if()中的條件改成s->s<a[i].s即可。
27.intfun(intw[][N]){intijk=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1){s=s+w[i][j]*w[i][j];}returns;}intfun(intw[][N])\r\n{\r\ninti,j,k=0;\r\nints=0;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<N;j++)\r\nif(i==0||i==N-1||j==0||j==N-1)\r\n{\r\ns=s+w[i][j]*w[i][j];\r\n}\r\nreturns;\r\n}
28.voidfun(intmintkintxx[]){intijn;for(i=m+1n=0;n<k;i++)/*找大于m的素數(shù)循環(huán)k次即找出緊靠m的k個素數(shù)*/{for(j=2;j<i;j++)/*判斷一個數(shù)是否為素數(shù)如果不是跳出此循環(huán)判斷下一個數(shù)*/if(i%j==O)break;if(j>=i)/*如果是素數(shù)放入數(shù)組xx中*/xx[n++]=i;}}voidfun(intm,intk,intxx[])\r\n{\r\ninti,j,n;\r\nfor(i=m+1,n=0;n<k;i++)/*找大于m的素數(shù),循環(huán)k次,即找出緊靠m的k個素數(shù)*/\r\n{for(j=2;j<i;j++)/*判斷一個數(shù)是否為素數(shù),如果不是,跳出此循環(huán),判斷下一個數(shù)*/\r\nif(i%j==O)break;\r\nif(j>=i)/*如果是素數(shù),放入數(shù)組xx中*/\r\nxx[n++]=i;\r\n}\r\n}解析:本題只要掌握了判斷素數(shù)的算法即不難完成了,其實程序缺少部分也正是這部分。
29.fun(STUa[]STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生院自行采購制度
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院感染制度
- 食堂衛(wèi)生管理制度細則
- 協(xié)調(diào)指揮部財務制度
- 場所衛(wèi)生制度格
- 餐飲業(yè)財務制度處罰規(guī)定
- 衡南一中食堂衛(wèi)生制度
- 工會委員會財務制度
- 會所衛(wèi)生標準及考核制度
- 互聯(lián)網(wǎng)運營公司制度
- 電池回收廠房建設(shè)方案(3篇)
- 保函管理辦法公司
- 幼兒游戲評價的可視化研究
- 果樹賠賞協(xié)議書
- 基底節(jié)出血的護理查房
- 2025年廣東省中考物理試題卷(含答案)
- 金華東陽市國有企業(yè)招聘A類工作人員筆試真題2024
- 2025年6月29日貴州省政府辦公廳遴選筆試真題及答案解析
- 2025年湖南省中考數(shù)學真題試卷及答案解析
- DB32/T 3518-2019西蘭花速凍技術(shù)規(guī)程
- 急救中心工作匯報
評論
0/150
提交評論