




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2021-2022學(xué)年湖南省衡陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(12題)1.
2.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.0,1,0B.0,1,1C.0,0,1D.0,0,0
3.下列敘述中正確的是()。
A.在C語言中,預(yù)處理命令行都以“#”開頭
B.預(yù)處理命令行必須位于C語言源程序的起始位置
C.“include<stdio.h>”必須放在C語言程序的開頭
D.C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能
4.
5.假設(shè)下圖中每個(gè)正方形的邊長為1,則從A到Z的最短路徑條數(shù)為()A.11B.12C.13D.14
6.
7.可以用帶表頭結(jié)點(diǎn)的鏈表表示線性表,也可用不帶表頭結(jié)點(diǎn)的鏈表表示線性表,前者最主要的好處是()。
A.可以加快對表的遍歷B.使空表和非空表的處理統(tǒng)一C.節(jié)省存儲空間D.可以提高存取表元素的速度
8.有以下程序:#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);}程序的運(yùn)行結(jié)果是()。
A.abcB.28cC.abc28D.因類型不一致而出錯(cuò)
9.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的運(yùn)行結(jié)果是()A.1B.0C.2D.3
10.以下程序的輸出結(jié)果是
#include<stdio.h>
voidprt(int*x,int*y,int*z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{inta=10,b=40,c=20;
prt(&a,&b,&c);prt(&a,&b,&c);}
A.11,42,3112,22,41
B.11,41,2012,42,20
C.11,21,4011,21,21
D.11,41,2112,42,22
11.若有定義“intk=7,x=12;”,則以下表達(dá)式值為3的是()。
A.(x%=k)-(k%=5)B.x%=(k%=5)C.x%=(k-k%5)D.x%=k-k%5
12.下列變量聲明合法的是()。A.shorta=1.4e-1;
B.doubleb=1+3e2.8;
C.longdo=0xfdaL;
D.float2aaa=1e-3;
二、2.填空題(12題)13.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,用來請求對象執(zhí)行某一處理或回答某些信息的要求稱為【】。
14.下列程序的運(yùn)行結(jié)果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",--i);
}
15.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。
16.在長度為n的有序線性表中進(jìn)行二分查找。最壞的情況下,需要的比較次數(shù)為【】。
17.以下程序運(yùn)行后的輸出結(jié)果是______。
#include<string.h>
main()
{charch[]="abc",x[3][4];inti;
for(i=0;i<3;i++)strcpy(x[i],ch);
for(i=0;i<3;i++)printf("%s",&x[i][i]);
printf("\n");
}
18.下列程序的輸出結(jié)果是______。
#include<stdio.h>
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
如:dp=x*-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,D);
printf("%d%d\n",c,D);
}
19.有以下程序:
voidfun(int*a,inti,intj)
{intt;
if(i<j)
{t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
fun(a,i,j);
}
}
main()
{intx[]=(2,6,1,8),i;
fun(x,0,3);
for(i=0;i<4;i++)printf("%2d",x[i]);
}
程序運(yùn)行后的輸出結(jié)果是【】。
20.程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
21.在一個(gè)容量為15的循環(huán)隊(duì)列中,若頭指針front=6,尾指針Year=9,則該循環(huán)隊(duì)列中共有【】個(gè)元素。
22.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
/inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
23.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
24.算法的基本特征是可行性、確定性、【】和擁有足夠的情報(bào)。
三、3.程序設(shè)計(jì)題(10題)25.請編寫一個(gè)函數(shù)fun(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdlib.h>
#include<stdio.h>
voidfun(inta[],intn,int*max,int*d)
{
}
main()
{
inti,x[20],max,index,n=10;
randomize();
for(i=0;i<=n;i++)
{
x[i]=rand()%50;
printf("%4d",x[i]);
/*輸出一個(gè)隨機(jī)數(shù)組*/
}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
}
26.已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最低的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。
注意:部分源程序存在文件PROGl.C文件中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的蒞括號中填入你編寫的若干語句。
27.已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是;找出成績最高的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個(gè)最高分)。已給出函數(shù)的首部,請完成該函數(shù)。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(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);
}
28.請編寫一個(gè)函數(shù)fun(),它的功能是:根據(jù)以下公式求π的值(要求滿足精度0.005,即某項(xiàng)小于0.005時(shí)停止迭代)。
π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…
+1*2*3*…*n/(3*5*7*…*(2n+1))
程序運(yùn)行后,如果輸入精度0.0005,則程序輸出3.14…。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<math.h>
doublefun(doubleeps)
{
}
main()
{
doublex;
printf("Inputeps:");
scanf("%1f",&x);
printf("\neps=%1f,PI=%1f\n",x,fun(x));
}
29.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值;請編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如a數(shù)組中的值為
a=197
238
456
則返回主程序后a數(shù)組中的值應(yīng)為
097
008
000
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#defineN5
intfun(inta[][N])
{
}
main()
{
inta[N][N],i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i<N;i++)
/*產(chǎn)生—個(gè)隨機(jī)的5*5矩陣*/
{for(j=0;j<N;j++)
{a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
fun(a);
printf("THERESULT\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j));
printf("\n");
}
}
30.請編寫函數(shù)fun(),該函數(shù)的功能是:將s所指字符串中ASCII值為偶數(shù)的字符刪除,串中剩余字符形成一個(gè)新串放在t所指的數(shù)組中。
例如,若s所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符B的ASCⅡ碼值為偶數(shù)、…、字符2的ASCⅡ碼值為偶數(shù)、…,都應(yīng)當(dāng)刪除,其他依次類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEGl35。
注定:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序;
#include<stdio.h>
#include<string.h>
#include<conio.h>
voidfun(char*s,chart[])
{
}
main()
{
chars[100],t[100];
clrscr();
printf(,\nPleaseenterstringS:");
scanf("%s",s);
fun(s,t);
printf("\nTheresultis:%s\n",t);
}
31.請編寫一個(gè)函數(shù)fun(),它的功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)為整數(shù)的函數(shù))。
例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
longfun(char*p)
{
}
main()
{
chars[6];
longn;
printf("Enterastring:\n");
gets(s);
n=fun(s);
printf("%ld\n",n);
}
32.請編寫函數(shù)fun,其功能是:計(jì)算并輸出當(dāng)x<0.97時(shí)下列多項(xiàng)式的值,直到|Sn-Sn-2
|<0.000001為止。
例如,在主函數(shù)中從鍵盤給x輸入0.21后,輸出為:s=1.100000。
注意:部分源程序在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
33.m個(gè)人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分?jǐn)?shù)放在叩所指的數(shù)組中。
例如,當(dāng)score數(shù)組中的數(shù)據(jù)為24,35,88,76,90,54,59,66,96時(shí),函數(shù)返回的人數(shù)應(yīng)該是5,up中的數(shù)據(jù)應(yīng)為88,76,90,66,96。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(intscore[],intm,intup[])
{
}
main()
{
inti,n,up[9];
intscore[9]={24,35,88,76,90,54,
59,66,96};
clrscr();
n=fun(score,9,up);
printf("\nuptotheaveragescoreare:");
for(i=0;i<n;i++)
printf("%d",up[i]);
}
34.請編寫函數(shù)fun,函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容:若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0到p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。
例如,一維數(shù)組中的原始內(nèi)容為:1,2,3,4,5,6,7,8,9,10:p的值為3。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為:5,6,7,8,9,10,1,2,3,4。
注意:部分源程序在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.
五、單選題(0題)36.關(guān)于指針,以下說法正確的是()。A.可以直接向指針中寫入數(shù)據(jù)
B.若指針指向變量,則可以向指針?biāo)竷?nèi)存單元寫入數(shù)據(jù)
C.指針可以指向內(nèi)存中任何位置,并寫入數(shù)據(jù)
D.兩個(gè)指針可以通過加運(yùn)算求和,形成一個(gè)功能更強(qiáng)大的指針
六、單選題(0題)37.
參考答案
1.C
2.Bif條件表達(dá)式“a--‖b--&&--c”使用了邏輯或運(yùn)算符和邏輯與運(yùn)算符。因?yàn)檫壿嬇c運(yùn)算符優(yōu)先級比邏輯或運(yùn)算符優(yōu)先級高,所以條件表達(dá)式等價(jià)于“(a--)‖(b--&&--c)”,自左向右運(yùn)算,執(zhí)行“a”,因?yàn)閍初值為1,所以a--的值為1,執(zhí)行完后a的值為0;又因?yàn)檫壿嫽蜻\(yùn)算符的短路原則,當(dāng)a--的值為1時(shí),條件為真,后面的表達(dá)式b--&&--c不執(zhí)行。程序執(zhí)行if語句塊,輸出a、b、c的值為:0,1,1。本題答案為B選項(xiàng)。
3.A預(yù)處理命令以“#”開頭,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、C選項(xiàng)錯(cuò)誤。C語言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯的功能,所以D選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。
4.D
5.C
6.A
7.B
8.Cfprintf函數(shù)將內(nèi)容寫入硬盤的文件,fputs函數(shù)將字符串寫入文件,最終文件的內(nèi)容為abc28。故本題答案為C選項(xiàng)。
9.A雖為嵌套的for循環(huán),但“m=m%j”只執(zhí)行1次,即當(dāng)i=3時(shí),內(nèi)層循環(huán)條件成立,m=55%3=1,故選A。
10.B解析:考查指針作為參數(shù)的函數(shù)調(diào)用。盡管C語言以傳值方式進(jìn)行函數(shù)調(diào)用,但也可以通過傳遞指針的值(變量的地址)來達(dá)到修改實(shí)參變量值的目的,這是此題主要說明的問題。另外,應(yīng)注意表達(dá)式\ue008*(z++)\ue009的值是*z,其后的z++在程序中無實(shí)際作用。函數(shù)調(diào)用時(shí),由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次調(diào)用函數(shù)時(shí),*x=a=10,*y=b=40,*z=c=20輸出結(jié)果為11,41,20,至此,已經(jīng)可以肯定選項(xiàng)B)是正確的。在第一次輸出后,a=11,b=41,c=20,第二次輸出為:12,42,20。
11.A選項(xiàng)A中,表達(dá)式“x%=k”結(jié)果為5,表達(dá)式“k%=5”結(jié)果為2,5-2結(jié)果為3;選項(xiàng)B中,“k%=5”結(jié)果為2,“x%=2”結(jié)果為0;選項(xiàng)C中,“k%5”結(jié)果為2,“k-k%5”結(jié)果為5,“x%5”結(jié)果為2;選項(xiàng)D中,“k%5”結(jié)果為2,“k-k%5”結(jié)果為5,x%5結(jié)果為2。故本題答案為A選項(xiàng)。
12.A本題需了解3個(gè)知識點(diǎn):①標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個(gè)字符必須是字母或者下劃線;②do是C語言的一個(gè)關(guān)鍵字,不能再用做變量名和函數(shù)名;③c語言規(guī)定指數(shù)形式的實(shí)型數(shù)量e或E后面的指數(shù)必須是整數(shù)。
13.消息消息解析:消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
14.33解析:分析程序運(yùn)行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,輸出結(jié)果為3。
15.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。
16.log2n
17.abcbcc
18.7979解析:因?yàn)樵谡{(diào)用子函數(shù)時(shí)進(jìn)行的是數(shù)值傳遞,調(diào)用子函數(shù)并不能改變實(shí)參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。
19.81628162解析:第一次調(diào)用函數(shù)fun時(shí),x[0]=2、xL1]=6、x[2]=1、x[3]=8,執(zhí)行完函數(shù)fun后,x[0]與x[3]的值互換,即x[0]=8、x[1]=6、x[2]=1、x[3]=2;第二次調(diào)用函數(shù)fun時(shí),i=1、j=2,故將x[1]與x[2]的值互換,即得x[0]=8、x[1]=1、x[2]=6、x[3]=2。
20.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
21.3
22.123\n056\n009123\\n056\\n009解析:數(shù)組是用于按順序存儲同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),如果有一個(gè)一維數(shù)組,它的每一個(gè)元素是類型相同的一維數(shù)組,就形成了一個(gè)二維數(shù)組。在內(nèi)存中數(shù)組的元素是連續(xù)順序存放的,對;維數(shù)組來說,先存放第一行,再存放第;行,…,因?yàn)槊恳恍卸际瞧鋸V義一維數(shù)組的元素,并且在給出全部數(shù)組元素的初值后,二維數(shù)組的定義中可以將第一維的下標(biāo)省略。本題中,定義了一個(gè)元素類型為整型的二維數(shù)組敢a[][3]={1,2,3,4,5,6,7,8,9),它相當(dāng)于一個(gè)3*3的矩陣,for(i=0;i<3:i++)for(j=i+1;j<3;j++)a[j][i]=0;將行下標(biāo)i大于列下標(biāo)j的元素s[1][0],a[2][0],a[2][1]賦值為0,最后for(j=0;j<3;j++)prinff('%n',a[i][j]);printf('\\n');進(jìn)行換行輸出,所以輸出結(jié)果為
123
056
009
23.軟件開發(fā)
24.有窮性有窮性解析:算法有四個(gè)基本特征:可行性、確定性、有窮性和擁有足夠的情報(bào)。
25.voidfun(inta[]intnint*maxint*d){inti;*max=a[0];*d=0;for(i=0;i<n;i++)/*將最大的元素放入指針max所指的單元最大元素的下標(biāo)放入指針d所指的單元*/if(*max<a[i]){*max=a[i];*d=i;}}voidfun(inta[],intn,int*max,int*d)\r\n{\r\ninti;\r\n*max=a[0];\r\n*d=0;\r\nfor(i=0;i<n;i++)/*將最大的元素放入指針max所指的單元,最大元素的下標(biāo)放入指針d所指的單元*/\r\nif(*max<a[i])\r\n{*max=a[i];*d=i;}\r\n}解析:該程序直接使用形參max和d,由于它們都是指針變量,所以要引用它所指向的變量時(shí)要對它進(jìn)行指針運(yùn)算,也即*號運(yùn)算。
26.
解析:該程序功能是求最低分?jǐn)?shù)的學(xué)生。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個(gè)值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進(jìn)行比較,求得最小值。
27.fun(STUa[]STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*找出成績最高的學(xué)生記錄*/\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++)/*找出成績最高的學(xué)生記錄*/\r\nif(s->s<a[i].s)\r\n*s==a[i];\r\n}解析:本題的流程是這樣的,先使s指向第1個(gè)學(xué)生,我們的題干目的是找出分?jǐn)?shù)最高的學(xué)生,所以if語句的條件是s->s<a[i].s。此外,在做本題時(shí),我們應(yīng)該熟練掌握“指向運(yùn)算符”和“成員運(yùn)算符”的相關(guān)知識。題中“s->s”也可換成“(*s).s”。
28.doublefun(doubleeps){doubles=1.0s1=1.0;intn=1;while(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí)繼續(xù)求下—項(xiàng)*/{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/s=s+s1;/*求和*/n++;}return2*s;}doublefun(doubleeps)\r\n{\r\ndoubles=1.0,s1=1.0;\r\nintn=1;\r\nwhile(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí),繼續(xù)求下—項(xiàng)*/\r\n{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/\r\ns=s+s1;/*求和*/\r\nn++;\r\n}\r\nreturn2*s;\r\n}解析:從第2項(xiàng)開始以后的每一項(xiàng)都是其前面一項(xiàng)乘以n/(2*n+1),程序中用s1來表示每一項(xiàng),s來表示總和后的結(jié)果。要注意s1,s的初值都為1.0,返回時(shí)要乘以2即return2*s,這跟數(shù)學(xué)思想有關(guān)系,學(xué)習(xí)者理解后就很簡單了。
29.intfun(inta[][N]){intij;for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i][j]=0;/*將數(shù)組左下半三角元素中的值全部置成0*/}intfun(inta[][N])\r\n{\r\ninti,j;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<=i;j++)\r\na[i][j]=0;/*將數(shù)組左下半三角元素中的值全部置成0*/\r\n}解析:本題旨在考查控制數(shù)組中左下半三角元素的算法,也就是兩個(gè)千篇一律的循環(huán)語句,希望學(xué)習(xí)者能夠掌握消化。
30.voidfun(char*schart[]){inti=0;for(;*s!='\0';s++)/*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/if(*s%2==1)t[i++]=*s;t[i]='\0';/*在字符串的末尾口上串結(jié)束符*/}voidfun(char*s,chart[])\r\n{\r\ninti=0;\r\nfor(;*s!='\\0';s++)/*找出ASCII值為奇數(shù)的字符依次存入數(shù)組t中*/\r\nif(*s%2==1)\r\nt[i++]=*s;\r\nt[i]='\\0';/*在字符串的末尾口上串結(jié)束符*/\r\n}解析:要?jiǎng)h除ASCH值為偶數(shù)的字符,也就是要留下ASCH值為奇數(shù)的字符,由于最終是要求求出剩余字符(BPASCⅡ值為奇數(shù))形成的新串,所以本題程序的算法是從原字符串的頭到尾掃描并找出ASCⅡ值為奇數(shù)的字符依次存入數(shù)組沖。此外,還要注意數(shù)組t的下標(biāo)變化和下標(biāo)的初值(初值必須為0,即i=0),t[i++]州的作用是先使用t[i]然后再使自增1。任何字符串的末尾都要有串結(jié)束符。這種算法在很多題中都要用到,學(xué)習(xí)者可以舉一反三地找一些其他相關(guān)習(xí)題練習(xí)一下。
31.longfun(char*p){longn=0;intflag=1;if(*p=='-')/*負(fù)數(shù)時(shí)置flag為-1*/{p++;flag=-1;}elseif(*p=='+')/*正數(shù)時(shí)置flag為1*/p++;while(*p!='\0'){n=n*10+*p-'0';/*將字符串轉(zhuǎn)成相應(yīng)的整數(shù)*/p++;}returnn*flag;}longfun(char*p)\r\n{\r\nlongn=0;\r\nintflag=1;\r\nif(*p=='-')/*負(fù)數(shù)時(shí)置flag為-1*/\r\n{p++;flag=-1;}\r\nelseif(*p=='+')/*正數(shù)時(shí)置flag為1*/\r\np++;\r\nwhile(*p!='\\0')\r\n{n=n*10+*p-'0';/*將字符串轉(zhuǎn)成相應(yīng)的整數(shù)*/\r\np++;\r\n}\r\nreturnn*flag;\r\n}解析:if()的作用是判斷它是正數(shù)還是負(fù)數(shù)。while()循環(huán)的作用是將字符串轉(zhuǎn)成相應(yīng)的整數(shù)。注意*p是一個(gè)字符如'9','4',并不是一個(gè)數(shù),要將其轉(zhuǎn)成相應(yīng)的數(shù)字必須令其減去'0'(不是'\\0'),即*p-'0'就得到*p這個(gè)字符的相應(yīng)數(shù)字。如'0'-'0'=0,'8'-'0'=8等。必須在程序的前面加#include<stdlib.h>,函數(shù)atol()的作用是將字符串p轉(zhuǎn)成長整型數(shù),它是一個(gè)庫函數(shù)。
32.
解析:該程序功能是計(jì)算并輸出當(dāng)x<0.97時(shí)題干中給出的多項(xiàng)式的值。根據(jù)題干中給出的數(shù)列,首先推出每一項(xiàng)的表達(dá)式,然后再對多項(xiàng)式進(jìn)行累加求和。
33.intfun(intscore[]intmintup[]){intij=0;floatav=0.0for(i=0;i<m;i++)av=av+score[i]/m;/*求平均值*/for(i=0;i<m;i++)if(score[i]>av)/*如果分?jǐn)?shù)高于平均分則將此分?jǐn)?shù)放入up數(shù)組中*/up[j++]=score[i];returnj;/*返回高于平均分的人數(shù)*/}intfun(intscore[],intm,intup[])\r\n{\r\ninti,j=0;\r\nfloatav=0.0\r\nfor(i=0;i<m;i++)\r\nav=av+score[i]/m;/*求平均值*/\r\nfor(i=0;i<m;i++)\r\nif(score[i]>av)/*如果分?jǐn)?shù)高于平均分,則將此分?jǐn)?shù)放入up數(shù)組中*/\r\nup[j++]=score[i];\r\nreturnj;/*返回高于平均分的人數(shù)*/\r\n}解析:該題第1個(gè)循環(huán)的作用是求出平均分av,第2個(gè)循環(huán)的作用是找出高于平均分的成績并存入up數(shù)組中。
34.
解析:該程序功能是移動(dòng)一維數(shù)組中的內(nèi)容。解題思路首先將字符串拷貝到一個(gè)臨時(shí)的數(shù)組,然后將字符串進(jìn)行前移操作,最后將由于前移覆蓋掉的字符,由臨時(shí)數(shù)組中拷貝到指定字符串。
35.A
36.BC語言中指針就是變量的地址,它必須有確定的基類型。當(dāng)指針指向某個(gè)變量時(shí),才能向其中寫入數(shù)據(jù),選項(xiàng)A錯(cuò)誤,選項(xiàng)B正確;指針除了指向變量外,還可以賦值為NULL,表示未指向任何地址,此時(shí)不能寫入數(shù)據(jù),另外指針必須有基類型,只能指向基類型相同的變量,選項(xiàng)C錯(cuò)誤;指針只能與一個(gè)整數(shù)進(jìn)行運(yùn)算,即移動(dòng)指針,兩個(gè)指針不能運(yùn)算,選項(xiàng)D錯(cuò)誤。本題答案為B選項(xiàng)。
37.A
2021-2022學(xué)年湖南省衡陽市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________
一、單選題(12題)1.
2.有下列程序:程序執(zhí)行后的輸出結(jié)果是()。A.0,1,0B.0,1,1C.0,0,1D.0,0,0
3.下列敘述中正確的是()。
A.在C語言中,預(yù)處理命令行都以“#”開頭
B.預(yù)處理命令行必須位于C語言源程序的起始位置
C.“include<stdio.h>”必須放在C語言程序的開頭
D.C語言的預(yù)處理不能實(shí)現(xiàn)宏定義和條件編譯的功能
4.
5.假設(shè)下圖中每個(gè)正方形的邊長為1,則從A到Z的最短路徑條數(shù)為()A.11B.12C.13D.14
6.
7.可以用帶表頭結(jié)點(diǎn)的鏈表表示線性表,也可用不帶表頭結(jié)點(diǎn)的鏈表表示線性表,前者最主要的好處是()。
A.可以加快對表的遍歷B.使空表和非空表的處理統(tǒng)一C.節(jié)省存儲空間D.可以提高存取表元素的速度
8.有以下程序:#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);}程序的運(yùn)行結(jié)果是()。
A.abcB.28cC.abc28D.因類型不一致而出錯(cuò)
9.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf(“%d\n”,m);}程序的運(yùn)行結(jié)果是()A.1B.0C.2D.3
10.以下程序的輸出結(jié)果是
#include<stdio.h>
voidprt(int*x,int*y,int*z)
{printf("%d,%d,%d\n",++*x,++*y,*(z++));}
main()
{inta=10,b=40,c=20;
prt(&a,&b,&c);prt(&a,&b,&c);}
A.11,42,3112,22,41
B.11,41,2012,42,20
C.11,21,4011,21,21
D.11,41,2112,42,22
11.若有定義“intk=7,x=12;”,則以下表達(dá)式值為3的是()。
A.(x%=k)-(k%=5)B.x%=(k%=5)C.x%=(k-k%5)D.x%=k-k%5
12.下列變量聲明合法的是()。A.shorta=1.4e-1;
B.doubleb=1+3e2.8;
C.longdo=0xfdaL;
D.float2aaa=1e-3;
二、2.填空題(12題)13.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,用來請求對象執(zhí)行某一處理或回答某些信息的要求稱為【】。
14.下列程序的運(yùn)行結(jié)果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",--i);
}
15.#define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為______。
16.在長度為n的有序線性表中進(jìn)行二分查找。最壞的情況下,需要的比較次數(shù)為【】。
17.以下程序運(yùn)行后的輸出結(jié)果是______。
#include<string.h>
main()
{charch[]="abc",x[3][4];inti;
for(i=0;i<3;i++)strcpy(x[i],ch);
for(i=0;i<3;i++)printf("%s",&x[i][i]);
printf("\n");
}
18.下列程序的輸出結(jié)果是______。
#include<stdio.h>
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
如:dp=x*-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,D);
printf("%d%d\n",c,D);
}
19.有以下程序:
voidfun(int*a,inti,intj)
{intt;
if(i<j)
{t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
fun(a,i,j);
}
}
main()
{intx[]=(2,6,1,8),i;
fun(x,0,3);
for(i=0;i<4;i++)printf("%2d",x[i]);
}
程序運(yùn)行后的輸出結(jié)果是【】。
20.程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中【】是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
21.在一個(gè)容量為15的循環(huán)隊(duì)列中,若頭指針front=6,尾指針Year=9,則該循環(huán)隊(duì)列中共有【】個(gè)元素。
22.以下程序運(yùn)行后的輸出結(jié)果是______。
main()
/inti,j,a[][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)a[j][i]=0;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);
printf("\n");
}
}
23.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
24.算法的基本特征是可行性、確定性、【】和擁有足夠的情報(bào)。
三、3.程序設(shè)計(jì)題(10題)25.請編寫一個(gè)函數(shù)fun(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdlib.h>
#include<stdio.h>
voidfun(inta[],intn,int*max,int*d)
{
}
main()
{
inti,x[20],max,index,n=10;
randomize();
for(i=0;i<=n;i++)
{
x[i]=rand()%50;
printf("%4d",x[i]);
/*輸出一個(gè)隨機(jī)數(shù)組*/
}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
}
26.已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最低的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個(gè)最低分)。
注意:部分源程序存在文件PROGl.C文件中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的蒞括號中填入你編寫的若干語句。
27.已知學(xué)生的記錄由學(xué)號和學(xué)習(xí)成績構(gòu)成,N名學(xué)生的數(shù)據(jù)已存入a結(jié)構(gòu)體數(shù)組中。請編寫函數(shù)fun(),該函數(shù)的功能是;找出成績最高的學(xué)生記錄,通過形參返回主函數(shù)(規(guī)定只有一個(gè)最高分)。已給出函數(shù)的首部,請完成該函數(shù)。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(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);
}
28.請編寫一個(gè)函數(shù)fun(),它的功能是:根據(jù)以下公式求π的值(要求滿足精度0.005,即某項(xiàng)小于0.005時(shí)停止迭代)。
π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…
+1*2*3*…*n/(3*5*7*…*(2n+1))
程序運(yùn)行后,如果輸入精度0.0005,則程序輸出3.14…。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<math.h>
doublefun(doubleeps)
{
}
main()
{
doublex;
printf("Inputeps:");
scanf("%1f",&x);
printf("\neps=%1f,PI=%1f\n",x,fun(x));
}
29.下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值;請編寫函數(shù)fun(inta[][N]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如a數(shù)組中的值為
a=197
238
456
則返回主程序后a數(shù)組中的值應(yīng)為
097
008
000
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#defineN5
intfun(inta[][N])
{
}
main()
{
inta[N][N],i,j;
clrscr();
printf("*****Thearray*****\n");
for(i=0;i<N;i++)
/*產(chǎn)生—個(gè)隨機(jī)的5*5矩陣*/
{for(j=0;j<N;j++)
{a[i][j]=rand()%10;
printf("%4d",a[i][j]);
}
printf("\n");
}
fun(a);
printf("THERESULT\n");
for(i=0;i<N;i++)
{for(j=0;j<N;j++)
printf("%4d",a[i][j));
printf("\n");
}
}
30.請編寫函數(shù)fun(),該函數(shù)的功能是:將s所指字符串中ASCII值為偶數(shù)的字符刪除,串中剩余字符形成一個(gè)新串放在t所指的數(shù)組中。
例如,若s所指字符串中的內(nèi)容為ABCDEFGl2345,其中字符B的ASCⅡ碼值為偶數(shù)、…、字符2的ASCⅡ碼值為偶數(shù)、…,都應(yīng)當(dāng)刪除,其他依次類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是ACEGl35。
注定:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序;
#include<stdio.h>
#include<string.h>
#include<conio.h>
voidfun(char*s,chart[])
{
}
main()
{
chars[100],t[100];
clrscr();
printf(,\nPleaseenterstringS:");
scanf("%s",s);
fun(s,t);
printf("\nTheresultis:%s\n",t);
}
31.請編寫一個(gè)函數(shù)fun(),它的功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換為一個(gè)整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)為整數(shù)的函數(shù))。
例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<string.h>
longfun(char*p)
{
}
main()
{
chars[6];
longn;
printf("Enterastring:\n");
gets(s);
n=fun(s);
printf("%ld\n",n);
}
32.請編寫函數(shù)fun,其功能是:計(jì)算并輸出當(dāng)x<0.97時(shí)下列多項(xiàng)式的值,直到|Sn-Sn-2
|<0.000001為止。
例如,在主函數(shù)中從鍵盤給x輸入0.21后,輸出為:s=1.100000。
注意:部分源程序在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
33.m個(gè)人的成績存放在score數(shù)組中,請編寫函數(shù)fun(),它的功能是將高于平均分的人數(shù)作為函數(shù)值返回,將高于平均分的分?jǐn)?shù)放在叩所指的數(shù)組中。
例如,當(dāng)score數(shù)組中的數(shù)據(jù)為24,35,88,76,90,54,59,66,96時(shí),函數(shù)返回的人數(shù)應(yīng)該是5,up中的數(shù)據(jù)應(yīng)為88,76,90,66,96。
注意:部分源程序給出如下。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
intfun(intscore[],intm,intup[])
{
}
main()
{
inti,n,up[9];
intscore[9]={24,35,88,76,90,54,
59,66,96};
clrscr();
n=fun(score,9,up);
printf("\nuptotheaveragescoreare:");
for(i=0;i<n;i++)
printf("%d",up[i]);
}
34.請編寫函數(shù)fun,函數(shù)的功能是:移動(dòng)一維數(shù)組中的內(nèi)容:若數(shù)組中有n個(gè)整數(shù),要求把下標(biāo)從0到p(含p,p小于等于n-1)的數(shù)組元素平移到數(shù)組的最后。
例如,一維數(shù)組中的原始內(nèi)容為:1,2,3,4,5,6,7,8,9,10:p的值為3。移動(dòng)后,一維數(shù)組中的內(nèi)容應(yīng)為:5,6,7,8,9,10,1,2,3,4。
注意:部分源程序在文件PROGl.C中。
請勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.
五、單選題(0題)36.關(guān)于指針,以下說法正確的是()。A.可以直接向指針中寫入數(shù)據(jù)
B.若指針指向變量,則可以向指針?biāo)竷?nèi)存單元寫入數(shù)據(jù)
C.指針可以指向內(nèi)存中任何位置,并寫入數(shù)據(jù)
D.兩個(gè)指針可以通過加運(yùn)算求和,形成一個(gè)功能更強(qiáng)大的指針
六、單選題(0題)37.
參考答案
1.C
2.Bif條件表達(dá)式“a--‖b--&&--c”使用了邏輯或運(yùn)算符和邏輯與運(yùn)算符。因?yàn)檫壿嬇c運(yùn)算符優(yōu)先級比邏輯或運(yùn)算符優(yōu)先級高,所以條件表達(dá)式等價(jià)于“(a--)‖(b--&&--c)”,自左向右運(yùn)算,執(zhí)行“a”,因?yàn)閍初值為1,所以a--的值為1,執(zhí)行完后a的值為0;又因?yàn)檫壿嫽蜻\(yùn)算符的短路原則,當(dāng)a--的值為1時(shí),條件為真,后面的表達(dá)式b--&&--c不執(zhí)行。程序執(zhí)行if語句塊,輸出a、b、c的值為:0,1,1。本題答案為B選項(xiàng)。
3.A預(yù)處理命令以“#”開頭,一般在源文件的最前面書寫,但不是必須在起始位置書寫,所以B、C選項(xiàng)錯(cuò)誤。C語言的預(yù)處理能夠?qū)崿F(xiàn)宏定義和條件編譯的功能,所以D選項(xiàng)錯(cuò)誤。故本題答案為A選項(xiàng)。
4.D
5.C
6.A
7.B
8.Cfprintf函數(shù)將內(nèi)容寫入硬盤的文件,fputs函數(shù)將字符串寫入文件,最終文件的內(nèi)容為abc28。故本題答案為C選項(xiàng)。
9.A雖為嵌套的for循環(huán),但“m=m%j”只執(zhí)行1次,即當(dāng)i=3時(shí),內(nèi)層循環(huán)條件成立,m=55%3=1,故選A。
10.B解析:考查指針作為參數(shù)的函數(shù)調(diào)用。盡管C語言以傳值方式進(jìn)行函數(shù)調(diào)用,但也可以通過傳遞指針的值(變量的地址)來達(dá)到修改實(shí)參變量值的目的,這是此題主要說明的問題。另外,應(yīng)注意表達(dá)式\ue008*(z++)\ue009的值是*z,其后的z++在程序中無實(shí)際作用。函數(shù)調(diào)用時(shí),由于x,y和z分指向a,b和c,因此,*x,*y和*z就是a,b和c。第一次調(diào)用函數(shù)時(shí),*x=a=10,*y=b=40,*z=c=20輸出結(jié)果為11,41,20,至此,已經(jīng)可以肯定選項(xiàng)B)是正確的。在第一次輸出后,a=11,b=41,c=20,第二次輸出為:12,42,20。
11.A選項(xiàng)A中,表達(dá)式“x%=k”結(jié)果為5,表達(dá)式“k%=5”結(jié)果為2,5-2結(jié)果為3;選項(xiàng)B中,“k%=5”結(jié)果為2,“x%=2”結(jié)果為0;選項(xiàng)C中,“k%5”結(jié)果為2,“k-k%5”結(jié)果為5,“x%5”結(jié)果為2;選項(xiàng)D中,“k%5”結(jié)果為2,“k-k%5”結(jié)果為5,x%5結(jié)果為2。故本題答案為A選項(xiàng)。
12.A本題需了解3個(gè)知識點(diǎn):①標(biāo)識符是由字母、數(shù)字或下劃線組成,并且它的第一個(gè)字符必須是字母或者下劃線;②do是C語言的一個(gè)關(guān)鍵字,不能再用做變量名和函數(shù)名;③c語言規(guī)定指數(shù)形式的實(shí)型數(shù)量e或E后面的指數(shù)必須是整數(shù)。
13.消息消息解析:消息是一個(gè)實(shí)例與另一個(gè)實(shí)例之間傳遞的信息,它請求對象執(zhí)行某一處理或回答某一要求的信息,它統(tǒng)一了數(shù)據(jù)流和控制流。
14.33解析:分析程序運(yùn)行過程,第1次循環(huán):s=s+i*i=0+1*1=1,i=2;第2次循環(huán):s=s+i*i=1+2*2=5,i=3;第3次循環(huán):s=s+i*i=5+3*3=14,i=4;循環(huán)條件不成立輸出i,--i使i的值減1,輸出結(jié)果為3。
15.從定義到本源文件結(jié)束從定義到本源文件結(jié)束解析:C語言規(guī)定,宏名的有效范圍為從定義宏到本源程序結(jié)束。
16.log2n
17.abcbcc
18.7979解析:因?yàn)樵谡{(diào)用子函數(shù)時(shí)進(jìn)行的是數(shù)值傳遞,調(diào)用子函數(shù)并不能改變實(shí)參的值,所以經(jīng)過調(diào)用子函數(shù),c、d的值并沒有發(fā)生變化還是原來的值。
19.81628162解析:第一次調(diào)用函數(shù)fun時(shí),x[0]=2、xL1]=6、x[2]=1、x[3]=8,執(zhí)行完函數(shù)fun后,x[0]與x[3]的值互換,即x[0]=8、x[1]=6、x[2]=1、x[3]=2;第二次調(diào)用函數(shù)fun時(shí),i=1、j=2,故將x[1]與x[2]的值互換,即得x[0]=8、x[1]=1、x[2]=6、x[3]=2。
20.靜態(tài)分析靜態(tài)分析解析:程序測試分為靜態(tài)分析和動(dòng)態(tài)測試。其中,靜態(tài)分析是指不執(zhí)行程序,而只是對程序文本進(jìn)行檢查,通過閱讀和討論,分析和發(fā)現(xiàn)程序中的錯(cuò)誤。
21.3
22.123\n056\n009123\\n056\\n009解析:數(shù)組是用于按順序存儲同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),如果有一個(gè)一維數(shù)組,它的每一個(gè)元素是類型相同的一維數(shù)組,就形成了一個(gè)二維數(shù)組。在內(nèi)存中數(shù)組的元素是連續(xù)順序存放的,對;維數(shù)組來說,先存放第一行,再存放第;行,…,因?yàn)槊恳恍卸际瞧鋸V義一維數(shù)組的元素,并且在給出全部數(shù)組元素的初值后,二維數(shù)組的定義中可以將第一維的下標(biāo)省略。本題中,定義了一個(gè)元素類型為整型的二維數(shù)組敢a[][3]={1,2,3,4,5,6,7,8,9),它相當(dāng)于一個(gè)3*3的矩陣,for(i=0;i<3:i++)for(j=i+1;j<3;j++)a[j][i]=0;將行下標(biāo)i大于列下標(biāo)j的元素s[1][0],a[2][0],a[2][1]賦值為0,最后for(j=0;j<3;j++)prinff('%n',a[i][j]);printf('\\n');進(jìn)行換行輸出,所以輸出結(jié)果為
123
056
009
23.軟件開發(fā)
24.有窮性有窮性解析:算法有四個(gè)基本特征:可行性、確定性、有窮性和擁有足夠的情報(bào)。
25.voidfun(inta[]intnint*maxint*d){inti;*max=a[0];*d=0;for(i=0;i<n;i++)/*將最大的元素放入指針max所指的單元最大元素的下標(biāo)放入指針d所指的單元*/if(*max<a[i]){*max=a[i];*d=i;}}voidfun(inta[],intn,int*max,int*d)\r\n{\r\ninti;\r\n*max=a[0];\r\n*d=0;\r\nfor(i=0;i<n;i++)/*將最大的元素放入指針max所指的單元,最大元素的下標(biāo)放入指針d所指的單元*/\r\nif(*max<a[i])\r\n{*max=a[i];*d=i;}\r\n}解析:該程序直接使用形參max和d,由于它們都是指針變量,所以要引用它所指向的變量時(shí)要對它進(jìn)行指針運(yùn)算,也即*號運(yùn)算。
26.
解析:該程序功能是求最低分?jǐn)?shù)的學(xué)生。本題是關(guān)于求解結(jié)構(gòu)體中某些成員的最小值,首先將第一個(gè)值設(shè)定為最小值,并在循環(huán)中將其他所有值與該值進(jìn)行比較,求得最小值。
27.fun(STUa[]STU*s)\r\n{\r\ninti;\r\n*s=a[0];\r\nfor(i=0;i<N;i++)/*找出成績最高的學(xué)生記錄*/\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++)/*找出成績最高的學(xué)生記錄*/\r\nif(s->s<a[i].s)\r\n*s==a[i];\r\n}解析:本題的流程是這樣的,先使s指向第1個(gè)學(xué)生,我們的題干目的是找出分?jǐn)?shù)最高的學(xué)生,所以if語句的條件是s->s<a[i].s。此外,在做本題時(shí),我們應(yīng)該熟練掌握“指向運(yùn)算符”和“成員運(yùn)算符”的相關(guān)知識。題中“s->s”也可換成“(*s).s”。
28.doublefun(doubleeps){doubles=1.0s1=1.0;intn=1;while(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí)繼續(xù)求下—項(xiàng)*/{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/s=s+s1;/*求和*/n++;}return2*s;}doublefun(doubleeps)\r\n{\r\ndoubles=1.0,s1=1.0;\r\nintn=1;\r\nwhile(s1>=eps)/*當(dāng)某項(xiàng)大于精度要求時(shí),繼續(xù)求下—項(xiàng)*/\r\n{s1=s1*n/(2*n+1);/*求多項(xiàng)式的每—項(xiàng)*/\r\ns=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年老舊小區(qū)改造項(xiàng)目施工安全與質(zhì)量控制報(bào)告
- 乙型肝炎病毒細(xì)胞感染模型的構(gòu)建與優(yōu)化策略探究
- 2025年醫(yī)療器械臨床試驗(yàn)項(xiàng)目規(guī)范化管理案例分析報(bào)告
- 中國壓縮機(jī)行業(yè)市場深度調(diào)研及發(fā)展策略建議研究報(bào)告(2024-2030)
- 無毒鋼絲吸排水管行業(yè)深度研究分析報(bào)告(2024-2030版)
- 2020-2025年中國白羽肉雞行業(yè)市場調(diào)研分析及投資前景預(yù)測報(bào)告
- 地平板半掛車行業(yè)深度研究分析報(bào)告(2024-2030版)
- 2025年運(yùn)載火箭項(xiàng)目調(diào)研分析報(bào)告
- 2025年中國掌上型數(shù)據(jù)轉(zhuǎn)存器行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 2025年中國造船行業(yè)市場運(yùn)營現(xiàn)狀及投資規(guī)劃研究建議報(bào)告
- 鐵礦礦石的市場定位與銷售渠道
- 坍塌事故培訓(xùn)課件
- 國有集團(tuán)公司中層及員工履職追責(zé)問責(zé)處理辦法模版
- 火災(zāi)隱患整改情況報(bào)告表4
- 高三數(shù)學(xué)復(fù)習(xí)備考策略
- 《環(huán)境工程概論4》全冊配套完整教學(xué)課件
- 工貿(mào)企業(yè)員工安全培訓(xùn)試卷
- ★教導(dǎo)型組織模式思想管理二
- 化工工藝學(xué)期末復(fù)習(xí)題答案
- 廣東石油化工學(xué)院輔導(dǎo)員考試真題2022
- 2023-2024學(xué)年江蘇省江都市小學(xué)語文三年級期末評估考試題詳細(xì)參考答案解析
評論
0/150
提交評論