2015年9月二級(jí)C上機(jī)題庫(kù)補(bǔ)充題庫(kù)二_第1頁(yè)
2015年9月二級(jí)C上機(jī)題庫(kù)補(bǔ)充題庫(kù)二_第2頁(yè)
2015年9月二級(jí)C上機(jī)題庫(kù)補(bǔ)充題庫(kù)二_第3頁(yè)
2015年9月二級(jí)C上機(jī)題庫(kù)補(bǔ)充題庫(kù)二_第4頁(yè)
2015年9月二級(jí)C上機(jī)題庫(kù)補(bǔ)充題庫(kù)二_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

補(bǔ)充題庫(kù)一

填空

給定程序中,函數(shù)fiin的功能是:在任意給定的衿正整數(shù)中找出按升序排列時(shí)處于中間的數(shù),將原數(shù)據(jù)

序列中比該中間數(shù)小的數(shù)用該中間數(shù)替換,位置不變,在主函數(shù)中輸出處理后的數(shù)據(jù)序列,并將中間數(shù)作為

函數(shù)值返回.

例如,有序正整數(shù):1572387582145

按升序排列時(shí)的中間數(shù)為:8

處理后主函數(shù)中輸出的數(shù)列為:8882387882145

請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果.

#include<stdio.h>

//defineN9

intfun(intx[])

{inti,j,k,t,mid,b[N];

for(i=0;i<N;i++)b[i]=x[i];

for(i=0;i<=N/2;i++)

{k=i;

for(j=i+l;j<N;j++)if(b[k]>b[j])k=j;

if(k!=i)

/**********foun(j**********I

t=b[i];b[i]=_1_;b[k]=t;

)

)

/**********found**********/

mid=b[_2_];

for(i=0;i<N;i++)

/**********found**********/

if(x[i]___3___mid)x[i]=mid;

returnmid;

main()

{int\,x[N]={l,5/7/23,87,5,8,21,45);

for(i=0;i<N;i++)printf("%d

printf("\nThemiddatais:%d\n"/fun(x));

for(i=0;i<N;i++)printf("%d

printf("\n");

)

【參考答案】

(1)b[k](2)4或N/2(3)<

改錯(cuò)題

給定程序M0DI1.C中,fU嘔J數(shù)的功能是:刪除b所指數(shù)組中小于10的數(shù)據(jù).主函數(shù)中輸出刪除后數(shù)組中

余下的數(shù)據(jù).

請(qǐng)改正函數(shù)firn中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果.

#include<stdio.h>

include<stdlib.h>

#defineN20

intfun(int*b)

/**********fQun(j**********/

intt[N],\,num

for(i=0;i<N;i++)

if(b[i]>=10)

y**********founc|**********/

t[++num]=b[i];

y**********^Q|jp^|**********/

for(i=0;i<nun;i++)

b[i]=t[i];

return(num);

)

main()

{inta[N]zi,num;

printf("a數(shù)組中的數(shù)據(jù):\n");

for(i=0;i<N;i++){a[i]=rand()%21;printf("%4d",a[i]);}

printf("\n");

num=fun(a);

for(i=0;i<num;i++)printf("%4d,a[i]);

printf("\n");

【參考答案】

(1)intt[N],i,num=0;

(2)t[num4-+]=b[i];^c{t[num]=b[i];num++;}

(3)for(i=0;i<num;i++)

程序編寫題

請(qǐng)編寫函數(shù)ftm,其功能是:統(tǒng)計(jì)s所指字符串中的數(shù)字字符個(gè)數(shù),并作為函數(shù)值返回。

例如,所指字符串中的內(nèi)容是:

s2def35adh253kjsdf7kj8655x3

函數(shù)fim返回值為:11

#include<stdio.h>

voidNONO();

intfun(char*s)

main()

{char*s="2def35adh253kjsdf力kj8655x”;

printf("%s\n”,s);

printf("%d\n”,fun(s));

NONO();

voidNONO()

{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*fp,*wf;

inti;

chars[256];

fp=fopen(,,in.dat";'r");

wf=fopen("out.dat";,w");

for(i=0;i<10;i++){

fgets(s,255,fp);

fprintf(wf,"%d\n”,fun(s));

)

fclose(fp);

fclose(wf);

}

【參考答案】

intfun(char*s)

{intn=0;

char*p;

for(p=s;*p!=l\0';p++)

if((*p>=,0,)&&(*p<=,9,))

n++;

returnn;

補(bǔ)充題二

填空題

函數(shù)fim的功能是:輸出麻指數(shù)組中的前n個(gè)數(shù)據(jù),要求每行輸出5個(gè)數(shù).

請(qǐng)?jiān)诔绦虻南庐嬀€處埴入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果.

注意:源程序存放在考生文件夾下的8LANK1R中.

include<stdio.h>

#include<stdlib.h>

voidfun(int*a,intn)

{inti;

for(i=0;i<n;i++)

/**********found**********/

if(一1一==。)

/**********found**********!

printf("-2―");

/**********found*********7

printf("%d",—3—);

)

}

main()

{inta[100]={0},i,n;

n=22;

for(i=0;i<n;i++)a[i]=rand()%21;

fun(a,n);

pnntf(H\n");

)

【參考答案】

(1)i%5(2)\n(3)a[i]

改錯(cuò)題

給定程序MODILC中,fbn函數(shù)的功能是:在任意給定的N個(gè)正整數(shù):中,從左到右依次逐個(gè)取三個(gè)數(shù)

作為一組,按值大小找出該組數(shù)的中值,用該中值替換與該組數(shù)對(duì)應(yīng)的原三個(gè)數(shù)中的中間位置的數(shù).處理

后原數(shù)列中首尾2個(gè)數(shù)不變.處理后數(shù)列在主函數(shù)中輸出.例如,有10個(gè)正整數(shù)如下:

初始數(shù)列為:657231858214538

第1組數(shù)為:657中值為:6替換后的數(shù)列為一667231858214538

第2組數(shù)為:5723中值為:7替換后的數(shù)列為:667231858214538

第3組數(shù)為:72318中值為:18替換后的數(shù)列為:667181858214538

第蝴數(shù)為:23185中值為:18替換后的數(shù)列為:667181858214538

第5組數(shù)為:1858中值為:8替換后的數(shù)列為:667181888214538

第斕數(shù)為:5821中值為:S替換后的數(shù)列為:667181888214538

第7組數(shù)為:82145中值為:21替換后的數(shù)列為:667181888214538

第S組數(shù)為:214538中值為:38替換后的數(shù)列為:667181S88213838

最終結(jié)果為:667181888213838

請(qǐng)改正程序中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果.

#include<stdio.h>

#defineN10

intfindmid(inta,intb,intc)

{intt;

t=(a>b)?(b>c?b:(a>c?c:a)):((a>c)?a:((b>c)?c:b));

/**********found**********/

returnb;

)

voidfun(intx[])

{intiza,b,c,t[N];

/**********found**********/

for(i=0;i<N;i++)t[i]=x[i]

for(i=0;i<N-2;i++)

{a=t[i];b=t[i+l];c=t[i+2];

/**********found**********/

t[i+l]=findmid(a,b/c);

)

)

main()

{inti,x[N]={6,5,7,23,18,5,8,21,45,38);

for(i=0;i<N;i++)printf("%d",x[i]);

printf("\n");

fun(x);

for(i=0;i<N;i++)printf("%d",x[i]);

printf("\n");

)

【參考答案】

(1)returnt;(2)for(i=0;i<N;i++)t[i]=x[i];

(3)x[i+1]=findmid(a,b,c);

程序編寫題

請(qǐng)編寫函數(shù)ftrn,函數(shù)的功能是查找x在s所指數(shù)組中下標(biāo)的位置,并作為函數(shù)值返回,若x不存在,則返

回一1。

include<stdio.h>

#include<stdlib.h>

#defineN15

voidNONO();

intfun(int*s,intx)

)

main()

{inta[N]={29,13,5,22,10,9,3,18,22,25,14,15,2,7,27},i,x,index;

printf("a數(shù)組中的數(shù)據(jù):\n“);

for(i=0;kN;i++)printf(”%4d”,a[i]);printf("\n");

printf("給x輸入待查找的數(shù):scanf("%d",&x);

index=fun(a,x);

printf("index=%d\n",index);

NONO();

voidNONO()

{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*fp,*wf;

inti,j,a[10],x,index;

fp=fopen("in.dat";'r");

wf=fopen("out.dat";'w");

for(i=0;i<10;i++){

for(j=0;j<10;j++){

fscanf(fp,"%d",&a[j]);

)

fscanf(fp,"%d",&x);

index=fun(a,x);

fprintf(wfz"%d\n"zindex);

)

fclose(fp);

fclose(wf);

)

【參考答案】

intfun(int*s,intx)

{inti;

for(i=0;i<N;i++)

if(x==s[i])returni;

return-1;

)

補(bǔ)充題三

填空題

給定程序的主函數(shù)中,已給出由結(jié)構(gòu)體構(gòu)成的鏈表結(jié)點(diǎn)a、b、c,各結(jié)點(diǎn)的數(shù)據(jù)域中均存入字符,函數(shù)

fim()的作用是:將a、b、c三個(gè)結(jié)點(diǎn)漣接成一個(gè)單向漣表,并輸出讀表結(jié)點(diǎn)中的數(shù)據(jù).

請(qǐng)?jiān)诔绦虻南庐嬀€處埴入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果.

注意:源程序存放在考生文件夾下的BLANK1.C中.

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

typedefstructlist

{chardata;

structlist*next;

}Q;

voidfun(Q*pa,Q*pb,Q*pc)

{Q*P;

/*********j**********/

pa->next=___1___;

pb->next=pc;

P=pa;

while(p)

(

/**********found**********/

printf("%c"z2);

/**********fo(jnd**********/

P=3;

}

printf("\n");

}

main()

{Qa,b,c;

a.data="E';b.data='F';c.data='G';c.next=NULL;

fun(&a,&b,&c);

)

參考答案】

(1)pb(2)p->data(3)p->next

改錯(cuò)題

給定程序MODILC中函數(shù)加堂功能受統(tǒng)亞s所指]維數(shù)組中0的個(gè)數(shù)(存

在變量zero中)和1的小,數(shù)(存在變量one中);,輸出組

請(qǐng)改正函數(shù)fun中指定部也的鵬使它熊依鬻宣巍序的結(jié)構(gòu)。

注意:不要改動(dòng)main函數(shù),不徵管行或?qū)π?/p>

#include<stdio.h>

voidfun(int*s,intn)

/**********found**********/

inti,one=0,zero;

for(i=0;i<n;i++)

/**********found**********/

switch(s[i]);

/**********found**********/

case0:zero++;

case1:one++;

)

printf("one:%dzero:%d\nH,one,zero);

)

main()

{inta[20]={l,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,04,0,0}zn=20;

fun(a,n);

)

【參考答案】

(1)inti,one=0,zero=0;(2)switch(s[i])

(3)case0:zero++;break;

程序編寫題

何中內(nèi),需麟藏鬻麴蝙廨爨懿的黑■鷺螳器群髓IS產(chǎn)和籬其他簿函I數(shù)I鷲中的:黑任

#include<stdio.h>

#defineN20

voidNONO();

voidfun(char*a,char*s)

)

main()

{charsl[N],*s2=,,abcdefghijkn;

fun(sl,s2);

printf("%s\n”,si);

printf("%s\n",s2);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開文件,輸入數(shù)據(jù)?,調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。7

FILE*fp,*wf;

inti;

charsl[256],s2[256];

fp=fopen("in.dat"z"r");

wf=fopen("out.dat'7'w");

for(i=0;i<10;i++){

fgets(s2z255,fp);

fun(sl,s2);

fprintf(wf,”%s”,si);

}

fclose(fp);

fclose(wf);

)

【參考答案】

voidfun(char*a,char*s)

{while(*s!=,\0,)

{*a=*s;

a++;

s++;

)

*a=>\0';

補(bǔ)充題四

填空題

圍繞山頂一圈有'個(gè)山洞,編號(hào)為0、1、2、3、...、N-1,有一只狐貍和一只兔子在洞中居住。狐貍總

想找到兔子并吃掉它,它的尋找方法是先到第一個(gè)洞(即編號(hào)為0的洞)中找;再隔1個(gè)洞,即到編號(hào)為2的

個(gè)洞中我;再隔2個(gè)洞,即到編號(hào)為5的洞中找;下次再隔3個(gè)洞;即到編號(hào)為9的洞中找;…….若狐貍找一

圈,請(qǐng)為兔子指出所有不安全的洞號(hào)。程序中用板組元素模擬一個(gè)洞,數(shù)組元素的下標(biāo)即為洞號(hào),數(shù)組元

素中的值為0時(shí),表示該洞安全,為1時(shí)表示該洞不安全。若形參n的值為30fth不安全的洞號(hào)是0、2、5、

9、14、20、27.

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANKLC中.

不得噌行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

#defineN100

voidfun(int*a,intn)

{inti,t;

for(i=0;i<n;i++)

/**********^QJJQ£|**********/

a[i]=一1一;

i=0;

/**********found**********/

―2—=1;

while(i<n)

{a[i]=1;

t++;

/**********found**********/

i=—3—;

}

)

main()

{inta[N],i,n=30;

fun(a,n);

for(i=0;i<n;i++)

if(a[i]==l)printf(“不安全的洞號(hào)是:%d\n",i);

)

參考答案】

(1)0(2)t(3)i+t

改錯(cuò)題

給定程序MODILC中規(guī)定輸入的字符串全部為字母,血底I數(shù)的功能是:統(tǒng)計(jì)新指字符串中每個(gè)字母在字

符串中出現(xiàn)的次數(shù)(統(tǒng)計(jì)時(shí)不區(qū)分大小寫),并將出現(xiàn)次數(shù)最高的字母輸出(如果有多個(gè)相同,輸出一個(gè)即

可)。

例如對(duì)于字符串:dadbcdbabdb,對(duì)應(yīng)的輸出應(yīng)為:b或&

請(qǐng)改正函數(shù)仙)中指定部位的錯(cuò)誤,使它能得出正確的結(jié)果。

#include<stdio.h>

#include<stdio.h>

include<string.h>

voidfun(chara[])

{intb[26],i,n,max;

for(i=0;i<26;i++)

/**********found**********/

a[i]=0;

n=strlen(a);

for(i=0;i<n;i++)

if(a[i]>='a'&&a[i]<='z')

/**********found**********/

b[a[i]-'A']++;

elseif(a[i]>='A'&&a[i]<='Z')

b[a[i]-'AJ++;

max=0;

for(i=l;i<26;i++)

/**********found**********/

if(b[max]>b[i])

max=i;

(”出現(xiàn)次數(shù)最多的字符是:

printf%c\n"zmax+'a');

)

main()

{chara[200];

printf("請(qǐng)輸入一個(gè)待統(tǒng)計(jì)的字符串:");scanf("%s",a);

fun(a);

)

【參考答案】

(1)b[i]=0;(2)b[a[i]-'a']++;(3)if(b[max]<b[i])

程序編寫題

請(qǐng)編函數(shù)fim,其功能是將一個(gè)數(shù)字字符串轉(zhuǎn)換成與其面值相同的長(zhǎng)整型整數(shù).可調(diào)用strien函數(shù)求字

符串的長(zhǎng)度.例如:在鍵盤輸入字符串2345210,函數(shù)返回長(zhǎng)整型數(shù)2345210.

注意:部分源程序存在PROGLC中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)ftrnj旨

定的部位埴入所編寫的若干語(yǔ)句.

#include<stdio.h>

#include<string.h>

voidNONO();

longfun(char*s)

main()

{chars[10];longr;

printf(”請(qǐng)輸入一個(gè)長(zhǎng)度不超過9個(gè)字符的數(shù)字字符串:");gets(s);

r=fun(s);

printf(nr=%ld\nM,r);

NONOQ;

voidNONO()

{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*fp,*wf;

inti;longr;

chars[10],*p;

fp=fopen("in.dat,',"ru);

wf=fopen(,,out.dat,\"w,');

for(i=0;i<10;i++){

fgets(s,10,fp);

p=strchr(s,

if(p)*p=0;

r=fun(s);

fprintf(wf,"%ld\nn,r);

)

fclose(fp);

fclose(wf);

)

【參考答案】

longfun(char*s)

(

inti,sum=0,len;

len=strlen(s);

for(i=0;i<len;i++)

{

sum二sum*10+*s-48;

s++;

)

returnsum;

)

補(bǔ)充題五

填空題

給定程序中,函數(shù)fbn的作用是:統(tǒng)計(jì)整型變量m中各數(shù)字出現(xiàn)的次數(shù),并存放到數(shù)組a中,其中:a[0]存

放吐現(xiàn)的次數(shù),a[l]存放1出現(xiàn)的次數(shù),……a[9]存放9出現(xiàn)的次數(shù).

例如,若m為14579233,則輸出結(jié)果應(yīng)為:0,1,1,2,1,1,0,1.0,1,

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果.

注意:源程序存放在考生文件夾下的BLANKLC中.

不得噌行或刪行,也不得更改程序的結(jié)構(gòu)!

#include<stdio.h>

voidfun(intm,inta[10])

{inti;

for(i=0;i<10;i++)

/**********found**********/

-1—=0;

while(m>0)

/**********tound**********/

i=—2—;

a[i]++;

******¥*字found**不字不*****/

m=___3___;

main()

{intm,a[10],i;

printf("請(qǐng)輸入一個(gè)整數(shù):");scanf("%d”,&m);

fun(m,a);

for(i=0;i<10;i++)printf(n%d;;a[i]);printf(n\n,');

【參考答案】

(1)a[i](2)m%10(3)m/10

改錯(cuò)題

給定程序VODILC中,函數(shù)ftm的功能是求矩陣(二維數(shù)組)a[N][N]中每行的最小值,結(jié)果存放到數(shù)組b

中.

1432

8657

1110129

13161415

假如:若A則結(jié)果應(yīng)為1.5,9,13,

#include<stdio.h>

#defineN4

voidfun(inta[][N],intb[])

{inti,j;

for(i=0;i<N;i++)

/*********^und***邛******/

b[i]=a[0][0];

/**********^^und**********/

for(j=l;j<N-l;j++)

/不*******琴字^^und**豕不字萃****/

if(b[i]<a[i]|j])

b[i]=a[ij|jj;

)

main()

{inta[N][N]={{l,4,3,2},{8,6,5,7},{11,10,12,9),{13,16,14,15}},b[N];inti;

fun(a,b);

for(i=0;i<N;i++)printf(n%d;',b[i]);

printf("\nu);

)

【參考答案】

(1)b[i]=a[i][OJ;(2)for(j=l;j<N;j++)(3)if(b[i]>a[i]U])

程序編寫題

請(qǐng)編寫函數(shù)fun,其功能是:將一組得分中,去掉一個(gè)最高分和一個(gè)最低分,然后求平均值,并通過

函數(shù)返回.函數(shù)形參后旨向存放得分的數(shù)組,形參n中存放得分個(gè)數(shù)(n>2).

例如,若輸入9.98.57.68.59.39.58.97.88.68.4十個(gè)得分,則輸出結(jié)果為:8.687500.

注意:部分源程序存在PROGLC中,請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)ftm的

花括號(hào)中填入所編寫的若干語(yǔ)句.

#include<stdio.h>

voidNONO();

doublefun(doublea[],intn)

main()

{doubleb[10J,r;inti;

printf("輸入10個(gè)分?jǐn)?shù)放入b數(shù)組中:”);

for(i=0;i<10;i++)scanf(M%lf;&b[i]);

printf(”輸入的10個(gè)分?jǐn)?shù)是:");

for(i=0;i<l0;i++)printf("%4.11fn,b[i]);printf(n\nu);

r=fun(b,10);

printf("去掉最高分和最低分后的平均分:%f\nu,r);

NONO();

)

voidNONO()

{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*fp,*wf;

inti,j;

doubleb[10],r;

fp=fopen("in.dat",,'ru);

wf=fopen(nout.dat,',,,w");

for(i=0;i<10;i++){

for(j=0;j<10;j++){

fscanf(fp,"%lf

)

r=fun(b,10);

fprintf(wf,n%f\n",r);

)

fclose(fp);

fclose(wf);

)

【參考答案】

doublefun(doublea[],intn)

(

doublesum=O,max,min;inti;

max=min=a[0];

for(i=0;i<n;i++)

(

sum=sum+a[i];

if(max<a[i])max=a[i];

if(min>a[i])min=a[i];

)

sum=sum-max-min;

retum(sum/(n-2));

補(bǔ)充題六

填空題

給定程序中,函數(shù)ftm的功能是:調(diào)用隨機(jī)函數(shù)產(chǎn)生24互不相同的整數(shù)放在形參痢指數(shù)組中(此數(shù)組在

主函數(shù)中已置0).

請(qǐng)?jiān)诔绦虻南庐嬀€處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果。

注意:部分源程序在文件8LANK1.C中。

#include<stdlib.h>

#include<stdio.h>

#defineN20

voidfun(int*a)

{inti,x,n=0;

x=rand()%20;

/**********found**********/

while(n<―1—)

{for(i=0;i<n;i++)

/**********found**********/

if(x==a[i])

2;

/**********found**********/

if(i=_3_)

{a[n]=x;n++;}

x=rand()%20;

main()

{intx[N]={0},i;

fun(x);

printf("Theresult:\nH);

for(i=0;i<N;i++)

{printf("%4d,r,x[i]);

if((i+l)%5==0)printf("\nu);

)

printf("\n\nM);

)

【參考答案】

(1)N或20(2)break(3)n

改錯(cuò)題

下列給定程序是建立一個(gè)帶頭結(jié)點(diǎn)的單向睚表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)賦值。函數(shù)ftm的功能是將單向

鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn)漱據(jù)域?yàn)榕紨?shù)的值累加起來(lái),并且作為函數(shù)值返回.

請(qǐng)改正函數(shù)fim中的錯(cuò)誤,使它能得出正確的結(jié)果。

注意:部分源程序在文件MOD".C中,不要改動(dòng)mam函數(shù),不得增行或刪行,也不得夏改程序的結(jié)構(gòu)!

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

typedefstructaa

{intdata;

structaa*next;

}NODE;

intfun(NODE*h)

{intsum=0;

NODE*p;

p=h->next;

/*字,**********found***字字,字*******/

while(p->next)

{if(p->data%2==0)

sum+=p->data;

/*************^^)und******亭*******/

p=h->next;

)

returnsum;

)

NODE*creatlink(intn)

(

NODE*h,*p,*s;

inti;

h=p=(NODE*)malloc(sizeof(NODE));

for(i=l;i<n;i++)

s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%16;

s->next=p->next;

p->next=s;

p=p->next;

)

p->next=NULL;

returnh;

)

outlink(NODE*h)

{NODE*p;

p=h->next;

printf(n\n\nTheLIST:\n\nHEAD'1);

while(p)

{printf("->%du,p->data);

p=p->next;)

printf(M\nH);

)

voidmain()

{NODE*head;inisum;

system("CLS");

head=creatlink(l0);

outlink(head);

sum=fun(head);

printf("\nSUM=%d",sum);

)

【參考答案】

(l)while(p!=NULL)(2)p=p->next;

程序編寫題

請(qǐng)編寫一個(gè)函數(shù)ftm,它的功能是:將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(若該位置

上不是字母,則不轉(zhuǎn)換).

例如,若輸入"abc4Efg",則應(yīng)輸出“aBc4EFg”.

#include<conio.h>

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

voidfun(char*ss)

voidmain()

FILE*wf;

chartt[81],s[8l]=Mabc4Efg";

system(',CLSu);

printf(M\nPleaseenteranstringwithin80characters:\n");

gets(tt);

printf(M\n\nAfterchanging,thestring\n%sn,tt);

fun(tt);

printf("\nbecomes\n%s\n",tt);

wf=fopen(nout.dat","w");

fun(s);

fprintf(wf,"%sn,s);

fclose(wf);

}

【參考答案】

voidfun(char*ss)

inti;

for(i=0;ss[i]!='\0';i++)/*將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為

大寫*/

if(i%2=l&&ss[i]>=,a&&ss[i]<=,z')

ss[i]=ss[i]-32;

補(bǔ)充題七

填空題

―給定程序中,函數(shù)fUn的功能是:計(jì)算形參廝指數(shù)組中、個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指

數(shù)蛆中大于平均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平均值的數(shù)據(jù)移至須指數(shù)組的后部,平均值作為函數(shù)

值返回,在主函數(shù)中輸出平均值和移動(dòng)后的數(shù)據(jù).

例如,有'10個(gè)正數(shù):46、30、32、40、6、17、45、15、48、26,平均值為30.500000.

移動(dòng)后的輸出為:46、32^40^45、48、30、6、17、15、26.

詰在程序的下畫線處填入正確的內(nèi)容并把下畫線刪除,使程序得出正確的結(jié)果.

注意:部分源程序在文件BLANK1.C中.

#include<stdlib.h>

#include<stdio.h>

#defineN10

doublefun(double*x)

{inti,j;doubles,av,y[N];

s=0;

for(i=0;i<N;i++)s=s+x[i];

/**********found*********琴/

av=_1

for(i=j=0;i<N;i++)

if(x[i]>av){

/**********found**********/

y[_2_]=x[i];

x[i]=-l;}

for(i=0;i<N;i++)

/**********found**********/

if(x[i]!=_3_)y[j++]=x[i];

for(i=0;i<N;i++)x[i]=y[i];

returnav;

)

main()

{intdoublex[N];

for(i=0;i<N;i++){x[i]=rand()%50;printf("%4.0fn,x[i]);}

printf("\n");

printf("\nTheaverageis:%f\n',,fun(x));

printfCAnTheresult:\nn,fun(x));

for(i=0;i<N;i++)printf(n%5.Of",x[i]);

printf(n\nn);

【參考答案】

(l)s/N(2)j++(3)-1

改錯(cuò)題

下列給定程序中,函數(shù)的功能是:根據(jù)整形參m的值,計(jì)算如下公式的值。

1

wxw

例如,若m中的值為5,則應(yīng)輸出0.536389。

#include<stdio.h>

doublefun(intm)

{doubley=1.0;

inti;

/**************found**************/

for(i=2;i<m;i++)

/不**********字不示found*率************/

y-=1/(i*i);

retum(y);

main()

{intn=5;

printf("\nTheresultis%lf\n",fun(n));

【參考答案】

(l)for(i=2;i<=m;i++)

(2)y-=1.0/(i*i);

程序編寫題

~編寫函數(shù)ftm,它的功能是:求小于形參洞時(shí)能被3與7整除的所有自然數(shù)之和的平方根,并作為函數(shù)值

返回。

例如,若n為1000fth程序輸出應(yīng)為:s=153.909064.

注意:部分源程序在文件PR0G1.C中。

#include<math.h>

#include<stdio.h>

doublefun(intn)

main()/*主函數(shù)*/

{voidNONO();

printf("s=%f\n,\fun(1000));

NONO();

}

voidNONO()

{/*本函數(shù)用于打開文件,輸入數(shù)據(jù),調(diào)用函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*fp,*wf;

inti,n;

doubles;

fp=fopen("in.dat","ru);

wf=fopen(,,out.dat,',',w");

for(i=0;i<10;i++){

fscanf(fp,n%dn,&n);

s=fun(n);

fprintf(wf,M%f\nn,s);

)

fclose(fp);

fclose(wf);

)

【參考答案】

doublefun(intn)

(

doublesum=0.0;

inti;

for(i=21;i<=n;i++)

if((i%3=0)&&(i%7=0))sum+=i;

returnsqrt(sum);

}

補(bǔ)充題八

一、填空題:

給定程序中,函數(shù)fun的功能是:調(diào)用隨機(jī)函數(shù)產(chǎn)生20個(gè)互不相同的整數(shù)放在形參a所指數(shù)組中(此

數(shù)組在主函數(shù)中已置0)。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

#include<stdlib.h>

#include<stdio.h>

#defineN20

voidfun(int*a)

{inti,x,n=0;

x=rand()%20;

******¥*字found**不字不*****/

while(n<_1_)

{for(i=0;i<n;i++)

/字********4found***亭******/

if(x==a[i])

_2_;

/字********字found**不*******/

if(i==_3_)

{a[n]=x;n++;}

x=rand()%20;

main()

{intx[N]={0},i;

fun(x);

printf(HTheresult:\nu);

for(i=0;i<N;i++)

{printf("%4d",xlij);

if((i+l)%5==0)printf(,,\nn);

)

printf(H\n\nH);

)

【參考答案】

(1)N或20(2)break(3)n

改錯(cuò)題

下列給定程序是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)賦值。函數(shù)ftm的功能是將單向

涯表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn)激據(jù)域?yàn)榕紨?shù)的值累加起來(lái),并且作為函數(shù)值返回。

請(qǐng)改正函數(shù)中的錯(cuò)誤,使它能得出正確的結(jié)果。

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

typedefstructaa

{intdata;

structaa*next;

}NODE;

intfun(NODE*h)

{intsum=0;

NODE*p;

p=h->next;

/************ound**************/

while(p->next)

{if(p->data%2==0)

sum+=p->data;

/*************tound**************/

p=h->next;

)

returnsum;

)

NODE*creatlink(intn)

(

NODE*h,*p,*s;

inti;

h=p=(NODE*)malloc(sizeof(NODE));

for(i=l;i<n;i++)

(

s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%16;

s->next=p->next;

p->next=s;

p=p->next;

}

p->next=NULL;

returnh;

)

outlink(NODE*h)

{NODE*p;

p=h->next;

printf(n\n\nTheLIST:\n\nHEAD");

while(p)

{printf(n->%d",p->data);

p=p->next;}

printf(n\nM);

)

voidmain()

{NODE*head;intsum;

systemC'CLS'1);

head=creatlink(10);

outlink(head);

sum=fun(head);

printf(',\nSUM=%d'\sum);

【參考答案】

(l)while(p!=NULL)(2)p=p->next;

程序編寫題

請(qǐng)編寫一個(gè)函數(shù)ftm,它的功能是:將ss所指字符串中所有下標(biāo)為奇數(shù)位置的字母轉(zhuǎn)換為大寫(若該位置

上不是字母,則不轉(zhuǎn)換).

例如,若輸入Zbc4Efg”,則應(yīng)輸出“aBc4EFg”.

#include<conio.h>

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

voidfun(char*ss)

}

voidmain()

HLE*wf;

chartt[81],s[81]="abc4Efgn;

system("CLSH);

printf(M\nPleaseenteranstringwithin80characters:\n");

gets(tt);

printf(n\n\nAfterchanging,thestring\n%sn,tt);

fun(tt);

printfCAnbecomesXn%s\nn,tt);

wf=fopen("out.datn,nwn);

fun(s);

fprintf(wf,"%s,f,s);

fclose(wf);

【參考答案】

voidfun(char*ss)

{

inti;

for(i=0;ss[i]!='\0';i++)/*將ss所指字符串中所有下

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論