版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
國家二級(C語言)機(jī)試模擬試卷第1
套
一、程序填空題(本題共I題,每題1.0分,共J分0)
1、請補(bǔ)充main函數(shù),該函數(shù)的功能是:從鍵盤輸入一個字符串及一個指定字符,
然后把這個字符及其后面的所有字符全部刪除。結(jié)果仍然保存在原串中。例如,
輸入“abcdef,,指定字符為冶"則輸出“abed”。注意:部分源程序給出如下。請勿
改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的
若干表達(dá)式或語句。試題程序:#include<stdio.h>#defineN80main(){inti=0;
charstr|N|;charch;clrscr();printf{"\nInputastring:\nM);gets(str);printfC^nInputa
charator;\nu);scanf("%c”,&ch);while(str[i]!=,\0,){if(str[i]=ch)[][1;|
str|i]=[];printf{M\n***displaystring***\nM);puts(str);}
標(biāo)準(zhǔn)答案:break;i-H-
知識點(diǎn)解析:第一空:while循環(huán)的作用是找到字符串srt中與指定字符ch相同的
字符。當(dāng)找到的時候,就使用break語句跳出循環(huán)。第二空:通過i++依次訪問字
符小str中的各個字符。第三空:在字符串str中與指定字符ch相同的字符位置上
賦值,(T,這樣輸出字符中srt時,就不會輸出指定字符及其后面的所有字符了。
二、程序修改題(本題共1題,每題1.0分,共/分C)
2、下列給定程序中,函數(shù)fun()的功能是:用冒泡法對6個字符串按由小到大的順
序進(jìn)行排序。請改正程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動
main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu).試題程序:include<
conio.h>include<stdio.h>#defineMAXLINE20
/*************found**************/fun(char*pstr|6]){inti,j;char*p;for(i=0:i<
5“++){fbr(j=i+l,j<6j++)/*************Sund**************/
{if(strcmp(*(pstr+i),pstr-j)>0){p=*(pstl+i);/*************found**************/
*(pstr+i)-pstr+j;*(pstr+j)=p;})))main()(inti;char*pstr[6],str[6][MAXLINE];
clrscr();for(i=0;i<6;i++)pstr|i|=str|i];printf("\nEnter6slring(lstringateachline):\n
");for(i=0;i<6;i++)scanf(,,%s,1,pstr[i]);fun(pstr);printf("Thestringsaftersorting:\n");
for(i=0;i<6;i++)printf("%s\nu,pstr[i]);}
標(biāo)準(zhǔn)答案:(1)錯誤:fun(char*pstr[6])正確:voidfunfehar*pstr[6])(2)錯誤:
if(strcmp(*(pstr+i),pstr+jj>O正確:if(strcmp(*(pstr+i),*(pstr+j))>0(3)錯誤:
*(pstr+i)=pstr+j;正確:*(pstr+i)=*(pstr+j);
知識點(diǎn)解析:冒泡法對字符串排序的方法是將相鄰兩個字符比較,將小的調(diào)到前
面。令X等于字符串的第i位字符,若該字符的前一位字符大于X,則將該字符與
x互換位置。從字符山中的第2位字符到字符串的最后一們字符重復(fù)以上過稈,即
可完成排序??捎醚h(huán)語句實(shí)現(xiàn)。
三、程序設(shè)計(jì)題(本題共1題,每題7.0分,共1分。)
3、編寫一個函數(shù)fun(),它的功能是:實(shí)現(xiàn)兩個字符串的連接(不使用庫函數(shù)
strcat,即把p2所指的字符串連接到pl所指的字符串后.例如,分別輸入下面兩
個字符串:FirstStringSccondString則程序輸出:FirstStringSccondString注意:部
分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)
fun的花括號小填入所編寫的若干語句。試題程序:#inckide<stdio.h>#include
<conio.h>voidfun(charpi[],charp2[]){)main(){charsl[80],s2[40];clrscr();
printf("Entcrsiands2:\n");scanf(',%s%s'\si,s2);printf("sl=%s\n'\si);
printf("s2=%s\n",s2);printf("Invokefun(sl,s2):\n");fun(s1,s2);printf("After
invoking:\n");printf(n%s\n",si);}
標(biāo)準(zhǔn)答案:voidfun(charp1[],charp2[]){inti,j;for(i=0;pl[i]!='\0';iH);/*求出的i
為pl字符的總長度,包括結(jié)束標(biāo)記位*/forG=0;p2Lj]!='\0';j++)pl[i++]=p2[j];/*
將p2字符串連在pi字符串的后而*/pi[i]=\(r;/*在字符串最后加上結(jié)束:標(biāo)記符*/)
知識點(diǎn)解析:本題用兩個循環(huán),第1個循環(huán)的作用是將i走到第1個字符串的末
尾。第2個循環(huán)的作用是將第2個字符串的字符連到第I個字符串的末尾。
家二級(C語言)機(jī)試模擬試卷第2
套
一、程序填空題(本題共7題,每題7.0分,共7分°)
1、程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲了學(xué)生的學(xué)號、姓名和3門課的成績。所
有學(xué)生數(shù)據(jù)均以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指
的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號從小到大排序后,再用二進(jìn)制方式把排序后的
學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。請?jiān)诔绦虻南聞?/p>
線處填入正確的內(nèi)容并上下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存
放在考生文件夾下的BLANKLC中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
標(biāo)準(zhǔn)答案:(l)“rb”(2)>(3)fwrite
知識點(diǎn)解析:本題中函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)
據(jù),并按照學(xué)號從小到大排序后,再用二進(jìn)制方式把排序后的學(xué)生數(shù)據(jù)輸出到
filename所指的文件中,覆蓋原來的文件內(nèi)容。
二、程序修改題(本題共[題,每題L0分,共[分0)
2、給定程序M0DI1.C中函數(shù)fun的功能是:根據(jù)以下公式求兀值,并作為函數(shù)
值返回。例如,給指定精度的變量eps輸入0.0005時,應(yīng)當(dāng)輸出Pi=
1121231234
-=1+—+-X-+-X-X—?—X-X-X—+…
3.141480o23353573579請改正程序中的錯誤,使它
能得出正確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序
tinclude<math.h>
2?include<stdio.h>
3doublefun(doubleeps)
4{doubles,t;intn-1;
5s-0.0;
6/**?**??*****found*???*?*?***?/
7t-0;
8while(t>eps)
9{s*-t;
10t-t*n/(2*n+l);
11n++;
12)
13/…………found…………/
14return(s);
15).-
16main()
17{doublex;
18printf(w\nPleaseentera
precision:;scanf(w%lffix);
printf("Xneps^tlfr
w
Pi-%lf\n\nrx,fun(x));
的結(jié)構(gòu)。20
標(biāo)準(zhǔn)答案:⑴t=l;(2)return(2*s);
知識點(diǎn)解析:該題中函數(shù)功能是根據(jù)公式計(jì)算加值。從已給定源程序的main.主
函數(shù)開始入手,通過鍵盤輸入制定精度,然后通過“print廣\neps=%lf,Pi=%lf\
n\n”,x,fun(x));”語句來調(diào)用fun函數(shù)。
三、程序設(shè)計(jì)題(本題共7題,每題7.0分,共[分0)
3、m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun,它的功能是:將低于平均
分的人數(shù)作為函數(shù)值返回,將低于平均分的分?jǐn)?shù)放在below所指的數(shù)組中。例
如,當(dāng)score數(shù)組中的數(shù)據(jù)為:10、20、30、40、50、60、70、80、90時,函數(shù)返
回的人數(shù)應(yīng)該是4,below中的數(shù)據(jù)應(yīng)為:10、20、30、40。注意:部分源程序在
文件PROG1.C文件中。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函
數(shù)fun的花括號中填入你編寫的若干語句。
1?include<stdio.h>
2?include<string.h>
3intfun(intscored,intm,int
below[])
4
5
6
?
7Imain()
8(inti,n,below[9];voidNONO();
9intscore[9]■{10,20,30,40,
50,60,70,80,90};
10n■fun(score,9,below);
11printf(w\nBelowtheaveragescore
are:");
12for(i*0;i<n;ix)printf("%d
below(i));
13NONO();
14
15voidNONO()
16{/*本函數(shù)用于打開文件,輸入測試數(shù)據(jù),調(diào)
用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件.*/
17inti,jrn,below[10]r
score[10];
18FILE*wf;
19rf?fopen("in.dat","rw);
20wf■fopen("out.dat","w");
21ford-0;i<10;i++){
22for(j-0;j<10;j++)fscanf
(rf,"%d"r&score(j]);
23n-fun(score,10,below);
24for(j-0;j<n;j++)fprintf
(wf,"%d”,below[j]);
25fprintf(wf,"\n");
26)
27fclose(rf);
28fclose(wf);
29)
floatav-0.0;
2intirj-0;
3for(i-0;i<m;i++)av+?*score[i];
4av/?m;
5for(i?0;i<m;i++)
if(av>score(i))below(j4-4]-score[i];
標(biāo)準(zhǔn)答案:7!return力
知識點(diǎn)解析:(i)該程序功能是返回低于平均分的人數(shù)。它的解題思路可以分解為
以下幾步:求總分一求平均分一逐個元素與平均分比較一統(tǒng)計(jì)低于平均分的人數(shù)。
(2)從已給部分源程序的main主函數(shù)開始入手、核心函數(shù)fun(scorc,9,below)中的
參數(shù)由題目可知,score存放著m個人的成績,below存放低于平均分的分?jǐn)?shù)。另
外,根據(jù)score的定義,可知9為score數(shù)組中元素的個數(shù),傳給函數(shù)fun中的參數(shù)
國家二級(C語言)機(jī)試模擬試卷第3
套
一、程序填空題(本題共I題,每題上0分,共1分,)
1、給定程序中,函數(shù)firn的功能是:判斷形參s所指字符串是否是“回文
"(Palindrome),若是,函數(shù)返回值為1;不是,函數(shù)返回值為0。“回文“是正讀和
反讀都一樣的字符串(不區(qū)分大小寫字母)。例如,LEVEL和Level是“回文”,而
LEVLEV不是,晌文”。請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使
程序得出正確的結(jié)果。注意:源程序存放在考生文件夾下的BLANKI.C中。不
得增行或刪行,也不得更改程序的結(jié)構(gòu)!#include#include#includeintfun(char*s)
while((touppcr(*lp)==touppcr(*rp))&&(ip
標(biāo)準(zhǔn)答案:(l)s(2)-----(3)return0
知識點(diǎn)解析:第一空:“rp=s+stHems)-l;”可知rp指向最后一個元素,因此Ip是指
向第一個元素,因此第一空應(yīng)為“s”。第二空:“l(fā)p++;rp【2】;"lp往后移動crp
應(yīng)該往前移動,故第二空處應(yīng)為“一一”。第三空:“if(lp
二、程序修改題(本題共7題,每題7.0分,共I分。)
2、給定程序MOD1LC中函數(shù)fun的功能是:從低位開始取出長整型變量s中奇
數(shù)位上的數(shù),依次構(gòu)成一個新數(shù)放在t中。高位仍在高位,低位仍在低位。例如,
當(dāng)s中的數(shù)為:7654321時,t中的數(shù)為:75310請改正程序中的錯誤,使它能得
出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的
結(jié)構(gòu)!#include/**********found***********/voidfun(longs,longt){long
sl=10;*t=s%JO;while(s>0){s=s/100;*t=s%10*sl+*t;/
**********found************/sl=sl*100:)}main(){longs,t;printf("\
nPleaseenters:");scanf("%id",&s);fun(s,&t);printf("Theresultis:%id\
t);}
標(biāo)準(zhǔn)答案:(l)voidfun(10ngs,long*1)(2)sl=sl*10;
知識點(diǎn)解析:⑴根據(jù)"t=s%10”判斷,t應(yīng)該是個指針變量,所以“voidfun(longs,
long。"語句中的l只需改為“voidfun(longs,long*。"。(2)分析函數(shù)內(nèi)的循環(huán)過程可
知si的用途是每次將*t擴(kuò)大,記錄每次得到的奇數(shù)位的數(shù)字的權(quán)值,si的權(quán)值每
次增加1位,因此第二個標(biāo)識下應(yīng)該是“sl=sl*10;
三、程序設(shè)計(jì)題(本題共I題,每題7.0分,共[分0)
3、函數(shù)fun的功能是:將a、b中的兩個兩位正整數(shù)合并形成一個新的整數(shù)放在c
中。合并的方式是:將a中的十位和個位數(shù)依次放在變量c的百位和個位上,b中
的十位和個位數(shù)依次放在變量「的千位和十位上「例如,當(dāng)a=45,h=12°調(diào)用該
函數(shù)后,c=1425。注意:部分源程序存在文件PROG1.C中。數(shù)據(jù)文件in.dat中
的數(shù)據(jù)不得修改。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun
的花括號中填入你編寫的若干語句。#includevoidfun(inta,intb,long*c){)
main()/*主函數(shù)*/{inta,b;longe;voidNONO();printf("Inputa,b:");
scanf("%d%d”,&a,&b);fun(a,b,&c);prinif("Theresultis:%ld\n",c);
NONO0;)voidNONO(){/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出
數(shù)據(jù),關(guān)閉文件。*/FILE*rf,*wf;inti,a,b;longc;rf=fopen(nin.daL",
"rH);wf=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d,%d”,
&a,&b);fun(a,b,&c);fprintf(wf,"a=%d,b=%d,c=%ld\n",a,b,
c);}fclose(rO;fclose(wf);}
標(biāo)準(zhǔn)答案:*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);
知識點(diǎn)解析:(1)分解兩位數(shù)的正整數(shù)n的個位和十位數(shù),可用n%10和n/10實(shí)
現(xiàn)。(2)設(shè)x0、xl>x2>x3為一位數(shù),則x0、xlxlO>x2xl00>x3xl000,可以分
別使xO、xRx2、x3構(gòu)成個、十、百、千帶權(quán)數(shù),而xO+xlxlO+x2xlOO+x3xlOOO
構(gòu)成四位數(shù)。本題最多只考慮四位數(shù)。
家二級(C語言)機(jī)試模擬試卷第4
套
一、程序填空題(本題共1題,每題1.0分,共7分0)
1、請補(bǔ)充main函數(shù),該函數(shù)的功能是:打印出滿足個位的數(shù)字、十位上的數(shù)字和
百位上的數(shù)字都相等的所有二位數(shù)。本題的結(jié)果為:111222333444555666777
888999o注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任
何內(nèi)容,僅在main函數(shù)的橫線上填入所編寫的若干表達(dá)式或語句。試題程序:
#include<stdio.h>main(){intg,s,b;clrscr{);fbr(g=i;g<10;g++)for(s=l;s<10;
s++)for(b=l;b<10;b++){if([])prinlfC'%5d'\[]);}}
標(biāo)準(zhǔn)答案:gr=s&&s「b或者g==b&&s=二b或者g-=s&&g--bg+s*10+b*100
知識點(diǎn)解析:第一空:變量g表示三位數(shù)的個位數(shù)字,變量s表示三位數(shù)的十位數(shù)
字,變量b表示三位數(shù)的百位數(shù)字。注意,表示三個數(shù)字都相等時,不能寫成
“g==s=b",而要寫成“g==s&&s==b”或者"g==b&&s==b"或者"g==s&&g==b"。第
二空:一個三位數(shù)等于百位數(shù)字乘以100加上十位數(shù)字乘以10,再加上個位數(shù)
字。
二、程序修改題(本題共7題,每題7.0分,共[分c)
2、下列給定程序中函數(shù)fun()的功能是;先將在字符串s中的字符按逆序存放到t
串中,然后把s中的字符按正序連接到t串的后面。例如:當(dāng)s中的字符串為
貝人中的字符串應(yīng)為EDCBAABCDE。請改正程序中的錯誤,使它能
得出正確的結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序
的結(jié)構(gòu)。試題程序:#include<conio.h>#include<stdio.h>#include<string.h>
voidfun(char*s,char*t){inti,sl;sl=strlen(s);for(i=0;i<sl;i++)t[i]=s[sl-l];for(i=0;
i<sl;j++)/*************found**************t[sl+i]=s[i];t[2*sl]->\0>;}main()
{chars[100],t[100];clrscr();printf("\nPleaseenterstrings:");scanf("%s",s);fun(s,t);
printf("Theresultis:%s\n'\t);}
標(biāo)準(zhǔn)答案:錯誤:t[i]=s[sl-l];正確:t[i]=s[sl-l-i];
知識點(diǎn)解析:該題也是幾個循環(huán)語句的嵌套使用,難度并不大,重要的足要讀懂程
序,題目中賦值語句并不能完成累計(jì)循環(huán),所以正確的應(yīng)該是
t[i]=s[sl-l-i];o
三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共I分0)
3、學(xué)生的記錄由學(xué)號和成績組成,N名學(xué)生的數(shù)據(jù)已在主函數(shù)中放入結(jié)構(gòu)體數(shù)組
s中,請編寫函數(shù)fun(),它的功能是:按分?jǐn)?shù)的高低排列學(xué)生的記錄,高分在前。
注意:部分源程序給出如下.請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅
在函數(shù)fum的花括號中填入所編寫的若啡:語句。試題程序:#include<stdio.h>
#dcfincN16typcdefstruct{charnum[10];ints;JSTREC;intfun(STRECa[]){}
main(){STRECsIN]=[{"GA005,\85),{"GA003n,76),{nGA002",69),{"GA004",
85),{“GA001”,91},{"GAOO7A72),{nGA008",64),{"GA006",87},{"GA015\85},
{"GA013",91},{"GAOI2';64},{PAO14”,91),{"GAOll",66},{”GAO17",64},
{"GAO18",64},{"GAO16",72)};inti;FILE*out;fun(s);printf("Thedataafter
sorted:In");for(i=0;i<N;i++){if((i)%4=-0)/*每行輸出4個學(xué)生記錄*/printf
("\nM);printf("%s%4d",s[i].num,s[i].s);)printf("\nH):out=fopen("out16.dat","w");
for(i=0;i<N;i++);(if((i)%4==0&&i)fprintf(out,"\n");fprintf(out,"%4d'\s[i].s);}
fprintf(out,"\n");fclose(out);}
標(biāo)準(zhǔn)答案:imfun(STRECa[]){imi,j;STRECt;for(i=l;iVN;i++)/*用冒泡法進(jìn)行
排序,進(jìn)行N-l次比較x/for(j=0;j<N-l;j++)/*在每一次比較中要進(jìn)行N-1次兩
兩比較*/if(a|j].s<a[j+l].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分?jǐn)?shù)的高低排列學(xué)
生的記錄,高分在前*/}
知識點(diǎn)解析:冒泡法算法思路:如果有N個數(shù),則要進(jìn)行N-1次比較,在每一次
比較中要進(jìn)行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就
是從頭到尾依次將相鄰兩個數(shù)進(jìn)行比較并將其中大的數(shù)放在前或在后(若要求從小
到大排序,則大的數(shù)要放在后。反之則對調(diào)),即兩兩比較后這兩個數(shù)要形成題中
所要求的順序。由于總是從頭到尾進(jìn)行比較,所以第1次比較結(jié)束后,最大(或最
小)數(shù)肯定在最后,第2次比較結(jié)束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個
數(shù),依次類推,所以進(jìn)行第一次比較時必須比較到最后一個數(shù),而進(jìn)行第2次比較
時只要比較到倒數(shù)的第2個數(shù)即可,所以進(jìn)行第i次比較時只需比較N-i次即可(這
種算法較難理解,但它是最好的)。選擇法算法思路:如果有N個數(shù)則從頭到倒數(shù)
的第2個數(shù)一個一個往后走動,每走動1個數(shù)總是將這個數(shù)與其后的所有數(shù)進(jìn)行比
較并找出它們的最大(或最小)數(shù),找出最大(或最小)數(shù)后再將所得的最大(或最小)數(shù)
與該數(shù)進(jìn)行交換,交換后再走到下一個數(shù)依次交換到結(jié)束。此外,選擇法還可用如
下思路:如果有N個數(shù),則從頭到倒數(shù)的第2個數(shù)一個一個往后走動,每走動一
個數(shù)總是將這個數(shù)與其后的所有數(shù)進(jìn)行兩兩比較,在比較時按順序?qū)⑦M(jìn)行比較的這
兩個數(shù)排序(即交換)。插入法算法思路:先對頭兩個數(shù)進(jìn)行排序。然后把第3個數(shù)
插入到前兩個數(shù)中,插入后前3個數(shù)依然有序;再把第4個數(shù)插入到前3個數(shù)中,
插入后前4個數(shù)依然有序;依次插完所有的數(shù)。具體執(zhí)行方式(假設(shè)從小到大排
序):從第2個數(shù)開始往后一個一個走動直到最后。每走到1個數(shù)總是將該數(shù)(先將
其存到1個臨時變量中)與其前面的數(shù)進(jìn)行比較(比較的順序總是從后往前進(jìn)行),在
比較時只要發(fā)現(xiàn)該數(shù)比被比較的數(shù)小,就將被比較的數(shù)往后移1位,然后該數(shù)還要
冉與前1個數(shù)進(jìn)行比較,亢到發(fā)現(xiàn)該數(shù)比被比較的數(shù)大或己比較到頭(即第1個數(shù)
的前面),并將該數(shù)存入當(dāng)前被比較數(shù)的后1位(存儲空間)。如果有整型一維數(shù)組a
其有N個元素,要求將其按從小到大排序。注意元素下標(biāo)是從0始的。冒泡法:
for(i=l;i<N;i++)for(j=O;N-1;j++)if(a[j]>a[j+l]){t=a[j];a
|j]=a|j+l];a[j+l]=a|j];}選擇法for(i=0i<N-l;i++){p=i;for(ji+1;j<N;j++)if(a[p]
>a[j])p=j;if{p!=i)t=a[i];a[i]=a[p];a[p]=t;}插入法for{i=l;i<N;i++){t=a[i];for
{j=i-l;a&j>=O;j-)a[j+l]=a[j];a|j+l]=t;)
國家二級(C語言)機(jī)試模擬試卷第5
套
一、程序填空題(本題共1題,每題1.0分,共7分0)
1、在主函數(shù)中,從鍵盤輸入若干個數(shù)放入數(shù)組x中,用0結(jié)束輸入但不計(jì)入數(shù)
組。下列給定程序中,函數(shù)fun()的功能是:輸出數(shù)組元素中小于平均值的元素。
請補(bǔ)充函數(shù)fun()。例如:數(shù)組中元素的值依次為1,2,2,12,5,15,則程序的
運(yùn)行結(jié)果為1,2,2,5。注意:部分源程序給出如下。請勿改動主函數(shù)main和
其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的橫線上填入所編寫的若干表達(dá)式或語
句。試題程序:#include<conio.h>#include<stdio.h>voidfun([],
intn){doublesum-0.0;doubleaverage-0.0;inti_0;for(i-0;i<n;i++)
[];average=【];for(i=0;i<n;i++)if(x[i]<average){if(i%5==0)
printf("\nn);printf("%d/",x[i]);)}main(){intx[1000];inti=0;clrscr();
printf("\nPleaseentersomedata(endwith0):");do(scanf("%d",&x[i]):)
while(x[i++]!=0);fun(x,i-I);)
標(biāo)準(zhǔn)答案:intx[]sum+=x[i]sum/n
知識點(diǎn)解析:第一空:由主函數(shù)main。調(diào)用fun()函數(shù)的格式,可知,函1數(shù)fun。的
第一個參數(shù)為整型數(shù)組。第二空:為了求出平均值,首先要對數(shù)組中的元素求累加
和。第三空:數(shù)組中元素的累加和除以元素個數(shù),得到所有元素的平均值。
二、程序修改題(本題共7題,每題7.0分,共I分。)
2、下列給定程序中,函數(shù)fun()的功能是:輸出M行N列整數(shù)方陣,然后求兩條
對角線上的各元素的平方和,返回此和數(shù)。請改正程序中的錯誤,使它能得到正
確結(jié)果。注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
試題程序:#include<conio.h>#include<stdio.h>#defineM5intfun(intn,
intXX[][M]){inti,j,sum=O;printf("\nThe%dx%dmatrix:\n",M,M);
for(i=0;i<N;i++){fbr(j=O;jVM;j++)/*************found*************/
prinif("%4d",XX[ij]);/*************R)und*************/print(\n');}
for(i=0;i<n;i++)sum+=xx[i][i]*XX[i][i]+XX[i][n-i-l]*XX[i][n-i-l];
retum(sum);)main(){intaa[M][M)={{3,12,4,24,35},{11,3,3,7,
56),{61,27,58,49,24},{17,28,7,36,85),{15,33,5,24,9));
clrscr();printf("\nTheresultofallelementson2diagnalsiS%d",fun(M,aa));)
,,,
標(biāo)準(zhǔn)答案:(1)錯誤:printf("%4d,xx[ij]);正確:printf("%4d',xx[i||jl):⑵錯誤:
printf(,\n,);正確:printr("\n");
知識點(diǎn)解析:錯誤1:此處考查的是對二維數(shù)組的引用方法。錯誤2:此處考查的
是輸出語句的語法,括號中應(yīng)該用雙引號,而不是單引號。
三、程序設(shè)計(jì)題(本題共7題,每題7.0分,共7分0)
3、請編寫函數(shù)fun(),其功能是:將s所指字符串口除了下標(biāo)為奇數(shù)、同時ASCH
值為偶數(shù)的字符外,其余的全部刪除,串中剩余字符所形成的一個新串放在t所指
的數(shù)組中。例如,若s所指字符串中的內(nèi)容為edB2A4Dsdg,其中字符A的ASCII
碼值為奇數(shù),因此應(yīng)當(dāng)刪除;其中字符B的ASCII碼值為偶數(shù),但在數(shù)組中的下
標(biāo)為偶數(shù),因此也應(yīng)當(dāng)刪除:而字符2的ASCII碼值為偶數(shù),所在數(shù)組中的下標(biāo)
為奇數(shù),因此不應(yīng)當(dāng)刪除,其他依此類推。最后I所指的數(shù)組中的內(nèi)容應(yīng)是(124。
注意:部分源程序給出如下。請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅
在函數(shù)fun的花括號中填入所編寫的若干語句。試題程序:#include<conio.h>
#include<stdio.h>#include<slring,h>voidfun(char*s,chart||){}main(){char
s[100],t[100];clrscr();printf("\nPleaseenterstringS:");scanf("%sM,s);fun(s,t);
printf("\nTheresultis:%s\n',,t);}
標(biāo)準(zhǔn)答案:voidtun(char*s,chart[J){inti,j=0;tbr(i=O;sliJ!=,\0,;i++)
if(i%2!=0&&s|i]%2==0)/*將s所指字符串下標(biāo)為奇數(shù)同時ASCII值為偶數(shù)的字符
放入數(shù)組t+*/t|j++]=s[i];/*在字符串最后加上結(jié)束標(biāo)志位*/}
知識點(diǎn)解析:本題要求除了下標(biāo)為奇數(shù)同時ASCH值為偶數(shù)的字符之外,其他字
符都刪除。即題目要求留下下標(biāo)為奇數(shù)同時ASCII值為偶數(shù)的字符。C語言中并沒
有直接刪除字符的算法,請大家在做題的時候注意。
國家二級(C語言)機(jī)試模擬試卷第6
套
一、程序填空題(本題共1題,每題1.0分,共7分。)
1、請補(bǔ)充函數(shù)proc。,其功能是:計(jì)算并輸出給定10個數(shù)的方差。例如,給定的
10個數(shù)為12.0,9.0,26.0,5.0,6.0,31.0,9.0,3.0,8.0,
18.0,輸出為s=8.877500c注意:部分源程序給出如下。請勿改動main。函數(shù)
和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的橫線上填人所編寫的若干表達(dá)式或語
句。試題程序:#includc#includedoubleproc(doublex[10]){inti;double
avg=0.0;doublesum=0.0;doubleabs=0.0;doublesd;for(i=0;i<10;i++)
[1];avg=sum/10;for(i=0;i<10:i++)[2];sd=[3];returnsd;)void
main(){doubles,str[10]={12.0,9.0,26.0,5.0,6.0,31.0,9.0,
3.0,8.0,18.0);inti;prinlff^nTheoriginaldatais:\rT);for(i=0;i<10;
i++)printf("%6.If',str[i]);printff'\n\n''):s=proc(str):printff's=%fkn\n'',
s);)
標(biāo)準(zhǔn)答案:[1]sum+=x[i][2]abs+=(x[i];一avg)*(x[i]一avg)[3]sqrt(abs/
10)
知識點(diǎn)解析:由函數(shù)proc()可知,變量sum中存放n個數(shù)的和,因此,【1】處填
“sum+=x[i「;然后求其平方差,因此,[2]處填“abs+=(x[i]-avg)*(x[i]-avg)”;
最后求10個數(shù)的方差,因此,【3】處填"sqrl(abs/10)”。
二、程序修改題(本題共1題,每題1.0分,共7分0)
2、下列給定程序中,函數(shù)proc。的功能是:從字符串str中,刪除所有大寫字
母'F,。請修改程序中的錯誤,使它能得到正確結(jié)果。注意:不要改動main()函
數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:#includevoid
proc(char*str){inti,j;//****found****for(i=j=0;str[i]!=,O,;i++)if(st巾]!='F')
//****found****str[j]=str[i];str[j]=,O,;)voidmain(){charstr[8O];printf("\nEnter
astring:");gels(str);printff^Theoriginalstring:");puts(str);proc(str);
print^^Thestringafterdeleted:");puts(str);printf(',\n\n,');)
標(biāo)準(zhǔn)答案:(1)錯誤:for(i=j=0;str[i]!='O';i++)正確:for(i=j=0;str[i]!:*\0\i++)
(2)錯誤:str[j]=strfi];正確:str[j++]=str[i];
知識點(diǎn)解析:根據(jù)題目中的要求,從字符串str中刪除所有大寫字母TL需要險(xiǎn)查
字符串str中的每一個字符,直到字符串結(jié)束,因此,“for(i=j=0;str[i]!=U;if
應(yīng)改為“for(i=j=0;str[i]=\O,;i+十)”;將每一個不是F的字符放入原來的字符串
中,形成新的字符串,因此,“str[j]=str[i];”應(yīng)改為“str[j++]=str[i];
三、程序設(shè)計(jì)題(本題共1題,每題1.0分,共1分。)
3、假定輸入的字符串中只包含字母和*號。請編寫函數(shù)proc(),它的功能是:將字
符串中的前導(dǎo)*號全部刪除,中間和后面的*號不刪除。例如I,若字符串中的內(nèi)容
為****a*bc*def*g****,刪除后,字符串中的內(nèi)容則應(yīng)當(dāng)是a*bc*def*g****。注
意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在
函數(shù)proc()的花括號中填人所編寫的若干語句。試題程序:#include#includevoid
proc(char*str){}voidmain(){charstr[81];printfC'Enterastring:\n");gets(str);
proc(str);printf("Thestringafterdeleted:\n");puts(str);|
標(biāo)準(zhǔn)答案:voidproc(char*str){char*p=str;while(*p==,*,)p++;//通過P的
移動來達(dá)到使P指向第一個不是*號的字符fbr(;*p!='\0\p++,str++)//把從第
一個不是*號的字符放到a中*str=*P:*str=,\O,;//最后用八(T作為字符串結(jié)束
標(biāo)志}
知識點(diǎn)解析:題目中要求將字符串中的前導(dǎo)*號全部刪除,首先將指針P移動到第
一個不是*的字符,將指針p之后的字符放入原來的字符串中,并為新的字符串添
加結(jié)束符。
家二級(C語言)機(jī)試模擬試卷第7
套
一、程序填空題(本題共7題,每題7.0分,共7分0)
1、從鍵盤輸入一組無符號整數(shù)并保存在數(shù)組arr[N]中,以整數(shù)0結(jié)束輸入,即第
N+1個數(shù)是0,要求這些數(shù)的最大位數(shù)不超過4位,其元素的個數(shù)通過變量num傳
人函數(shù)proc()o請補(bǔ)充函數(shù)proc(),其功能是:從數(shù)組arr中找出個位和十位的數(shù)字
之和大于5的所有無符號整數(shù),結(jié)果保存在數(shù)組yy中,其個數(shù)由函數(shù)proe返回。
例如,當(dāng)arr[8]={13,1,205,252,2,333,4444,21)時實(shí)際輸入時,數(shù)與數(shù)之
間用Enter鍵分開,bb[4]={252,333,4444)。注意:部分源程序給出如下。請勿
改動函數(shù)main。和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的橫線上填入所編寫的
若干表達(dá)式或語句。試題程序:#inckide#defineM1000intproc(intarr[],int
bb[],intnum){inti,m=0;intg,s;for(i=0;i5)[2];)return[3];}
voidmain(){intarr[M];intyy[M];intnum=0,m=0,i=0;printf("Inputnumber:
\nu);do{scanf(n%u",&arr[num]);}while(arr[num++]!=0):m=proc(arr,yy,
num);printf(H\nyy=");fdr(i=O;i
標(biāo)準(zhǔn)答案:[1]arr[i]%10[2]bb[m++]=arr[i][3]m
知識點(diǎn)解析:將一個整數(shù)對10取余,則得到該整數(shù)的個位數(shù),將一個整數(shù)除以10
再對10取余,則得到該整數(shù)的十位數(shù)。由程序可以看出,變量s保存了整數(shù)的十
位數(shù),所以應(yīng)該將整數(shù)的個位數(shù)保存在變量g中;根據(jù)題意,當(dāng)整數(shù)的個位與十位
的數(shù)字之和大于5時,則將該整數(shù)保存到數(shù)組bb中;變量m記錄了滿足條件的無
符號整數(shù)的個數(shù),題目要求將滿足條件的無符號整數(shù)的個數(shù)由proc()函數(shù)返回,所
以函數(shù)返回m。
二、程序修改題(本題共7題,每題7.0分,共I分0)
2、下列給定程序中,函數(shù)proc()的功能是:用遞歸算法計(jì)算斐波拉契級數(shù)列中第n
項(xiàng)的值。從第一項(xiàng)起,斐波拉契級數(shù)序列為1,1,2,3,5,8,13,21,…例
如,若給n輸入8,該項(xiàng)的斐波拉契級數(shù)值為21。請修改程序中的錯誤,使它能
得出正確的結(jié)果。注意:不要改動main。函數(shù),不得增行或刪行,也不得更改程
序的結(jié)構(gòu)。試題程序:#inciudelongproc(intg){//****found****switch(g);
{case0:return0;//****fbund****case1;case2:return1;)return(proc(g-
l)+proc(g—2));}voidmain(){longfib:intn;printf("Inputn:H);scanf("%du,
&n);printf("n=%d\n",n);fib=proc(n);printf('fib=%d\n\n",fib);}
標(biāo)準(zhǔn)答案:(I)錯誤:switch(g);正確:switch(g)(2)錯誤:case1;case2;return
1;正確:case1;return1;case2:return1;
知識點(diǎn)解析:由C語言的語法規(guī)則可知,switch語句后面是沒有分號的,因此,
“switch(g);”要把后面的分號去掉;在C語言中,case語句后面是冒號而不是分
號,因此,“easel;case2:return1;"應(yīng)改為"easel:return1;case2:return
1;”O(jiān)
三、程序設(shè)計(jì)題(本題共I題,每題1.0分,共1分C)
3、請編寫函數(shù)fun,其功能是:計(jì)算并輸出3到n之間(含3和n)所有素?cái)?shù)的平方
根之和。例如,在主函數(shù)中從鍵盤給n輸入100后,輸出為:sum=148.874270。
注意:要求13的值大于2但不大于100。部分源程序在文件PROGI.C中。請勿
改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫
的若干語句。#inckide#inckidedoublefun(intn){}NONO(){/*請?jiān)诖撕瘮?shù)內(nèi)打開
文件,輸入測試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件*/FILE*rf,*wf;
intn,i;doubles;rf=fopen("in.dat","r");wf=fopen(,,out.dat","w");
for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\n",
s);)fclose(rf);fclose(wf);)main(){intn;doublesum;printf("\n\nlnput
n:n);scanf("%d”,&n);sum=fun(n);printf("\n\nsum=%f\n\n",sum);
NONO();)
標(biāo)準(zhǔn)答案:inti,j=0;doubles=0;for(i=3;i<=n;i++){for(j=2;j
知識點(diǎn)解析:(1)素?cái)?shù)是指能被1和本身整除的正整數(shù)(>1),所以判別i是否為素
數(shù),只要用2、3...........i-1這些數(shù)逐個去除i,觀察余數(shù)是否為0即可,只要有一
次相除余數(shù)為0,i就不是素?cái)?shù),否則i為素?cái)?shù)。(2)在循環(huán)中找到每一個素?cái)?shù),然
后對其求平方根,然后進(jìn)行累加求和。
因家二級(C語言)機(jī)試模擬試卷第8
套
一、程序填空題(本題共7題,每題7.0分,共[分0)
1、給定程序中,函數(shù)fun的功能是根據(jù)形參i的值返回某個函數(shù)的值。當(dāng)調(diào)用正
確時,程序輸出:x1=5.000000.x2=3.000000,x1*xl+x1*x2=40.000000請?jiān)?/p>
程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注
意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更
改程序的結(jié)構(gòu)!#includedoublefl(doublex){returnx*x;)doublef2(doublex,
doubley){Eeturnx*y;[1]fun(inti,
doublex,doubley){if/**************found**************/Eelurn[2]
(X).else/***********x**found**************/rcLurn[3](x,y);)main()
{doublexl=5,x2=3>r;r=fun(I,xl,x2);r+=fun(2,xl,x2);printf(H\
nxl=%f,x2=%f,x1*x1+x1*x2=%f\n\n",xl,x2,r);)
標(biāo)準(zhǔn)答案:(l)double(2)fl(3)f2
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025中國機(jī)械工業(yè)集團(tuán)有限公司國機(jī)集團(tuán)總部社會招聘19人筆試參考題庫附帶答案詳解(3卷)
- 2025“才聚齊魯成就未來”山東發(fā)展投資控股集團(tuán)有限公司權(quán)屬企業(yè)招聘88人筆試參考題庫附帶答案詳解(3卷)
- 阿勒泰地區(qū)2024新疆阿勒泰青河鎮(zhèn)10處衛(wèi)生公廁公開招聘管理人員筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)
- 邵陽市2024年湖南北塔區(qū)事業(yè)單位招聘(9人)筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)
- 溫州市2024浙江溫州瑞安市事業(yè)單位引進(jìn)人才76人筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)
- 洪洞縣2024山西臨汾市洪洞縣招聘事業(yè)單位工作人員筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)
- 武義縣2024年浙江金華武義縣政務(wù)服務(wù)管理辦公室招聘3人筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)
- 廣西壯族自治區(qū)2024廣西賀州市鐘山生態(tài)環(huán)境局面向社會公開招聘工作人員1人筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)
- 嵩縣2024年河南嵩縣引進(jìn)研究生學(xué)歷人才78人筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)
- 大渡口區(qū)2024二季度重慶大渡口事業(yè)單位招聘8人筆試歷年參考題庫典型考點(diǎn)附帶答案詳解(3卷合一)
- 2025年國家開放大學(xué)《水利水電建筑工程》期末考試復(fù)習(xí)題庫及答案解析
- 羅翔人物介紹
- 云南省2025年高二上學(xué)期普通高中學(xué)業(yè)水平合格性考試《信息技術(shù)》試卷(解析版)
- 法律常識100題附答案解析
- 2025年上海市高考英語試卷及參考答案(完整版)
- 《中國高血壓防治指南(2025年修訂版)》全文
- 園林綠化移樹審批申請范本
- 管樁(方樁)靜壓施工風(fēng)險(xiǎn)辨識和分析及應(yīng)對措施
- 商業(yè)倫理與社會責(zé)任
- GB/T 46142-2025智慧城市基礎(chǔ)設(shè)施智慧交通快速響應(yīng)矩陣碼應(yīng)用指南
- 變壓器故障處理培訓(xùn)課件
評論
0/150
提交評論