計(jì)算機(jī)2級(jí)c語(yǔ)言題_第1頁(yè)
計(jì)算機(jī)2級(jí)c語(yǔ)言題_第2頁(yè)
計(jì)算機(jī)2級(jí)c語(yǔ)言題_第3頁(yè)
計(jì)算機(jī)2級(jí)c語(yǔ)言題_第4頁(yè)
計(jì)算機(jī)2級(jí)c語(yǔ)言題_第5頁(yè)
已閱讀5頁(yè),還剩347頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

全國(guó)計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)參考題庫(kù)

第01套:

一、填空題:程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和3門課的成績(jī)。所有學(xué)生數(shù)據(jù)均

以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是重寫形參filename所指文件中最后一個(gè)學(xué)生的數(shù)據(jù),即用

新的學(xué)生數(shù)據(jù)覆蓋該學(xué)生原來的數(shù)據(jù),其它學(xué)生的數(shù)據(jù)不變。

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

注意:源程序存放在考生文件夾下BLANK1.C"」。

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

給定源程序:

#include<stdio.h>

^defineN5

typedefstructstudent{

longsno;

charname[10];

floatscore[3];

}STU;

voidfun(char*filename,STUn)

{FILE*fp;

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

fp=fopen(1,〃rb+”);

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

fseekC2-(long)sizeof(STU),SEEKEND);

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

fwrite(&n,sizeof(STU),1,3);

fclose(fp);

}

mainO

{STUt[N]={{10001,"MaChao*,91,92,77),{10002,〃CaoKai〃,75,60,88),{10003,"LiSi",85,70,

78},{10004,“FangFang”,90,82,87},{10005,“ZhangSan”,95,80,88)1:

STUn={10006,z,ZhaoSi\55,70,68),ss[N];

inti,j;FILE*fp;

fp=fopen("student.dat〃,“wb〃);

fwrite(t,sizeof(STU),N,fp);

fclose(fp);

fp=fopen("student.dat〃,〃rb");

fread(ss,sizeof(STU),N,fp);

fclose(fp);

printf(^XnTheoriginaldata:\n\n〃);

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

(printf(z,\nNo:%ldName:%-8sScores:〃,ss[j].sno,ss[j].name);

for(i=0;i<3;i++)printf("%6.2f〃,ss[j].scoreti]);

printf(〃\n〃);

)

fun("student.dat〃,n);

printf(〃\nThedataaftermodifing:\n\n〃):

fp=fopen("student.dat〃,〃rb〃);

fread(ss,sizeof(STU),N,fp);

fclose(fp);

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

(printf(,z\nNo:%ldName:%-8sScores:,z,ss[j].sno,ss[j].name);

for(i=0;i<3;i++)printfC%6.2fss[j].scoreti]);

printf(〃\n");

}

)

解題答案:

/**********第?空**********/

fp=fopen(filename,"rb+”);

/**********第二空**********/

fseek(fp,-(long)sizeof(STU),SEEK_END);

/**********第三空**********/

fwrite(&n,sizeof(STU),1,fp);

******************************************

二、改錯(cuò)題:給定程序MODU.C中的函數(shù)Creatlink的功能是創(chuàng)建帶頭結(jié)點(diǎn)的單向鏈表,并為各結(jié)點(diǎn)數(shù)據(jù)域

賦0至ljm-1的值。

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

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

^include<stdio.h>

^include<stdlib.h>

typedefstructaa

{intdata;

structaa*next;

}NODE;

NODE*Creatlink(intn,intm)

{NODE*h=NULL,*p,*s;

inti;

/**********founcl***********/

p=(NODE)maHoc(sizeof(NODE));

h=p;

p->next=NULL;

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

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

s->data=rand()%ni;s->next=p->next;

p->next=s;p=p->next;

)

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

returnp;

)

outlink(NODE*h)

{NODE*p;

p=h->next;

printfC\n\nTHELIST:\n\nHEAD〃);

while(p)

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

p=p->next;

)

printf(〃\n〃);

mainO

{NODE*head;

head=Creatlink(8,22);

outlink(head):

}

解題答案:

/**********fourid***********/

p=(NODE*)maHoc(sizeof(NODE));

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

returnh;

三、程序題:請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:統(tǒng)計(jì)?行字符串中單詞的個(gè)數(shù),作為函數(shù)值返回。?行字符串

在主:函數(shù)中輸入,規(guī)定所有單詞由小寫字母組成,單詞之間由若干個(gè)空格隔開,?行的開始沒有空格。

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

請(qǐng)勿改動(dòng)主:函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

#include<string.h>

^defineN80

intfun(char*s)

main()

{charline[N];intnum=0;voidNONO();

printf(z,Enterastring:\n");gets(line);

num=fun(line);

printf("Thenumberofwordis:%d\n\n〃,num);

NONO();

)

voidNONO()

{/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*rf,*wf;inti,num;charline[N],*p;

rf=fopen(z/in.dat","r");

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

ford=0;i<10;i++){

fgets(line,N,rf):

p=strchr(line,'\n');

if(p!=NULL)*p=0;

num=fun(line);

fprintf(wf,“刎\n",num);

}

fclose(rf);fclose(wf);

)

參考答案:

intfun(char*s)

(

intk=1;

while(*s){

if(*s=='')k++;

s++;

}

returnk;

##################################

第02套:

一、填空題:給定程序的功能是:從鍵盤輸入若干行文本(每行不超過80個(gè)字符),寫到文件myfile4.txt

中,用T作為字符串輸入結(jié)束的標(biāo)志。然后將文件的內(nèi)容讀出顯示在屏幕上。文件的讀寫分別由自定義函數(shù)

ReadText和WriteText實(shí)現(xiàn)。

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

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

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

給定源程序:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

voidWriteText(FILE*);

voidReadText(FILE*);

main()

{FILE*fp;

if((fp=fopen(z,myfile4.txt〃,〃\v"))二二NULL)

{printf(,zopenfail!!\n*);exit(O);)

WriteText(fp);

fclose(fp);?

if((fp=fopenCmyfile4.txt",VO)==NULL)

{printf(zzopenfail!!\n,z);exit(0);}

ReadText(fp);

fclose(fp);

)

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

voidWriteText(FILE―1—)

{charstr[81];

printf(^XnEnterstringwith-1toend:\n〃);

gets(str);

while(strcmp(str,*-TO!=0){

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

fputs(___2___,fw);fputs(〃\n〃,fw);

gets(str);

}

)

voidReadText(FILE*fr)

{charsir[81];

printf(v\nReadfileandoutputtoscreen:\n〃);

fgets(str,81,fr);

while(!feof(fr)){

/**********fourid**********/

printf___3___);

fgets(str,81,fr);

)

}

解題答案:

/**********第一-空**********/

voidWriteText(FILE*fw)

/**********第二空**********/

fputs(str,fw);fputs('\n〃,fw);

/**********第三空**********/

printfstr);

二、改錯(cuò)題:給定程序MODI1.C中函數(shù)fun的功能是:從低位開始取出長(zhǎng)整型變量s中奇數(shù)位上的數(shù),依

次構(gòu)成一?個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。

例如,當(dāng)s中的數(shù)為:7654321時(shí),t中的數(shù)為:7531o

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

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

^include<stdio.h>

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

voidfun(longs,longt)

{longsl=10;

*t=s%10;

while(s>0)

(s=s/100;

*t=s%10*si+*t;

/************fourid************/

si=sl*100;

}

}

main()

{longs,t;

printf(z,\nPleaseenters:〃);scanf(〃用ld〃,&s);

fun(s,&t);

printf(z,Theresultis:%ld\n/z,t);

)

解題答案:

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

voidfun(longs,long*t)

/************fotind************/

sl=sl*10;

******************************************

三、程序題:函數(shù)fun的功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式

是:將a數(shù)的卜位和個(gè)位數(shù)依次放在c數(shù)的個(gè)位和百位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的千位和

位上。

例如,當(dāng)a=45,b=如時(shí),調(diào)用該函數(shù)后,c=1524o

注意:部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DATU」的數(shù)據(jù)不得修改。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

voidfun(inta,intb,long*c)

mainO

{inta,b;longc;

voidNONO();

printf("Inputa,b:');

scanf("版1,%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:c);

NONOO;

)

voidNONO()

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

FILE*rf,*wf;

inti,a,b;longc;

rf=fopen("in.dat〃,“r〃);

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(rf);

fclose(wf);

)

解題答案:

(

*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);

}

##########################################

第03套:

?、填空題:給定程序中,函數(shù)fun的功能是:將自然數(shù)1?10以及它們的平方根寫到名為mygc3.txt的

文本文件中,然后再順序讀出顯示在屏幕上。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程

序得出正確的結(jié)果。

注意:源程序存放在考生文件夾下的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<math.h>

#include<stdio.h>

intfun(char*fname)

{FILE*fp;inti,n;floatx;

if((fp=fopen(fname,〃w〃))=NULL)return0;

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

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

fprintf(___1___,繪d%f\n〃,i,sqrt((double)i));

printf('AnSucceed!!\n〃);

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

_2_;

printf(〃\nThedatainfile:\n");

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

if((fp=fopen(___3___,〃r"))二二NULL)

return0;

fscanf(fp,&n,&x);

while(!feof(fp))

{printf(*%d%f\n”,n,x);fscanf(fp,&n,&x);}

fclose(fp);

return1;

)

mainO

{charfname口=“myfile3.txt”;

fun(fname);

)

解題答案:

/**********第一?空*********/

fprintf(fp,"%d與f\n”,i,sqrt((double)i));

printf(z/\nSucceed!!\n");

/**********第二空**********/

fclose(fp);

/**********第三空**********/

if((fp=fopen(fname,,/r/,))==NULL)

改錯(cuò)題:給定程序MODI1.C中fun函數(shù)的功能是:將n個(gè)無序整數(shù)從小到大排序。清改正程序中的錯(cuò)誤,

使它能得出止:確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

ttinclude<stdio.h>

#include<stdlib.h>

fun(intn,int*a)

(inti,j,p,t;

for(j=0;j<n~l;j++)

{p=j;

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

for(i-j+l;i<n-l;i++)

if(a[p]>a[i])

/************founcl************/

t=i;

if(p!=j)

(t=a[j];a[j]=a[p];a[p]=t;)

)

)

putarr(intn,int*z)

{inti;

for(i=1;i<=n;i++,z++)

{printf("%4d〃,*z);

if(!(i%10))printf("\n");

}printfCW);

)

mainO

{intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=ll;

printf(^XnXnBeforesorting%dnumbers:Xn^,n);putarr(n,aa);

fun(n,aa);

printf(^XnAftersorting%dnumbers:\n,z,n);putarr(n,aa);

}

解題答案:

#include<stdio.h>

#include<stdlib.h>

fun(intn,int*a)

{inti,j,p,t;

for(j=0;j<n-l;j++)

{p=j;

/************fotind************/

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

/************founcl************/

P=i;

三、程序題:函數(shù)fun的功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。

合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的個(gè)位和百位上,b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的

十位和千位上。

例如,當(dāng)a=45,b=12時(shí),調(diào)用該函數(shù)后,c=2514。

注意:部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

voidfun(inta,intb,long*c)

mainO

{inta,b;longc;

voidNONO0;

printf("Inputa,b:〃);

scanf(,z%d,%d〃,&a,&b);

fun(a,b,&c);

printf(,zTheresultis:%ld\n”,c);

NONOO;

}

voidNONO0

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

FILE*rf,*wf;

inti,a,b;longc;

rf=fopen(z,in."r");

wf=fopen(z,out.dat",“『);

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

fscanf(rf,&a,&b);

fun(a,b,&c);

fprintf(wf,"a=%d,b=%d,c=%ld\n〃,a,b,c);

)

fclose(rf);

fclose(wf);

)

解題答案:

*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;

########即用##############肘#陰######卅##

第04套:

一、填空題:程序通過定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和3門課的成績(jī)。所有學(xué)生數(shù)據(jù)均

以二進(jìn)制方式輸出到文件中。函數(shù)fun的功能是從形參filename所指的文件中讀入學(xué)生數(shù)據(jù),并按照學(xué)號(hào)

從小到大排序后,再用二進(jìn)制方式把排序后的

學(xué)生數(shù)據(jù)輸出到filename所指的文件中,覆蓋原來的文件內(nèi)容。

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

注意:源程序存放在考生文件夾下BLANKl.C?|?o

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

給定源程序:

^includeCstdio.h>

^defineN5

typedefstructstudent{

longsno;

charname[10];

floatscore[3];

)STU;

voidfun(char*filename)

{FILE*fp;inti,j;

STUs[N],t;

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

fp=fopen(filename,_L_);

fread(s,sizeof(STU),N,fp);

fclose(fp);

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

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

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

if(s[i].sno_2_s[j].sno)

(t=s[i];s[i]=s[j];s[j]=t;}

fp=fopen(filename,〃wb〃);

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

3_(s,sizeof(STU),N,fp);/*二進(jìn)制輸出*/

fclose(fp);

)

mainO

{STUt[N]={{10005,"ZhangSan",95,80,88),{10003,"LiSi",85,70,78),{10002,"CaoKai",75,60,

88},{10004,“FangFang”,90,82,87},{10001,"MaChao",91,92,77}},ss[N];

inti,j;FILE*fp;

fp=fopen("student.dat〃,〃wb");

fwrite(t,sizeof(STU),5,fp);

fclose(fp);

printf(〃\n\nTheoriginaldata:\n\nz,);

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

(printf(^XnNo:%ldName:%-8sScores:z,,t[j].sno,t[j].name);

for(i=0;i<3;i++)printf("為6.2f〃,t[j].score[i]);

printf('\n");

)

fun("student,dat");

printf(〃\n\nThedataaftersorting:\n\n");

fp-fopen("student.dat〃,“rb〃);

fread(ss,sizeof(STU),5,fp);

fclose(fp);

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

{printf("\nNo:%ldName:8sScores:",ss[j].sno,ss[j].name);

for(i-0;i<3;i++)printf("%6.2f”,ss[j].score[i]);

printfCW);

)

)

解題答案:

/**********第一空**********/

fp=fopen(filename,“rb〃);

/**********第二空**********/

if(s[i].sno>s[j].sno)

/**********第三空**********/

fwrite(s,sizeof(STU),N,fp);/*二進(jìn)制輸出*/

******************************************

改錯(cuò)題:給定程序M0DI1.C中函數(shù)fun的功能是:在字符串的最前端加入11個(gè)*號(hào),形成

二、新串,并且覆蓋原串。

注意:字符串的長(zhǎng)度最長(zhǎng)允許為79。

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

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

^include<stdio.h>

#include<string.h>

voidfun(chars[],intn)

{

chara[80],*p;

inti;

/**********fourid***********/

s=p;

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

do

{a[i]=*p;

i++:

)

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

while(*p++)

a[i]=0;

strcpy(s,a);

)

mainO

{intn;chars[80];

printf(v\nEnterastring:〃);gets(s);

printf(,z\nThestring\〃%s\〃\n〃,s);

printfCAnEntern(numberof*):");scanf&n);

fun(s,n);

printf('AnThestringafterinsert:\n〃,s);

)

解題答案:

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

P=s;

/**********founcl***********/

whi1e(*p++);

三、程序題:請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:統(tǒng)計(jì)各年齡段的人數(shù)0N個(gè)年齡通過調(diào)用隨機(jī)函數(shù)獲得,并放在

主函數(shù)的age數(shù)組中;要求函數(shù)把0至9歲年齡段的人數(shù)放在d[0]中,把10至19歲年齡段的人數(shù)放在d[l]

中,把20至29歲年齡段的人數(shù)放住d⑵中,其余依此類推,把100歲(含100)以上年齡的人數(shù)都放在d[10]

中。結(jié)果在主函數(shù)中輸出。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

^defineN50

^defineM11

voidfun(int*a,int*b)

doublernd()

{statict=29,c=217,m=1024,r=0;

r=(r*t+c)%m;return((double)r/m);

)

mainO

{intage[N],i,d[M];voidNONO(intd[M]);

for(i=0;i<N;i++)age[i]=(int)(115*rnd());

printf(,zTheoriginaldata:\n");

for(i=0;i<N;i++)printf((i+l)%10=0?"%4d\n":"%4d〃,age[i]);

printf("\n\n〃);

fun(age,d);

for(i=0;i<10;i++)printf(,z%4d—%4d:%4d\nz/,i*10,i*10+9,d[i]);

printf(z,0ver100:%4d\n”,d[10]);

NONO(d);

)

voidNONO(intd[M])

{/*請(qǐng)?jiān)诖撕瘮?shù)內(nèi)打開文件,輸入測(cè)試數(shù)據(jù),調(diào)用fun函數(shù),輸出數(shù)據(jù),關(guān)閉文件。*/

FILE*wf;inti;

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

ford=0;i<10;i++)fprintf(wf,〃%4d—%4d:%4d\n,z,i*10,i*10+9,d[i]);

fprintf(wf,"Over100:%4d\n〃,d[10]);

fclose(wf);

)

參考答案:

voidfun(int*a,int*b)

(

inti,j;

for(i=0;i<M:i++)b[i]=0;

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

j=a[i]/10;

if(j>10)b[M-1]++;elseb[j]++;

)

1

doublemd()

{statict=29,c=217,m=1024,r=0;

r=(r*t+c)%m;return((double)r/m);

)

#################################

第05套:

?、填空題:給定程序中已建立??個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)遞增

有序鏈接。函數(shù)fun的功能是:把形參x的值放入一個(gè)新結(jié)點(diǎn)并插入到鏈表中,插入后各結(jié)點(diǎn)數(shù)據(jù)域的值

仍保持遞增有序。

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

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

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

給定源程序:

#include<sldio.h>

#include<stdlib.h>

#defineN8

typedefstructlist

{intdata;

structlist*next;

}SL1ST;

voidfun(SLlST*h,intx)

{SLIST*p,*q,*s;

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

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

s-xlata=___1___;

q=h;

p=h->next;

while(p!=NULL&&x>p->data){

/**********佑unci**********/

q二___2___;

p=p->next;

}

s->next=p;

/***木木*****砧un(j**********/

q->next=___3___;

}

SLIST*creatlist(int*a)

{SLIST*h,*p,*q;inti;

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

for(i=0;ivN;i++)

{q=(SLIST*)malloc(sizeof(SLIST));

q->data=a[i]:p->next=q;p=q;

)

p->next=0;

returnh;

)

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf("\nThelistisNULL!\n");

else

{printf("\nHead");

do{printf("->%d",p->data);p=p->next;}while(p!=NULL);

printf(u->End\n");

)

)

main()

{SLIST*head;intx;

inta[N]={11,12,15,18,19,22,25,29};

head=creatlist(a);

printf("\nThelistbeforeinserting:\n");outlist(head);

printf("\nEnteranumber:");scanf("%d",&x);

fun(head,x);

printf("\nThclistafterinscrting:\nn);outlist(hcad);

}解題答案:

/**********第?空*********/

s->daa=x;

/**********第二空**********/

q=P;

/**********第三空**********/

q->next=s;

******************************************

二、改錯(cuò)題:給定程序M0D11.C中函數(shù)fun的功能是:計(jì)算正整數(shù)num的各位上的數(shù)字之積。

例如,若輸入:252,則輸出應(yīng)該是:20o若輸入:202,則輸出應(yīng)該是:0。

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

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<stdio.h>

longfun(longnum)

(

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

longk;

do

{k*=num%10;

/************Cuiid************/

num\=10;

}while(num);

return(k);

1

main()

{longn;

printf("\nPleaseenteranumber:");scanf("%ld,,,&n);

printf(u\n%ld\n",fun(n));

}

解題答案:

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

longk=l;

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

num/=10;

三、程序題:請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:計(jì)算n門課程的平均分,計(jì)算結(jié)果作為函數(shù)值返回。

例如:若有5門課程的成績(jī)是:90.5,72,80,61.5,55

則函數(shù)的值為:71.80。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入

你編寫的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

floatfun(float*a,intn)

(

1

main()

{floatscore[30]={90.5,72,80,61.5,55},aver;

voidNONO();

aver=fun(score,5);

printf("\nAveragescoreis:%5.2f\n”,aver);

NONO();

)

voidNONO()

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

FILE*fp,*wf;

inti,j;

floataver,score[5]:

fp=fopenC'in.dar/'r");

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

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

for(j=0;j<5;j++)fscanf(fp,"%f,",&score|jD;

aver=fun(score,5);

fprintf(wf,H%5.2f\n",aver);

)

fclose(fp);

fclose(wf);

解題答案:

(

inti;

floatave=0.0;

for(i=0;i<n;i++)ave=ave+a[i];

ave=ave/n;

returnave;

)

##########################################

第06套:

?、給定程序中已建立個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,在main函數(shù)中將多次調(diào)用fun函數(shù),每調(diào)用一次fun函

數(shù),輸出鏈表尾部結(jié)點(diǎn)中的數(shù)據(jù),并釋放該結(jié)點(diǎn),使鏈表縮短。

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

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

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

給定源程序:

#include<stdio.h>

#include<stdlib.h>

#defineN8

typedefstructlist

{intdata;

structlist*next;

}SLIST;

voidfun(SLIST*p)

{SLIST*t,*s;

t=p->next;s=p;

while(t->next!=NULL)

{s=t;

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

t=t->___1___;

)

/**********氣und**********/

printf("%d1—2—);

s->next=NULL;

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

free(-3-);

)

SLIST*creatlist(int*a)

{SLIST*h,*p,*q;inti;

h=p=(SLIST*)malIoc(sizeof(SLIST));

for(i=0;ivN;i++)

{q=(SLIST*)malloc(sizeof(SLIST));

q->data=a[i];p->next=q;p=q;

)

p->next=0;

returnh;

)

voidoutlist(SLIST*h)

{SLIST*p;

p=h->ncxt;

if(p==NULL)printf(u\nThelistisNULL!\n");

else

{printfC'XnHead");

do{printf(n->%d",p->data);p=p->next;}while(p!=NULL);

printf(',->End\nn);

}

}

main()

{SLIST*head;

inia[N]={11,12,15,18,19,22,25,29);

head=creatlist(a);

printfC'XnOutputfromhead:\n");outlist(head);

printf("\nOutputfromtail:\n");

while(head->next!=NULL){

fun(head);

prinlf("\n\nn);

printf("\nOutputfromheadagain:\n");outlist(head);

}

}

解題答案:

/**********第一空**********/

t=t->next;

/**********第二空**********/

printf(〃%d”,t->data);

/**********第三空**********/

free(t);

二、改錯(cuò)題:給定程序M0DI1.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的

內(nèi)容。

例如,若字符串為abed,則應(yīng)輸出:debao

請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。

注意:不耍改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<stdio.h>

/***********nd*¥*****¥****/

fun(chara)

{if(*a)

{fun(a+l);

/**亭木木***亭**nd************/

printf(',%c^^*a);

1

)

main()

{chars[10]="abcd'r;

printf("處理前字符串二%s\n處理后字符串二”,s);

fun(s);printf("\n");

)

解題答案:

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

voidfun(char*a)

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

printf("%c〃,*a);

三、程序題:請(qǐng)編寫?個(gè)函數(shù)fun,它的功能是:比較兩個(gè)字符串的長(zhǎng)度,(不得調(diào)用C語(yǔ)言提供的求字符

串長(zhǎng)度的函數(shù)),函數(shù)返回較長(zhǎng)的字符串。若兩個(gè)字符串長(zhǎng)度相同,則返回第個(gè)字符串。

例如,輸入beijing<CR>shanghai<CR>(<CR>為回車鍵),函數(shù)將返回shanghai。

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

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

char*fun(char*s,char*t)

main()

{chara[20],b[20];

voidNONO();

printf("Input1thstring:");

gets(a);

printf("lnput2thstring:");

gets(b);

printf("%s\n",fun(a,b));

NONO();

)

voidNONO()

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

FILE*fp,*wf;

inti;

chara[20],b[20];

fp=fopen("in.darT);

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

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

fscanf(fp,"%s%s",a.b);

fprintf(wf,"%s\n",fbn(a,b));

)

fclose(fp);

fclose(wf);

參考答案:

(

inti;

char*p=s,*q=t;

for(i=0;*p&&*q;i++){

p++;q++;

1

if(*p==0&&*q==0)returns;

if(*p)returns;

elsereturnt;

)

#################################

第07套:

一、填空題:給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按數(shù)據(jù)域遞增有序鏈接。函

數(shù)fun的功能是:刪除鏈表中數(shù)據(jù)域值相同的結(jié)點(diǎn),使之只保留一個(gè)。

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

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

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

給定源程序:

#include<stdio.h>

#include<stdlib.h>

#defineN8

typcdefstructlist

{intdata;

structlist*ncxt;

}SLIST;

voidfun(SL!ST*h)

{SLIST*p,*q;

p=h->next;

if(p!=NULL)

{q=p->next;

while(q!=NULL)

{if(p->data==q->data)

{p->next=q->next;

/**********於und**********/

free(_1-);

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

q=p->-2一:

}

else

{p=q:

********found*

q=q->-3一;

}

)

SLIST*creatlist(int*a)

{SLIST*h,*p,*q;inti;

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

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

{q=(SLIST*)malloc(sizeof(SLIST));

q->data=a[i];p->next=q;p=q;

)

p->next=0;

returnh;

}

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf("\nThelistisNULL!\n");

else

{printf(,'\nHeadn);

do{printf("->%d',,p->data):p=p->next;)while(p!=NULL);

printf("->End\n");

)

)

main()

{SLIST*head;inta[N]=[1,2,23,4,4,4,5);

head=creatlist(a);

printf(M\nThelistbeforedeleting:\n");outlist(head);

fun(head);

printf(u\nThelistafterdeleting:\n");outlist(head);

)

解題答案:

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

free(q);

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

q=p->next;

/**********fourid**********/

q=q->next;

二、改錯(cuò)題:給定程序MODII.C中函數(shù)firn的功能是:用選擇法對(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

fbr(i=j;i<n;i++)

if(a[i]<a[p])

/************砧und************/

P=j;

t=a[p];a[p]=a[j];a[j]=t;

}

)

main()

(

inta[N]={9,6,83-1),i,m=5;

printf("排序前的數(shù)據(jù):");

for(i=0;i<m;i++)printf("%d",a[i]):printf("\iin);

fun(a,m);

printf("排序后的數(shù)據(jù)巧;

for(i=0;i<m;i++)printf(n%dH,a[i]);printfCXn1');

)

解題答案:

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

P=j;

/************foiind************/

p=i;

三、程序題:請(qǐng)編寫一個(gè)函數(shù)fun,它的功能是:求出1到m之間(含m)能被7或11整除的所有整數(shù)放在

數(shù)組a中,通過n返回這些數(shù)的個(gè)數(shù)。例如,若傳送給m的值為50,則程序輸出:

711142122283335424449

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

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入

你編寫的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

#defineM100

voidfun(intm,int*a,int*n)

(

)

main()

{intaa[M],n,k:

voidNONO();

fun(50,aa,&n);

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

if((k+l)%20==0)printfC\n");

elseprintf(n%4d",aa[k]);

printf("\n");

NONO();

I

voidNONO()

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

FILE*fp,*wf;

inti,n,j,k,aa[M],sum;

fp=fopen(Min.dat",nr");

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

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

fscanf(fp,&j);

fun(j,aa,&n);

sum=0;

for(k=0;k<n;k++)sum+=aa[k];

fprintf(wf,"%d\n'\sum);

}

fclose(fp);

fclose(wf);

}

參考答案:

inti;

*n=0;

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

if((i%7==0)II(i%11==0))a[(*n)++]=i;

)

#################################

第08套:

?、填空題:給定程序中,函數(shù)fun的功能是:在帶有頭結(jié)點(diǎn)的單向鏈表中,查找數(shù)據(jù)域中值為ch的結(jié)點(diǎn)。

找到后通過函數(shù)值返回該結(jié)點(diǎn)在鏈表中所處的順序號(hào);若不存在值為ch的結(jié)點(diǎn),函數(shù)返回0值。

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

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

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

給定源程序:

#include<stdio.h>

#include<stdlib.h>

#defineN8

typedefstructlist

{intdata;

structlist*next;

}SLIST;

SLIST*creatlist(char*);

voidoutlist(SLIST*);

intfun(SLIST*h,charch)

{SLIST*p;intn=0:

p=h->next;

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

while(p!=___1___)

{n++;

/**********氣und**********/

if(p->data==ch)return___2___;

elsep=p->next;

I

return0;

)

main()

{SLIST*head:intk;charch;

chara[N]={,mVp';g7a,;w';x';rVd,);

hcad=crcatlist(a):

outlist(head);

printf("Entcraletter:");

scanf("%cH,&ch);

/**********拈unci**********/

k=fun(—3一);

if(k=O)printf("\nNotfound!\nM);

elseprintf("Thesequencenumberis:%d\n",k);

}

SLIST*creatlist(char*a)

{SLIST*h,*p,*q;inti;

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

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

{q=(SLIST*)malloc(sizeof(SLIST));

q-xlata=a[i];p->next=q;p=q;

}

p->nexl=O;

returnh;

)

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf("\nThelistisNULL!\n");

else

{printfC'XnHead");

do

{printf("->%c",p->data);p=p->next;)

while(p!=NULL);

printf("->End\n");

)

)

解題答案:

/**********第一空**********/

while(p!=0)

/**********第二空**********/

if(p->data==ch)returnn;

/**********第_^空**********/

k=fun(head,ch);

二、改錯(cuò)題:給定程序M0DI1.C中函數(shù)fun的功能是:刪除p所指字符串中的所有空白字符(包括制表符、

回車符及換行符)。輸入字符串時(shí)用#結(jié)束輸入。

請(qǐng)改正程序中的錯(cuò)誤,使它能輸出正確的結(jié)果。

注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!

給定源程序:

#include<string.h>

#include<stdio.h>

#include<ctype.h>

fun(char*p)

{inti,t;charc[80];

For(i=0,t=0;p[i];i++)

if(!isspace(*(p+i)))c[t++]=p[i];

/***********nd*¥*****¥****/

c[t]="\O";

strcpy(p,c);

)

main()

{charc,s[80];

inti=0;

printf("Inputastring:'1);

c=getchar();

while(c!='#1)

{s[i]=c;i++;c=getchar();}

s[i]=*\O*;

fun(s);

puts(s);

}

解題答案:

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

for(i=0,t=0;p[i];i++)

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

c[t]='\0';

******************************************

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

大寫(若該位置上不是字母,則不轉(zhuǎn)換)。

例如,若輸入"abc4EFg",則應(yīng)輸出“aBc4EFg"°

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

請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。

給定源程序:

#include<stdio.h>

#include<string.h>

voidfun(char*ss)

(

}

main()

{chartt[81];

voidNONO();

printf("\nPleaseenteranstringwithin80characters:\n");gets(tt);

printf("\n\nAfterchanging,thestring\ntt);

fun(tt);

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

NONO0;

)

voidNONO()

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

FILE*fp,*wf;

chartt[81];

inti;

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

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

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

fscanf(fp,"%s",tt);

fun(tt);

fprintf(wf,"%s\n",tt);

)

fclose(fp);

fclose(wf);

}

參考答案:

(

inti;

for(i=1;i<strlen(*ss);i+=2){

if(ss[i]>='a'&&ss[i]<='z')ss[i]-=32;

)

)

##################################

第09套:

一、填空題:給定程序中,函數(shù)fun的功能是:統(tǒng)計(jì)出帶有頭結(jié)點(diǎn)的單向鏈表中結(jié)點(diǎn)的個(gè)數(shù),存放在形參n

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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)論