計(jì)算機(jī)二級(jí)c語(yǔ)言上機(jī)題庫(kù)_第1頁(yè)
計(jì)算機(jī)二級(jí)c語(yǔ)言上機(jī)題庫(kù)_第2頁(yè)
計(jì)算機(jī)二級(jí)c語(yǔ)言上機(jī)題庫(kù)_第3頁(yè)
計(jì)算機(jī)二級(jí)c語(yǔ)言上機(jī)題庫(kù)_第4頁(yè)
計(jì)算機(jī)二級(jí)c語(yǔ)言上機(jī)題庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩38頁(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ù)第03套:一、填空題:給定程序中,函數(shù)fun的功能是:將自然數(shù)1~10以及它們的平方根寫到名為myfile3.txt的文本文件中,然后再順序讀出顯示在屏幕上。#include<math.h>#include<stdio.h>intfun<char*fname>{FILE*fp;inti,n;floatx;

if<<fp=fopen<fname,"w">>==NULL>return0;

for<i=1;i<=10;i++>/**********found**********/

fprintf<___1___,"%d%f\n",i,sqrt<<double>i>>;

printf<"\nSucceed!!\n">;/**********found**********/

___2___;

printf<"\nThedatainfile:\n">;/**********found**********/

if<<fp=fopen<___3___,"r">>==NULL>

return0;

fscanf<fp,"%d%f",&n,&x>;

while<!feof<fp>>

{printf<"%d%f\n",n,x>;fscanf<fp,"%d%f",&n,&x>;}

fclose<fp>;

return1;}main<>{charfname[]="myfile3.txt";

fun<fname>;}解題答案:/**********第一空*********/

fprintf<fp,"%d%f\n",i,sqrt<<double>i>>;

printf<"\nSucceed!!\n">;/**********第二空**********/

fclose<fp>;/**********第三空**********/

if<<fp=fopen<fname,"r">>==NULL>******************************************改錯(cuò)題:給定程序MODI1.C中fun函數(shù)的功能是:將n個(gè)無序整數(shù)從小到大排序。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。給定源程序:#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+1;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<intn,int*z>{inti;

for<i=1;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;

printf<"\n\nBeforesorting%dnumbers:\n",n>;putarr<n,aa>;

fun<n,aa>;

printf<"\nAftersorting%dnumbers:\n",n>;putarr<n,aa>;}解題答案:#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+1;i<n;i++>

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

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ù)不得修改。#include<stdio.h>voidfun<inta,intb,long*c>{}main<>{inta,b;longc;

voidNONO<>;

printf<"Inputa,b:">;

scanf<"%d,%d",&a,&b>;

fun<a,b,&c>;

printf<"Theresultis:%ld\n",c>;

NONO<>;}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;}#########################################第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)容。#include

<stdio.h>#defineN5typedefstructstudent{

longsno;

charname[10];

floatscore[3];}STU;voidfun<char*filename>{FILE*fp;inti,j;

STUs[N],t;/**********found**********/

fp=fopen<filename,__1__>;

fread<s,sizeof<STU>,N,fp>;

fclose<fp>;

for<i=0;i<N-1;i++>

for<j=i+1;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>;}main<>{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\n">;

for<j=0;j<N;j++>

{printf<"\nNo:%ldName:%-8sScores:",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]>;

printf<"\n">;

}}解題答案:/**********第一空**********/

fp=fopen<filename,"rb">;/**********第二空**********/

if<s[i].sno>

s[j].sno>/**********第三空**********/

fwrite<s,sizeof<STU>,N,fp>;

/*二進(jìn)制輸出*/******************************************改錯(cuò)題:給定程序MODI1.C中函數(shù)fun的功能是:在字符串的最前端加入n個(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;/**********found***********/

s=p;

for<i=0;i<n;i++>a[i]='*';

do

{a[i]=*p;

i++;

}/**********found***********/

while<*p++>

a[i]=0;

strcpy<s,a>;}main<>{intn;chars[80];

printf<"\nEnterastring:">;gets<s>;

printf<"\nThestring\"%s\"\n",s>;

printf<"\nEntern<numberof*>:">;scanf<"%d",&n>;

fun<s,n>;

printf<"\nThestringafterinsert:\"%s\"\n",s>;}解題答案:/**********found***********/

p=s;/**********found***********/

while<*p++>;******************************************三、程序題:請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:統(tǒng)計(jì)各年齡段的人數(shù)。N個(gè)年齡通過調(diào)用隨機(jī)函數(shù)獲得,并放在主函數(shù)的age數(shù)組中;要求函數(shù)把0至9歲年齡段的人數(shù)放在d[0]中,把10至19歲年齡段的人數(shù)放在d[1]中,把20至29歲年齡段的人數(shù)放在d[2]中,其余依此類推,把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#defineM11voidfun<int*a,int*b>{}doublernd<>{statict=29,c=217,m=1024,r=0;

r=<r*t+c>%m;return<<double>r/m>;}main<>{intage[N],i,d[M];voidNONO<intd[M]>;

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

printf<"Theoriginaldata:\n">;

for<i=0;i<N;i++>printf<<i+1>%10==0?"%4d\n":"%4d",age[i]>;

printf<"\n\n">;

fun<age,d>;

for<i=0;i<10;i++>printf<"%4d---%4d:%4d\n",i*10,i*10+9,d[i]>;

printf<"Over100:%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<"out.dat","w">;

for<i=0;i<

10;i++>fprintf<wf,"%4d---%4d:%4d\n",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]++;}}doublernd<>{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<stdio.h>#include<stdlib.h>#defineN8typedefstructlist{intdata;

structlist*next;}SLIST;voidfun<SLIST*h,intx>{SLIST*p,*q,*s;

s=<SLIST*>malloc<sizeof<SLIST>>;/**********found**********/

s->data=___1___;

q=h;

p=h->next;

while<p!=NULL&&x>p->data>{/**********found**********/

q=___2___;

p=p->next;

}

s->next=p;/**********found**********/

q->next=___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<"\nHead">;

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

printf<"->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<"\nThelistafterinserting:\n">;outlist<head>;}解題答案:/**********第一空*********/

s->daa=x;/**********第二空**********/

q=p;/**********第三空**********/

q->next=s;******************************************二、改錯(cuò)題:給定程序MODI1.C中函數(shù)fun的功能是:計(jì)算正整數(shù)num的各位上的數(shù)字之積。例如,若輸入:252,則輸出應(yīng)該是:20。若輸入: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;/************found************/

num\=10;

}while<num>;

return<k>;}main<>{longn;

printf<"\nPleaseenteranumber:">;scanf<"%ld",&n>;

printf<"\n%ld\n",fun<n>>;}解題答案:/************found************/

longk=1;

/************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>{}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=fopen<"in.dat","r">;

wf=fopen<"out.dat","w">;

for<i=0;i<

10;i++>{

for<j=0;j<

5;j++>fscanf<fp,"%f,",&score[j]>;

aver=fun<score,5>;

fprintf<wf,"%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>#defineN8typedefstructlist{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___;

}/**********found**********/

printf<"%d",___2___>;

s->next=NULL;/**********found**********/

free<___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<"\nHead">;

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

printf<"->End\n">;

}}main<>{SLIST*head;

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

head=creatlist<a>;

printf<"\nOutputfromhead:\n">;outlist<head>;

printf<"\nOutputfromtail:\n">;

while<head->next!=NULL>{

fun<head>;

printf<"\n\n">;

printf<"\nOutputfromheadagain:\n">;outlist<head>;

}}解題答案:/**********第一空**********/

t=t->next;/**********第二空**********/

printf<"%d",t->data>;/**********第三空**********/

free<t>;******************************************二、改錯(cuò)題:給定程序MODI1.C中函數(shù)fun的功能是:將字符串中的字符按逆序輸出,但不改變字符串中的內(nèi)容。例如,若字符串為abcd,則應(yīng)輸出:dcba。請(qǐng)改正程序中的錯(cuò)誤,使它能計(jì)算出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include<stdio.h>/************found************/fun<chara>{if<*a>

{fun<a+1>;/************found************/

printf<"%c"*a>;

}}main<>{chars[10]="abcd";

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<"Input2thstring:">;

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.dat","r">;

wf=fopen<"out.dat","w">;

for<i=0;i<

10;i++>{

fscanf<fp,"%s%s",a,b>;

fprintf<wf,"%s\n",fun<a,b>>;

}

fclose<fp>;

fclose<wf>;參考答案:{inti;char*p=s,*q=t;for<i=0;*p&&*q;i++>{p++;q++;}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é)果。注意:源程序存放在考生文件夾的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include<stdio.h>#include<stdlib.h>#defineN8typedefstructlist{intdata;

structlist*next;}SLIST;voidfun<SLIST*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;/**********found**********/

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<"\nHead">;

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

printf<"->End\n">;

}}main<>{SLIST*head;inta[N]={1,2,2,3,4,4,4,5};

head=creatlist<a>;

printf<"\nThelistbeforedeleting:\n">;outlist<head>;

fun<head>;

printf<"\nThelistafterdeleting:\n">;outlist<head>;}解題答案:/**********found**********/

free<q>;/**********found**********/

q=p->next;

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

q=q->next;******************************************二、改錯(cuò)題:給定程序MODI1.C中函數(shù)fun的功能是:用選擇法對(duì)數(shù)組中的n個(gè)元素按從小到大的順序進(jìn)行排序。請(qǐng)修改程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行和刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include<stdio.h>#defineN20voidfun<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<"排序后的數(shù)據(jù):">;

for<i=0;i<

m;i++>printf<"%d",a[i]>;printf<"\n">;}解題答案:/************found************/

p=j;

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

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>#defineM100voidfun<intm,int*a,int*n>{}main<>{intaa[M],n,k;

voidNONO<>;

fun<50,aa,&n>;

for<k=0;k<

n;k++>

if<<k+1>%20==0>printf<"\n">;

elseprintf<"%4d",aa[k]>;

printf<"\n">;

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

FILE*fp,*wf;

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

fp=fopen<"in.dat","r">;

wf=fopen<"out.dat","w">;

for<i=0;i<

10;i++>{

fscanf<fp,"%d,",&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>||<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>#defineN8typedefstructlist{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++;/**********found**********/

if<p->data==ch>return___2___;

elsep=p->next;

}

return0;}main<>{SLIST*head;intk;charch;

chara[N]={'m','p','g','a','w','x','r','d'};

head=creatlist<a>;

outlist<head>;

printf<"Enteraletter:">;

scanf<"%c",&ch>;/**********found**********/

k=fun<___3___>;

if<k==0>printf<"\nNotfound!\n">;

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->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<"->%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ò)題:給定程序MODI1.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];/************found************/

For<i=0,t=0;p[i];i++>

if<!isspace<*<p+i>>>c[t++]=p[i];/************found************/

c[t]="\0";

strcpy<p,c>;}main<>{charc,s[80];

inti=0;

printf<"Inputastring:">;

c=getchar<>;

while<c!='#'>

{s[i]=c;i++;c=getchar<>;}

s[i]='\0';

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\n

\"%s\"",tt>;

fun<tt>;

printf<"\nbecomes\n

\"%s\"\n",tt>;

NONO<>;}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所指的存儲(chǔ)單元中。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include<stdio.h>#include<stdlib.h>#defineN8typedefstructlist{intdata;

structlist*next;}SLIST;SLIST*creatlist<int*a>;voidoutlist<SLIST*>;voidfun<SLIST*h,int*n>{SLIST*p;/**********found**********/

___1___=0;

p=h->next;

while<p>

{<*n>++;/**********found**********/

p=p->___2___;

}}main<>{SLIST*head;

inta[N]={12,87,45,32,91,16,20,48},num;

head=creatlist<a>;outlist<head>;/**********found**********/

fun<___3___,&num>;

printf<"\nnumber=%d\n",num>;}SLIST*creatlist<inta[]>{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<"ThelistisNULL!\n">;

else

{printf<"\nHead">;

do

{printf<"->%d",p->data>;p=p->next;}

while<p!=NULL>;

printf<"->End\n">;

}}解題答案:/**********第一空**********/

*n=0;/**********第二空**********/

p=p->next;/**********第三空**********/

fun<head,&num>;******************************************二、改錯(cuò)題:給定程序MODI1.C中函數(shù)fun的功能是:求出s所指字符串中最后一次出現(xiàn)的t所指子字符串的地址,通過函數(shù)值返回,在主函數(shù)中輸出從此地址開始的字符串;若未找到,則函數(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í),則程序輸出未找到信息:notbefound!。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include

<stdio.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;}main<>{

chars[100],t[100],*p;

printf<"\nPleaseenterstringS:">;scanf<"%s",s>;

printf<"\nPleaseentersubstringt:">;scanf<"%s",t>;

p=fun<s,t>;

if<p>printf<"\nTheresultis:%s\n",p>;

elseprintf<"\nNotfound!\n">;}解題答案:/************found************/

a=NULL;/************found************/

if<*r==*p>******************************************三、程序題:函數(shù)fun的功能是:將s所指字符串中除了下標(biāo)為偶數(shù)、同時(shí)ASCII值也為偶數(shù)的字符外,其余的全都刪除;串中剩余字符所形成的一個(gè)新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為:"ABCDEFG123456",其中字符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)刪除,其它依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"246"。注意:部分源程序存在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。給定源程序:#include<stdio.h>#include<string.h>voidfun<char*s,chart[]>{}main<>{

chars[100],t[100];

voidNONO<>;

printf<"\nPleaseenterstringS:">;scanf<"%s",s>;

fun<s,t>;

printf<"\nTheresultis:%s\n",t>;

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

chars[100],t[100];

FILE*rf,*wf;

inti;

rf=fopen<"in.dat","r">;

wf=fopen<"out.dat","w">;

for<i=0;i<

10;i++>{

fscanf<rf,"%s",s>;

fun<s,t>;

fprintf<wf,"%s\n",t>;

}

fclose<rf>;

fclose<wf>;參考答案:voidfun<char*s,chart[]>{inti,j=0;for<i=0;i<

strlen<s>;i+=2>if<s[i]%2==0>t[j++]=s[i];t[j]=0;}#################################第10套:一、填空題:給定程序中,函數(shù)fun的功能是:計(jì)算出帶有頭結(jié)點(diǎn)的單向鏈表中各結(jié)點(diǎn)數(shù)據(jù)域中值之和作為函數(shù)值返回。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include<stdio.h>#include<stdlib.h>#defineN8typedefstructlist{intdata;

structlist*next;}SLIST;SLIST*creatlist<int*>;voidoutlist<SLIST*>;intfun<SLIST*h>{SLIST*p;ints=0;

p=h->next;

while<p>

{/**********found**********/

s+=p->___1___;/**********found**********/

p=p->___2___;

}

returns;}main<>{SLIST*head;

inta[N]={12,87,45,32,91,16,20,48};

head=creatlist<a>;outlist<head>;/**********found**********/

printf<"\nsum=%d\n",fun<___3___>>;}SLIST*creatlist<inta[]>{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<"ThelistisNULL!\n">;

else

{printf<"\nHead">;

do

{printf<"->%d",p->data>;p=p->next;}

while<p!=NULL>;

printf<"->End\n">;

}}解題答案:/**********第一空**********/

s+=p->data;/**********第二空**********/

p=p->next;/**********第三空**********/

printf<"\nsum=%d\n",fun<head>>;******************************************二、改錯(cuò)題:給定程序MODI1.C中函數(shù)fun的功能是:將s所指字符串中出現(xiàn)的與t1所指字符串相同的子串全部替換成t2所指字符串,所形成的新串放在w所指的數(shù)組中。在此處,要求t1和t2所指字符串的長(zhǎng)度相同。例如,當(dāng)s所指字符串中的內(nèi)容為:"abcdabfab",t1所指子串中的內(nèi)容為:"ab",t2所指子串中的內(nèi)容為:"99"時(shí),結(jié)果在w所指的數(shù)組中的內(nèi)容應(yīng)為:"99cd99f99"。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include

<stdio.h>#include

<string.h>voidfun<char*s,char*t1,char*t2,char*w>{

char*p,*r,*a;

strcpy<w,s>;

while<*w>

{p=w;r=t1;/************found************/

while<r>

if<*r==*p>{r++;p++;}

elsebreak;

if<*r=='\0'>

{a=w;r=t2;

while<*r>{/************found************/

*a=*r;a++;r++

}

w+=strlen<t2>;

}

elsew++;

}}main<>{

chars[100],t1[100],t2[100],w[100];

printf<"\nPleaseenterstringS:">;scanf<"%s",s>;

printf<"\nPleaseentersubstringt1:">;scanf<"%s",t1>;

printf<"\nPleaseentersubstringt2:">;scanf<"%s",t2>;

if<strlen<t1>==strlen<t2>>{

fun<s,t1,t2,w>;

printf<"\nTheresultis:%s\n",w>;

}

elseprintf<"Error:strlen<t1>!=strlen<t2>\n">;}解題答案:/************found************/

while<*r>/************found************/

*a=*r;a++;r++;******************************************三、程序題:函數(shù)fun的功能是:將s所指字符串中下標(biāo)為偶數(shù)的字符刪除,串中剩余字符形成的新串放在t所指數(shù)組中。例如,當(dāng)s所指字符串中的內(nèi)容為:"ABCDEFGHIJK",在t所指數(shù)組中的內(nèi)容應(yīng)是:"BDFHJ"。注意:部分源程序存在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。給定源程序:#include<stdio.h>#include<string.h>voidfun<char*s,chart[]>{}main<>{

chars[100],t[100];

voidNONO<>;

printf<"\nPleaseenterstringS:">;scanf<"%s",s>;

fun<s,t>;

printf<"\nTheresultis:%s\n",t>;

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

chars[100],t[100];

FILE*rf,*wf;

inti;

rf=fopen<"in.dat","r">;

wf=fopen<"out.dat","w">;

for<i=0;i<

10;i++>{

fscanf<rf,"%s",s>;

fun<s,t>;

fprintf<wf,"%s\n",t>;

}

fclose<rf>;

fclose<wf>;}參考答案:voidfun<char*s,chart[]>{inti,j=0;for<i=1;i<

strlen<s>;i+=2>t[j++]=s[i];t[j]=0;}#################################第11套一、人員的記錄由編號(hào)和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中,且編號(hào)唯一。函數(shù)fun的功能是:找出指定編號(hào)人員的數(shù)據(jù),作為函數(shù)值返回,由主函數(shù)輸出,若指定編號(hào)不存在,返回?cái)?shù)據(jù)中的編號(hào)為空串。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include<stdio.h>#include<string.h>#defineN8typedefstruct{charnum[10];

intyear,month,day;}STU;/**********found**********/___1___fun<STU*std,char*num>{inti;STUa={"",9999,99,99};

for<i=0;i<N;i++>/**********found**********/

if<strcmp<___2___,num>==0>/**********found**********/

return<___3___>;

returna;}main<>{STUstd[N]={{"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1},{"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15},{"777777",1983,6,22},{"888888",1984,8,19}};

STUp;charn[10]="666666";

p=fun<std,n>;

if<p.num[0]==0>

printf<"\nNotfound!\n">;

else

{printf<"\nSucceed!\n">;

printf<"%s%d-%d-%d\n",p.num,p.year,p.month,p.day>;

}}解題答案:/**********第一空**********/STU

fun<STU*std,char*num>/**********第二空**********/

if<strcmp<std[i].num,num>==0>/**********第三空**********/

return<std[i]>;******************************************二、改錯(cuò)題:給定程序MODI1.C中函數(shù)fun的功能是:從s所指字符串中,找出與t所指字符串相同的子串的個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)s所指字符串中的內(nèi)容為:"abcdabfab",t所指字符串的內(nèi)容為:"ab",則函數(shù)返回整數(shù)3。請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include

<stdio.h>#include

<string.h>intfun<char*s,char*t>{

intn;char*p,*r;

n=0;

while<*s>

{p=s;r=t;

while<*r>

if<*r==*p>{/************found************/

r++;p++

}

elsebreak;/************found************/

if<r=='\0'>

n++;

s++;

}

returnn;}main<>{

chars[100],t[100];intm;

printf<"\nPleaseenterstringS:">;scanf<"%s",s>;

printf<"\nPleaseentersubstringt:">;scanf<"%s",t>;

m=fun<s,t>;

printf<"\nTheresultis:m=%d\n",m>;}解題答案:/************found************/

r++;

p++;/************found************/

if<*r=='\0'>******************************************三、程序題:函數(shù)fun的功能是:將s所指字符串中ASCII值為偶數(shù)的字符刪除,串中剩余字符形成一個(gè)新串放在t所指的數(shù)組中。例如,若s所指字符串中的內(nèi)容為:"ABCDEFG12345",其中字符B的ASCII碼值為偶數(shù)、…、字符2的ASCII碼值為偶數(shù)、…都應(yīng)當(dāng)刪除,其它依此類推。最后t所指的數(shù)組中的內(nèi)容應(yīng)是:"ACEG135"。注意:部分源程序存在文件PROG1.C中。請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語(yǔ)句。給定源程序:#include<stdio.h>#include<string.h>voidfun<char*s,chart[]>{}main<>{

chars[100],t[100];

printf<"\nPleaseenterstringS:">;scanf<"%s",s>;

fun<s,t>;

printf<"\nTheresultis:%s\n",t>;

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

chars[100],t[100];

FILE*rf,*wf;

inti;

rf=fopen<"in.dat","r">;

wf=fopen<"out.dat","w">;

for<i=0;i<

10;i++>{

fscanf<rf,"%s",s>;

fun<s,t>;

fprintf<wf,"%s\n",t>;

}

fclose<rf>;

fclose<wf>;參考答案:voidfun<char*s,chart[]>{inti,j=0;for<i=0;i<

strlen<s>;i++>if<s[i]%2>t[j++]=s[i];t[j]=0;}#################################第12套:一、填空題:人員的記錄由編號(hào)和出生年、月、日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中。函數(shù)fun的功能是:找出指定出生年份的人員,將其數(shù)據(jù)放在形參k所指的數(shù)組中,由主函數(shù)輸出,同時(shí)由函數(shù)值返回滿足指定條件的人數(shù)。請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。注意:源程序存放在考生文件夾的BLANK1.C中。不得增行或刪行,也不得更改程序的結(jié)構(gòu)!給定源程序:#include<stdio.h>#defineN8typedefstruct{intnum;

intyear,month,day;}STU;intfun<STU*s

溫馨提示

  • 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)論