版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023年江西省新余市全國(guó)計(jì)算機(jī)等級(jí)考試C語(yǔ)言程序設(shè)計(jì)真題(含答案)學(xué)校:________班級(jí):________姓名:________考號(hào):________
一、2.填空題(10題)1.以下程序段打開(kāi)文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用刪函數(shù)返回當(dāng)前文件位置指針的具體位置,從而確定文件長(zhǎng)度,請(qǐng)?zhí)羁铡?/p>
FILE*myf;longfl;
myf=【】("test.t","rb");
fseek(myf,(),SEEK_END);fl+ftell(myf);
fclose(myf);
printf("%d\n",fl);
2.設(shè)有以下定義的語(yǔ)句:
inta[3][2]={10,20,30,40,50,60},(*p)[2];
p=a;
則*(*(P+2)+1)值為【】。
3.當(dāng)循環(huán)隊(duì)列非空且隊(duì)尾指針等于隊(duì)頭指針時(shí),說(shuō)明循環(huán)隊(duì)列已滿,不能進(jìn)行人隊(duì)運(yùn)算。這種情況稱為【】。
4.一張3.5英寸軟盤大約能存儲(chǔ)140萬(wàn)個(gè)ASCⅡ字符,若存放漢字大約能存放【】個(gè)。
5.設(shè)有定義“stmct{inta;floatb;charc}abc,*p_abc=&abc;”,則對(duì)結(jié)構(gòu)體成員a的引用方法可以是abc.a和p_abc______。
6.以下程序中給指針p分配三個(gè)double型動(dòng)態(tài)內(nèi)存單元,請(qǐng)?zhí)羁铡?/p>
#include<stdio.h>
main()
{dOuble*p;
p=(double*)malloc();
p[0]=1.5;p[1]=2.5;p[2]=3.5
printf("%f%f%f\n",p[0],p[1],p[2]);
}
7.數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式分別為_(kāi)_____模式、內(nèi)部級(jí)模式與外部級(jí)模式。
8.以下程序段打開(kāi)文件后,先利用fseek函數(shù)將文件位置指針定位在文件末尾,然后調(diào)用ftell函數(shù)返回當(dāng)前文件的具體位置,從而確定文件長(zhǎng)度,請(qǐng)?zhí)羁铡?/p>
FILE*myf;longfl;
myf=【】("test.t","rb”);
fseek(myf,()SEEK_END);fl+ftell(myf);
fclose(myf);
printf("%ld\n",fl);
9.軟件工程研究的內(nèi)容主要包括:【】技術(shù)和軟件工程管理。
10.以下程序中,函數(shù)fun的功能是計(jì)算x2-2x+6,主函數(shù)中將調(diào)用fun函數(shù)計(jì)算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
請(qǐng)?zhí)羁铡?/p>
doublefun(doublex){return(x*x-2*x+6);}
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun([6]);
y2=fun([7]);
printf("y1=%lf,y2=%lf\n",y1,y
二、單選題(10題)11.有以下程序#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)));}程序運(yùn)行后的輸出結(jié)果是______。A.3B.6C.8D.12
12.下面不屬于需求分析階段任務(wù)的是()。
A.確定軟件系統(tǒng)的功能需求B.確定軟件系統(tǒng)的性能需求C.制定軟件集成測(cè)試計(jì)劃D.需求規(guī)格說(shuō)明書評(píng)審
13.將發(fā)送端數(shù)字脈沖信號(hào)轉(zhuǎn)換成模擬信號(hào)的過(guò)程稱為
A.鏈路傳輸B.調(diào)制C.解調(diào)D.數(shù)字信道傳輸
14.可以作為Windows外殼程序的是()
A.程序管理器B.文件管理C.程序管理器和文件管理器D.主群組
15.有以下程序:#include<stdio.h>main(){intx=0x9;printf(“%c\n”,‘A’+x);}程序運(yùn)行后的輸出結(jié)果是()。
A.IB.JC.KD.H
16.一個(gè)函數(shù)返回值的類型是由()決定的。
A.return語(yǔ)句中表達(dá)式的類型B.定義函數(shù)時(shí)指定的函數(shù)類型C.在調(diào)用函數(shù)時(shí)臨時(shí)指定D.調(diào)用函數(shù)的主調(diào)函數(shù)的類型
17.以下選項(xiàng)中不能用做C程序合法常量的是()。
A.1,234B.‘\123’C.123D.“\x7G”
18.以下敘述中錯(cuò)誤的是()。
A.C語(yǔ)言程序在運(yùn)行過(guò)程中的所有計(jì)算都以二進(jìn)制方式進(jìn)行
B.C語(yǔ)言程序在運(yùn)行過(guò)程中的所有計(jì)算都以十進(jìn)制方式進(jìn)行
C.所有C語(yǔ)言程序都需要編譯、鏈接無(wú)誤后才能運(yùn)行
D.C語(yǔ)言程序中字符變量存放的是字符的ASCII值
19.下列正確的實(shí)型常量是()。
A.E3.4B.-12345C.2.2eO.8D.4
20.[0,2,1,4,3,9,5,8,6,7]是以數(shù)組形式存儲(chǔ)的最小堆,刪除堆頂元素0后的結(jié)果是()
A.[2,1,4,3,9,5,8,6,7]
B.[1,2,5,4,3,9,8,6,7]
C.[2,3,1,4,7,9,5,8,6]
D.[1,2,5,4,3,9,7,8,6]
三、程序設(shè)計(jì)題(10題)21.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是實(shí)現(xiàn)B=A+AT,即將矩陣A加上A的轉(zhuǎn)置,結(jié)果存放在矩陣B中。計(jì)算結(jié)果在main()函數(shù)中輸出。舉例如下。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}
22.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是判斷字符串是否為回文,若是,則函數(shù)返回1,在主函數(shù)中輸出“YES”,否則返回0,在主函數(shù)中輸出“NO”?;匚淖址侵疙樧x和倒讀都一樣的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件prog1.c中。第3部分無(wú)紙化考武題庠請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:1#include2#defineN803intfun(char*str)4{56}7main()8{9chars[n];10FILE*out;11char*test[]={"1234321","123421","123321","abcdCBA"};12inti;13printf("Enterastring:");14gets(s);15printf("\n\n");16puts(s);17if(fun(s))18printf("YES\n");19else20printf("NO\n");21/******************/22out=fopen("out.dat","w");23for(i=0;i<4/i++)24if(fun(test[i]))25fprintf(out,"YES\n");26else27fprintf(out,"NO\n");28fclose(out);29/******************/30}
23.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,規(guī)定輸入的字符串中只包含字母和*號(hào)。請(qǐng)編寫函數(shù)fun(),其功能是使字符串中尾部的*號(hào)不多于n個(gè),若多于n個(gè),則刪除多余的*號(hào);若少于或等于n個(gè),則不做任何操作,字符串中間和前面的*號(hào)不刪除。例如,字符串中的內(nèi)容為“****A*BC*DEF*G*******”,若n的值為4,刪除后,字符串中的內(nèi)容應(yīng)為“****A*BC*DEF*G****”;若n的值為7,則字符串中的內(nèi)容仍為“****A*BC*DEF*G*******”。n的值在主函數(shù)中輸入。編寫函數(shù)時(shí),不得使用C語(yǔ)言提供的字符串函數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdio.h>voidfun(char*a,intn){}main(){ chars[81];intn; printf("Enterastring:\n”); gets(s); printf(“Entern:”); scanf(“%d”,&n); fun(s,n); printf(“Thestringafterdeleted:\n”); puts(s);}
24.請(qǐng)編寫函數(shù)proc(),它的功能是計(jì)算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C語(yǔ)言中可調(diào)用log(n)函數(shù)求1n(n)。例如,若n1的值為30,則proc()函數(shù)值為8.640500。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
25.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,編寫函數(shù)fun(),其功能是將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫(若該位置上不是字母,則不轉(zhuǎn)換)。例如,若輸入“abc4EFg”,則應(yīng)輸出“aBc4EFg”。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>voidfun(char*ss){}voidmain(void){ chartt[51]; printf(“\nPleaseenterancharacterstringwithin50characters:\n”); gets(tt); printf(“\n\nAfterchanging,thestring\n%s”,tt); fun(tt); printf(“\nbecomes\n%s”,tt);}
26.請(qǐng)編寫函數(shù)proc(),其功能是:將str所指字符串中除了下標(biāo)為奇數(shù)、同時(shí)ASCⅡ值為偶數(shù)的字符外,其余的全部刪除,串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為edB2A4Dsdg,其中字符A的ASCⅡ碼值為奇數(shù),因此應(yīng)當(dāng)刪除;其中字符B的ASCⅡ碼值為偶數(shù),但在數(shù)組中的下標(biāo)為偶數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCⅡ碼值為偶數(shù),所在數(shù)組中的下標(biāo)為奇數(shù),因此不應(yīng)當(dāng)刪除。依此類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是d24。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。試題程序:
27.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,已知學(xué)生的記錄由學(xué)號(hào)和學(xué)習(xí)成績(jī)構(gòu)成,N名學(xué)生的記錄已存入a結(jié)構(gòu)體數(shù)組中。請(qǐng)編寫函數(shù)fun(),該函數(shù)的功能是找出成績(jī)最高的學(xué)生記錄,通過(guò)形參將其返回主函數(shù)(規(guī)定只有一個(gè)最髙分)。已給出函數(shù)的首部,請(qǐng)完成該函數(shù)。注意:部分源程序給出如下。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:#include<stdlib.h>#include<stdio.h>#include<string.h>#include<conio.h>#defineN10typedefstructss/*定義結(jié)構(gòu)體*/{charnum[10];ints;}STU;fun(STUa[],STU*s){}voidmain(){STUa[N]={{“A01”,81},{“A02”,89},{“A03”,66},{“A04”,87},{“A05”,77},{“A06”,90},{“A07”,79},{“A08”,61},{“A09”,80},{“A10”,71}},m;inti;system(“CLS”);printf(“****Theoriginaldata****”);for(i=0;i<N;i++)printf(“No=%sMark=%d\n”,a[i].num,a[i].s);fun(a,&m);printf(“****THERESULT****\n”);printf(“Thetop:%s,%d\n”,m.num,m.s);}28.請(qǐng)編寫一個(gè)函數(shù)proc(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過(guò)形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。
主函數(shù)中arr是數(shù)組名,n是arr中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填入所編寫的若干語(yǔ)句。
試題程序:
29.使用VC++2010打開(kāi)考生文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件prog1.c。在此程序中,請(qǐng)編寫一個(gè)函數(shù)fun(),用來(lái)求出數(shù)組中值最大的元素在數(shù)組中的下標(biāo)并將其存放在k所指向的存儲(chǔ)單元中。例如,輸入如下整數(shù):876675896101301401980431451777則輸出結(jié)果為6,980。注意:部分源程序在文件prog1.c中。請(qǐng)勿改動(dòng)主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入你編寫的若干語(yǔ)句。試題程序:
30.某學(xué)生的記錄由學(xué)號(hào)、8門課程成績(jī)和平均分組成,學(xué)號(hào)和8門課程的成績(jī)已在主函數(shù)中給出,請(qǐng)編寫函數(shù)fun,其功能是:求出該學(xué)生的平均分,并放人記錄的ave成員中。
例如,學(xué)生的成績(jī)是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應(yīng)為78.875。注意:部分源程序在文件PROGl.C中。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語(yǔ)句。
四、2.程序修改題(10題)31.下列給定程序中,函數(shù)fun()的功能是:用遞歸算法計(jì)算斐波拉契級(jí)數(shù)列中第n項(xiàng)的值。從第一項(xiàng)起,斐波`拉契級(jí)數(shù)序列為1,1,2,3,5,8,13,21,……例如,若給n輸入7,
該項(xiàng)的斐波拉契級(jí)數(shù)值為13。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
longfun(intg)
{
/*************found**************/
switch(g);
{case0:return0;
switch(g)
case1;case2:return1;
}
return(fun(g-1)+fun(g-2));
}
main()
{
longfib;intn;
printf("Inputn:");scanf("%d",&n);
printf("n-%d\n",n);
fib=fun(n);
printf("fib=%d\D\n",fib);
}
32.給定程序MODll.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。
例如,若字符串為abcd,則應(yīng)輸出:dcba。
請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
33.下列給定程序中,函數(shù)fun()的功能是;求出兩個(gè)數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若給num1和num2輸入49和21,則輸出的最大公約數(shù)為7:若給num1和num2分別輸入27和81,則輸出最大公約數(shù)為27。
請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
intfun(inta,intb)
{intr,t;
if(a<b)
/******************found*****************/
{t=a;b=a;a=t;}
r=a%b;
while(r!=0)
{a=b;b=r;r=a%b;}
/******************found*****************/
return(a);
}
main()
{intnum1,num2,a;
printf("Inputnum1num2:");scanf("%d%d",&num1,&num2);
printf("num1=%dnum2=%d\n\n",num1,num2);
a=fun(num1,num2);
printf("Themaximuncommondivisoris%d\n\n",a);
}
34.下列給定程序中fun()函數(shù)的功能是:將n個(gè)無(wú)序整數(shù)從小到大排序。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意;不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
fun(intn,int*a)
{inti,j,p,t;
for(j=0;j<n-1;j++)
{P=j;
/***************found*******************/
for(i=j+l;i<n-1;i++)
if(a[p]>a[i])
/***************found*******************/
t=i;
if(p!=j)
{t=a[j];a[j]=a[p];a[p]=t;}
}
}
putarr(ihtn,int*z)
{inti;
for(i=l;i<=n;i++,z++)
{printf("%4d",*z);
if(!(i%10))printf("\n");
}printf("\n");
}
main()
{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=11;
clrscr();
printf("\n\nBeforesorting%dnumbers:\n",n);putarr(n,aa);
fun(n,aa);
printf("\nAftersorting%dnumbers:\n",n);putarr(n,aa);
}
35.給定程序MODll.c中函數(shù)fun的功能是;由形參給定n個(gè)實(shí)數(shù),輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。
例如,n=8時(shí),輸入:193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763
所得平均值為:195.838745,在平均值以上的實(shí)數(shù)個(gè)數(shù)應(yīng)為:5
請(qǐng)改正程序中的錯(cuò)誤,使程序能輸出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
36.下列給定程序中,函數(shù)fun()的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從低到高的順序找出前m(m≤10)名學(xué)生來(lái),并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<alloc.h>
#defineN10
typedefstructSS
{
charnum[10];
ints;
}STU;
STU*fun(STUa[],intm)
{
STUb[N],*t;
inti,j,k;
/*************found*************/
*t=calloc(m,sizeof(STU));
for(i=0;i<N;i++)
b[i]=a[i];
for(k=0;k<m;k++)
{
/*************found*************/
for(i=j=0;i<N;j++)
if(b[i].s<b[j],s)
j=i;
/*************found*************/
t[k].s=b[j].s;
b[j].s=100;
}
returnt;
}
outresult(STUa[],F(xiàn)ILE*pf)
{
inti;
for(i=0;i<N;i++)
fprintf(pf,"NO=%SMark=%d\n",
a[i].num,a[i].S);
fprintf(pf,"\n\n");
}
main()
{
STUa[N]={{“A01”,77},{“A02”,85},
{“A03”,96},{“A04”,65},{“A05”,75},
{“A06”,96},{“A07”,76},{“A08”,63},
{“A09”,69},{“A10”,78}};
STU*porder;
inti,m;
clrscr();
printf(“*****THERESULT*****\n”);
outresult(a,stdout);
printf(“\nGivethenumberofthestudentswhohavelowerscore:”);
scanf(“%d”,&m);
while(m>10)
{
printf(“\nGivethenumberofthestudentswhohavelowerscore:”);
scanf(“%d”,&m);
}
porder=fun(a,m);
printf(“*****THERESULT*****\n”);
printf(“Thelow:\n”);
for(i=0;i<m;i++)
printf(“%s%d\n”,porder[i].num,
porder[i].s);
free(porder);
}
37.下列給定程序中,函數(shù)fun()的功能是:將長(zhǎng)整型數(shù)中每一位上為偶數(shù)的數(shù)依次取出,構(gòu)成一個(gè)新數(shù)放在沖。高位仍在高位,低位仍在低位。例如,當(dāng)s中的數(shù)為87653142時(shí),t中的數(shù)為8642。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main,~數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
voidfun(longs,long*t)
/**********************************/
{intd;
longs1=l;
*t=0;
while(s>0)
{d=s%10;
/**********************************/
if(d%2=0)
{*t=d*sl+*t;
sl*=10
}
/**********************************/
s\=10;
}
}
main()
{longs,t;
clrscr();
printf("\nPleaseenters:");scanf
("%ld",&s);
fun(s,&t);
printf("Theresultis:%ld\n",t);
}
38.下列給定程序中,函數(shù)fun()的功能是計(jì)算并輸出high以內(nèi)的素?cái)?shù)之和。high由主函數(shù)傳給fun()函數(shù)。
例如:若high的值為100,則函數(shù)的返回值為1060。
請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。
[注意]不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
[試題源程序]
#include<conio.h>
#include<stdio.h>
#include<math.h>
intfun(inthigh)
{
intsum=0,n=0,j,yes;
while(high>=2)
{
yes=1;
for(j=2;j<=high/2;j++)
**********************found**********************/
ifhigh%j==0
{
yes=0;
break;
}
/**********************found**********************/
if(yes==0)
{
sum+=high;
n++;
}
high--;
}
returnsum;
}
main()
{
clrscr();
printf("%d\n",fun(100));
}
39.下列給定的程序中,函數(shù)fun()的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<stdio.h>
#defineN20
voidfun(inta[],intn)
{inti,j,t,p;
for(j=0;j<n-1;j++)
/*************found**************/
{p=j
for(i=j;i<n;i++)
if(a[i]<a[p])
/*************found**************/
p=j;
t=a[p];a[p]=a[j];a[j]=t;
}
}
main()
{inta[N]={9.6,8,3,-1},i,m=5;
printf("排序前的數(shù)據(jù):");
for(i=0;i<m;i++)printf("%d",a[i]);
printf("\n");
fun(a,m);
printf("排序后的順序:");
for(i=0;i<m;i++)printf("%d",a[i]);
printf("\n");
}
40.下列給定程序中,函數(shù)fun()的功能是:求出以下分?jǐn)?shù)序列的前n項(xiàng)之和。
2/1,3/2,5/3,8/5,13/8,21/13,……
和值通過(guò)函數(shù)值返回main()函數(shù)。例如,若輸入n=5,則應(yīng)輸出8.391667。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:
#include<conio.h>
#include<stdio.h>
/*************found**************/
fun(intn)
{inta=2,b=l,c,k;
doubles=0.0;
for(k=l;k<=n;k++)
{s=s+l.0*a/b;
/*************found**************/
c=a;a+=b;b+=c;
}
return(s);
}
main()
{intn=5;
clrscr();
printf("\nThevalueoffunctionis:
%1f\n",fun(n));
}
五、程序改錯(cuò)題(2題)41.改正下列程序中不正確的語(yǔ)句。
main()
{inta;
scanf(“%d”,a);if(a=1)printf(“One\n”);}
42.下列給定程序中,函數(shù)proc()的功能是:依次取出字符串中所有的字母字符,形成新的字符串,并取代原字符串。例如,若輸入的字符串是:“ab232bd34bkw”,則輸出結(jié)果是:“abbdbkw”。請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:
六、操作題(2題)43.使用VC++打開(kāi)考生文件夾下modi1中的解決方案。此解決方案的項(xiàng)目中包含一個(gè)源程序文件modi1.c。在此程序中,函數(shù)fun()的功能是求出s所指字符串中最后一次出現(xiàn)的t所指字符串的地址,并將此地址通過(guò)函數(shù)值返回,在主函數(shù)中輸出從此地址開(kāi)始的字符串;若未找到,則函數(shù)值為NULL。例如,當(dāng)字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“ab”時(shí),輸出結(jié)果應(yīng)是“abcdx”。當(dāng)字符串中的內(nèi)容為“abcdabfabcdx”,t中內(nèi)容為“abd”時(shí),則程序輸出未找到信息“Notfound!”。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>#include<string.h>char*fun(char*s,char*t){ char*p,*r,*a;/*********found*********/ a=Null; while(*s) { p=s;r=t; while(*r)/*********found*********/ if(r==p) {r++;p++;} elsebreak; if(*r=='\0')a=s; s++;} returna;}voidmain(){ chars[l00],t[100],*p; system(“CLS”); printf(“\nPleaseenterstrings:”); scanf(“%s”,s); printf(“\nPleaseentersubstringt:”); scanf(“%s”,t); p=fun(s,t); if(p) printf(“\nTheresultis:%s\n”,p); else printf(“\nNotfound!\n”);}
44.觀察題目要求,可以知道以下幾點(diǎn):}
參考答案
1.fopenfopen解析:C語(yǔ)言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開(kāi),使用后要關(guān)閉。
打開(kāi)文件的函數(shù)為:fopen(),調(diào)用形式為:fp=fopen(“文件名”,“使用文件方式”);
關(guān)閉文件的函數(shù)為:fclose(),調(diào)用形式為:fclose(fp);其中fp為文件指針。
2.6060解析:p是指向整型數(shù)組的指針變量,p=a使得p指向數(shù)組a的第1行。p+2是數(shù)組a第3行的地址,*(p+2)是數(shù)組a第3行{50,60},其實(shí)*(p+2)為數(shù)組a第3行的首地址,*(p+2)+1為數(shù)組a第3行第2個(gè)元素的地址,那么*(*(P+2)+1)就是數(shù)組a第3行第2個(gè)元素,即60。
3.上溢上溢解析:入隊(duì)運(yùn)算是指在循環(huán)隊(duì)列的隊(duì)尾加入一個(gè)新元素。這個(gè)運(yùn)算有兩個(gè)基本操作:首先將隊(duì)尾指針進(jìn)一(即rear=rear+1),并當(dāng)rear=m+1時(shí),置rear=1;然后將新元素插入隊(duì)尾指針指向的位置。當(dāng)循環(huán)隊(duì)列非空(s=1)且隊(duì)尾指針等于隊(duì)頭指針時(shí),說(shuō)明循環(huán)隊(duì)列已滿,不能進(jìn)行人隊(duì)運(yùn)算,這種情況稱為“上溢”。
4.70萬(wàn)70萬(wàn)
5.若結(jié)構(gòu)體變量abc有成員a,并有指針p_abc指向結(jié)構(gòu)變量abe,則引用變量abe成員s的標(biāo)記形式有abe.a和p_abc->a。
6.3*sizeof(double)或size(double)*3或24或3*8或8*33*sizeof(double)或size(double)*3或24或3*8或8*3解析:本題考核的知識(shí)點(diǎn)是malloc()函數(shù).該函數(shù)的調(diào)用格式是“malloc(n)”,作用是申請(qǐng)n個(gè)字符的存儲(chǔ)單元,并返回該存儲(chǔ)區(qū)的首地址,實(shí)際調(diào)用的時(shí)候可在前面加上“(類型說(shuō)明符*)”,以轉(zhuǎn)換成需要的類型的地址.所以在此空格處應(yīng)該填寫3*sizeof(double)或size(double)*3或其他等價(jià)的表達(dá)式。
7.概念(或概念級(jí))概念(或概念級(jí))
8.fopenfopen解析:C語(yǔ)言中的文件分為:ASCII文件與二進(jìn)制文件。文件在使用前打開(kāi),使用后要關(guān)閉。
打開(kāi)文件的函數(shù)為:fopen(),調(diào)用形式為:fP=fopen(”文件名”,”使用文件方式”);
關(guān)閉文件的函數(shù)為:folose(),調(diào)用形式為:foclose(fp);其中fp為文件指針。
9.軟件開(kāi)發(fā)
10.
11.B解析:在主函數(shù)中,第—次調(diào)用fun函數(shù),將變量b,c的值傳給形參x,y,在fun()函數(shù)中執(zhí)行if語(yǔ)句,判斷b和c的值是否相等,由于在主函數(shù)中賦初值b=5,c=6,所以判斷條件不滿足,執(zhí)行else語(yǔ)句,返回表達(dá)式(x+y)/2的值,即:(5+6)/2,因?yàn)閰?shù)的類型都為int型,所以結(jié)果也為整型:5,第二次調(diào)用時(shí)8和5也不相等,所以返回值為6,因此,選項(xiàng)B是正確的。
12.C【答案】:C
【知識(shí)點(diǎn)】:需求分析階段的任務(wù)
【解析】:需求分析階段的任務(wù)是深入描述軟件的功能和性能,確定軟件設(shè)計(jì)的約束和軟件同其他系統(tǒng)元素的接口細(xì)節(jié),定義軟件的其他有效性需求,借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問(wèn)題。可分為需求提出、需求描述及需求評(píng)審三個(gè)階段。從此可以看出需求分析的任務(wù)不包括制定軟件集成測(cè)試計(jì)劃,故選C。
13.B
14.C
15.B“printf(“%C\\n”,‘A’+X),x=0X9;”中0x9是十六進(jìn)制數(shù),轉(zhuǎn)為十進(jìn)制數(shù)x=9?!皃rintf(“%C\\n”,‘A’+9);”,輸出格式要求是“%c”,因此將字符‘A’按字母順序向后偏移9個(gè)位置,可得結(jié)果為“J”。故本題答案為B選項(xiàng)。
16.B
17.AA選項(xiàng)中逗號(hào)是一個(gè)操作符。
18.BC語(yǔ)言程序在運(yùn)行過(guò)程中的所有計(jì)算都以二進(jìn)制方式進(jìn)行,所以B選項(xiàng)錯(cuò)誤。故本題答案為B選項(xiàng)。
19.B解析:實(shí)型常量有兩種書寫形式:①小數(shù)形式,它由符號(hào)、整數(shù)部分、小數(shù)點(diǎn)及小數(shù)部分組成;②指數(shù)形式,由十進(jìn)制小數(shù)形式加上指數(shù)部分組成,其形式為十進(jìn)制小數(shù)e指數(shù)或十進(jìn)制小數(shù)E指數(shù)。注:e或E后面的指數(shù)必須是整數(shù),并且在e或E的前面必須有數(shù)字。本題中,選項(xiàng)A)中E的前面沒(méi)有數(shù)字,因此錯(cuò)誤。選項(xiàng)C)中0.8不是整數(shù),因此錯(cuò)誤。選項(xiàng)D)中4是整型常量而不是實(shí)型常量。
20.D21.voidfun(inta[3][3],intb[3][3]){ inti,j; 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中*/}行列數(shù)相等的二維數(shù)組的轉(zhuǎn)置就是行列互換。即轉(zhuǎn)置后的第i行第j列正好對(duì)應(yīng)原矩陣的第j行第i列。本題使用兩層循環(huán)實(shí)現(xiàn)矩陣的轉(zhuǎn)置,并將計(jì)算結(jié)果存入矩陣b中,外層循環(huán)控制矩陣的行下標(biāo),內(nèi)層循環(huán)控制矩陣的列下標(biāo)。
22.1intfun(char*str)2{3inti,n=0,fg=1;4char*p=str;5while(*p)/*將指針p指向字符串末尾,并統(tǒng)計(jì)字符數(shù)*/6{7n++8P++;10}10for(i=0;i23.voidfun(char*a,intn){ inti=0,k=0; char*p,*t; p=t=a;/*將指針移動(dòng)到字符串末尾*/ while(*t) t++; t--;/*從后往前如果是*則使k自增1,找到最后一個(gè)*所在的位置,并記錄*的個(gè)數(shù)*/ while(*t==‘*’)/*指針t指向前一個(gè),同時(shí)標(biāo)量k自增1*/ {k++;t--;}/*如果最后*的個(gè)數(shù)大于允許的個(gè)數(shù)*/ if(k>n)/*循環(huán)次數(shù)不大于前面的字符與最大允許*的個(gè)數(shù)之和*/ { while(*p&&p<t+n+1)<p=""></t+n+1)<>/*把字符保存到數(shù)組a中*/ {a[i]=*p; i++;p++; } a[i]=‘\0’; }}字符串中尾部*號(hào)不能多于n個(gè),多余的要?jiǎng)h除。首先需要通過(guò)while循環(huán)統(tǒng)計(jì)字符串尾部*號(hào),然后通過(guò)if條件語(yǔ)句完成尾部*號(hào)數(shù)和n的比較,若尾部*號(hào)數(shù)多于n個(gè),則需要把n個(gè)*號(hào)和其余字符重新保存。
24.
【解析】由題目中所給表達(dá)式可知,表達(dá)式的值為m項(xiàng)表達(dá)式的和然后開(kāi)平方。可以首先通過(guò)m次循環(huán)求得m項(xiàng)表達(dá)式的和,然后將其和開(kāi)平方并返回到主函數(shù)當(dāng)中。
25.voidfun(char*ss){ inti; for(i=0;ss[i]!=‘\0’;i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)的字母轉(zhuǎn)換為大寫字母*/ if(i%2==1&&ss[i]>=‘a(chǎn)’&&ss[i]<=‘z’) ss[i]=ss[i]-32;}將指定字符串中奇數(shù)位置的字母轉(zhuǎn)換為大寫字母,首先需要判斷奇數(shù)位置,再判斷該位置字符是不是小寫字母,如果是小寫字母,則將小寫字母轉(zhuǎn)換為大寫字母。字母大小寫轉(zhuǎn)換操作中,只要將小寫字母的ASCII值減去32即可轉(zhuǎn)換為大寫字母。
26.
【解析】題目中要求將字符串str中下標(biāo)為奇數(shù),同時(shí)ASCⅡ碼值為偶數(shù)的字符放在數(shù)組t中,首先,需要檢查字符串str中下標(biāo)為奇數(shù)的字符的ASCⅡ碼值是否為偶數(shù),將符合要求的字符放在數(shù)組t中。最后,為新的字符串?dāng)?shù)組添加結(jié)束符。
27.fun(STUa[],STU*s){inti;*s=a[0];for(i=0;i<N;i++)/*找出成績(jī)最高的學(xué)生記錄*/if(s->s<a[i].s)<p=""></a[i].s)<>*s=a[i];}先使指針變量S指向第1名學(xué)生。通過(guò)循環(huán)語(yǔ)句遍歷所有學(xué)生的成績(jī),利用條件語(yǔ)句判斷當(dāng)前學(xué)生成績(jī)是否最高。所以if條件表達(dá)式為s->ss”等價(jià)于“(*s).s”。
28.
【解析】要得到數(shù)組中元素的最大值,需要比較數(shù)組中的每一個(gè)元素。首先將最大值賦值為數(shù)組中的第一個(gè)元素,再將其與數(shù)組中的其他元素相比較,將值最大的元素賦給變量max,并將其下標(biāo)賦值給變量d。
29.1intfun(int*s,intt,int*k)2{3Inti;4*k=0;/*k所指的數(shù)是數(shù)組的下5標(biāo)*/6for(i=0;i<t;i++)hif(s[*k]<s[i])*k=i;/*找到數(shù)組中值最大的元素,把該元素的下標(biāo)賦給k所指的數(shù)*/7returns[*k];/*返回?cái)?shù)組的最大元素*/8}<t;i++)<>本題中使用指針變量k作為值最大的元素的下標(biāo)。使用時(shí)要注意對(duì)k進(jìn)行指針運(yùn)算。程序一開(kāi)始讓k指向數(shù)組中的第1個(gè)元素,即*k=0。通過(guò)for循環(huán)與數(shù)組各個(gè)元素比較,找到最大值。<></t;i++)30.
【考點(diǎn)分析】
本題考查:結(jié)構(gòu)體類型成員運(yùn)算,指向結(jié)構(gòu)體類型的指針變量作函數(shù)參數(shù)。
【解題思路】
本題考查自定義形參的相關(guān)知識(shí)點(diǎn),程序流程是這樣的:在fun函數(shù)中求出平均分后,返回到主函數(shù)時(shí)平均分也要帶回,所以只能定義一個(gè)指針類型的形參STREC*a,此時(shí),引用成員的方式可以使用指向運(yùn)算符,即a一>ave和a一>s[i],當(dāng)然也可用(*a).a(chǎn)ve和(*a).s[i]。
31.(1)錯(cuò)誤:switch(g);正確:去掉分號(hào)(2)錯(cuò)誤:case1;case2:return1:正確:case1:case2:return1;(1)錯(cuò)誤:switch(g);正確:去掉分號(hào)\r\n(2)錯(cuò)誤:case1;case2:return1:正確:case1:case2:return1;解析:C語(yǔ)言中,Switch語(yǔ)句之后不能有分號(hào),并且Case語(yǔ)句常量后應(yīng)用的是冒號(hào)。
32.(1)voidfun(char*a)(2)printf("%c"*a)(1)voidfun(char*a)(2)printf("%c",*a),解析:本題中函數(shù)的功能是將字符串中的內(nèi)容逆序。題干中給出的fun函數(shù)通過(guò)遞歸調(diào)用自身,實(shí)現(xiàn)字符串的逆序。
33.(1)錯(cuò)誤:{t=a;b=a;a=t;}正確:{t=a;a=b;b=t;}(2)錯(cuò)誤:return(a);正確:return(b);(1)錯(cuò)誤:{t=a;b=a;a=t;}正確:{t=a;a=b;b=t;}\r\n(2)錯(cuò)誤:return(a);正確:return(b);解析:若求兩個(gè)數(shù)的最大公約數(shù),如果b除a的非零余數(shù)能夠整除a,那么該余數(shù)就是最大公約數(shù);若余數(shù)為0,則最大公約數(shù)為a。該題程序中采用了循環(huán)語(yǔ)句,若b除以a的余數(shù)不等于0,則繼續(xù)用a除以所得余數(shù),直至余數(shù)為0,如此可以得到a,b的最大公約數(shù)。關(guān)于“交換原則”我們?cè)谇懊嬉呀?jīng)講述過(guò)了,這里就不再贅述。
34.(1)錯(cuò)誤:for(i=j+1;i<n-1;i++)正確:for(i=j+1;i<n;i++)(2)錯(cuò)誤:t=i;正確:p=i;(1)錯(cuò)誤:for(i=j+1;i<n-1;i++)正確:for(i=j+1;i<n;i++)\r\n(2)錯(cuò)誤:t=i;正確:p=i;解析:該程序是對(duì)n個(gè)數(shù)實(shí)現(xiàn)從小到大的排序,該題中先是找小輸入整數(shù)的最小項(xiàng),置于指針第1個(gè)元素的位置:再找出第2個(gè)元素至尾元素的最小項(xiàng),置于第2個(gè)元素的位置;之后順次處理后讀元素。
35.(1)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)(1)intj-c=0;doublexa=0.0;(2)if(x[j]>=xa)解析:本題中函數(shù)的功能是輸出平均值,并統(tǒng)計(jì)在平均值以上(含平均值)的實(shí)數(shù)個(gè)數(shù)。本題中的函數(shù)實(shí)現(xiàn)過(guò)程首先求解平均值,然后將所有值與平均值進(jìn)行比較,統(tǒng)計(jì)高于平均值的實(shí)數(shù)個(gè)數(shù)。
36.(1)錯(cuò)誤:*t=calloc(msizeof(STU));正確:t
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 時(shí)尚品牌店裝修合同樣本
- 2025年度特種設(shè)備安全管理停薪留職協(xié)議
- 夜間快遞運(yùn)輸線路外包合同
- 保險(xiǎn)公司裝修質(zhì)量保證協(xié)議
- 產(chǎn)業(yè)園裝修貸款合同范本
- 2025年度網(wǎng)絡(luò)安全應(yīng)急響應(yīng)工程師聘請(qǐng)合同-@-1
- 學(xué)校教室半包裝修合同樣本
- 工廠車間裝修包工協(xié)議
- 家電賣場(chǎng)展位裝修合同書
- 保險(xiǎn)公司裝修制式合同樣本
- 自卸車司機(jī)實(shí)操培訓(xùn)考核表
- 教師個(gè)人基本信息登記表
- 中考現(xiàn)代文閱讀理解題精選及答案共20篇
- ESD測(cè)試作業(yè)指導(dǎo)書-防靜電手環(huán)
- 高頻變壓器的制作流程
- 春季開(kāi)學(xué)安全第一課PPT、中小學(xué)開(kāi)學(xué)第一課教育培訓(xùn)主題班會(huì)PPT模板
- JJG30-2012通用卡尺檢定規(guī)程
- 部編版人教版二年級(jí)上冊(cè)語(yǔ)文教材分析
- 艾賓浩斯遺忘曲線復(fù)習(xí)方法表格模板100天
- APR版制作流程
- 《C++程序設(shè)計(jì)》完整教案
評(píng)論
0/150
提交評(píng)論