國(guó)家計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)_第1頁(yè)
國(guó)家計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)_第2頁(yè)
國(guó)家計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)_第3頁(yè)
國(guó)家計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)_第4頁(yè)
國(guó)家計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)_第5頁(yè)
已閱讀5頁(yè),還剩77頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

填空

L給定程序中,函數(shù)fun的功能是:在帶有頭結(jié)點(diǎn)的單向鏈表中,查找數(shù)據(jù)域中值為ch的結(jié)點(diǎn)。找到后通過(guò)

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

intfun(SLIST*h,charch)

{SLIST*p;intn=0;p=h->next;

while(p!=0)

{n++;

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

elsep=p->next;}

return0;}

main()

{SLIST*head;intk;charch;char=

head=creatlist(a);

outlist(head);

printf(z,Enteraletter/7);

scanf(〃%c〃,&ch);

k=fun(head,ch);

if(k==0)printfC\nNotfoundIW);

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

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

單元中。

voidfun(SLIST*h,int*n)

{SLIST*p;

(*n)=0;

p=h->next;

while(p)

{(*n)++;

p=p->next;}}

main()

{SLIST*head;

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

head=creatlist(a);outlist(head);

fun(head,&num);

printf(〃\nnumber二%d\n〃,num);}

3.給定程序中,函數(shù)fun功能計(jì)算出帶有頭結(jié)點(diǎn)單向鏈表中各結(jié)點(diǎn)數(shù)據(jù)域之和為函數(shù)值返回

intfun(SLIST*h)

{SLIST*p;ints=0;

p=h->next;

while(p)

{s+=p->data;

p=p->next;}

returns;}

main()

{SLIST*head;

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

head=creatlist(a);outlist(head);

printf(,,\nsum=%d\nz/,fun(head));}

4.人員的記錄由編號(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)為空串。

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

STUfun(STU*std,char*num)

{inti;STUa={〃〃,9999,99,99};

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

if(strcmp(std[i],num)==0)

return(std[i]);

returna;}

5.人員的記錄由編號(hào)和出生年月日組成,N名人員的數(shù)據(jù)已在主函數(shù)中存入結(jié)構(gòu)體數(shù)組std中。函數(shù)fun功

能是:找出指定出生年份的人員,將其數(shù)據(jù)放在形參k所指的數(shù)組中,由主函數(shù)輸出,同時(shí)由函數(shù)值返回滿

足指定條件的人數(shù)。

intfun(STU*std,STU*k,intyear)

{inti,n=0;

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

if(std[i].year==year)

k[n++]=std[i];

return(n);)

6,給定程序通過(guò)定義并賦初值方式,利用結(jié)構(gòu)體變量存儲(chǔ)了一名學(xué)生學(xué)號(hào)姓名和3門課成績(jī)。函數(shù)fun功能

將該學(xué)生各科成績(jī)都乘以一系數(shù)a

voidshow(STUtt)

{inti;

printf(z,%d%s:z,,tt.num,tt.name);

for(i=0;i<3;i++)printf(,z%5.Ifz,,tt.score[i]);

printf(〃\n〃);}

voidmodify(STU*ss,floata)

{inti;

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

ss->score[i]*=a;}

main()

{STUstd={1,"Zhanghua",76.5,78.0,82.0};

floata;

printf(z,\nTheoriginalnumberandnameandscores:\n〃);show(std);

printf(,z\nlnputanumber:〃);scanf&a);

modify(&std,a);

printf(〃\nAresultofmodifying:\n〃);

show(std);}

7.給定程序中函數(shù)fun功能將形參指針?biāo)附Y(jié)構(gòu)體數(shù)組中三個(gè)元素按num成員進(jìn)行升序排列

voidfun(PERSONstd[3]))

{PERSONtemp;

if(std[0].num>std[l].num)

{temp=std[0];std[0]=std[l];std[l]=temp;}

if(std[0].num>std[2].num)

{temp=std[0];std[0]=std[2];std[2]=temp;}

if(std[l].num>std[2].num)

{temp=std[l];std[l]=std[2];std[2]=temp;}}

mainO

{PERSONstd[]={5,"Zhanghu”,2,"WangLi”,6,"LinMin”};

inti;

fun(std);

printf(z,\nTheresultis:\n〃);

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

printf(〃%d,%s\n〃,std[i].num,std[i].name);}

8.給定程序中,函數(shù)fun的功能是:將形參std所指結(jié)構(gòu)體數(shù)組中年齡最大者的數(shù)據(jù)作為函數(shù)值返回,并在

main函數(shù)中輸出。

STDfun(STDstd[],intn)

{STDmax;inti;

max=*std;

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

if(max.age<std[i].age)max=std[i];

returnmax;}

main()

{STDstd[5]={〃aaa〃,17,〃bbb〃,16,〃ccc〃,18,〃ddd〃,17,〃eee〃,15};

STDmax;

max=fun(std,5);

printf(z,\nTheresult:\n〃);

printf(,z\nName:%s,Age:%d\n〃,max.name,max.age);}

9.給定程序中,函數(shù)fun功能對(duì)形參ss所指字符串?dāng)?shù)組M個(gè)字符串按長(zhǎng)度由短到長(zhǎng)進(jìn)行排序。ss所指字符

串?dāng)?shù)組中共有M個(gè)字符串且串長(zhǎng)〈N。

voidfun(char(*ss)[N])

{inti,j,k,n[M];chart[N];

for(i=0;i<M;i++)n[i]=strlen(ss[i]);

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

{k=i;

for(j=i+1;j<M;j++)

if(n[k]>n[j])k=j;

if(k!=i)

{strcpy(t,ss[i]);

strcpy(ss[i],ss[k]);

strcpy(ss[k],t);

n[k]=n[i];

}}}

10.給定程序中,函數(shù)fun的功能是:求出形參ss所指字符串?dāng)?shù)組中最長(zhǎng)字符串的長(zhǎng)度,其余字符串左邊用

字符*補(bǔ)齊,使其與最長(zhǎng)的字符串等長(zhǎng)。字符串?dāng)?shù)組中共有M個(gè)字符串,且串長(zhǎng)<N。

voidfun(char(*ss)[N])

{inti,j,k=0,n,m,len;

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

{len=strlen(ss[i]);

if(i==0)n=len;

if(len>n){

n=len;k=i;}}

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

if(i!=k)

{m=n;

len=strlen(ssEi]);

for(j=len;j>=0;j-)

ss[i][m—]=ss[i][j];

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

ss[i][j]=*';}}

11.給定程序中已建立一個(gè)帶有頭結(jié)點(diǎn)的單向鏈表,鏈表中的各結(jié)點(diǎn)按結(jié)點(diǎn)數(shù)據(jù)域中的數(shù)據(jù)從小到大順序鏈

接。函數(shù)fun的功能是:把形參x的值放入一個(gè)新結(jié)點(diǎn)并插入到鏈表中,插入后各結(jié)點(diǎn)仍保持從小到大順序

排列。

voidfun(SLIST*h,intx)

{SLIST*p,*q,*s;

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

s->data=x;

q=h;

p=h->next;

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

q=p;

p=p->next;}

s->next=p;

q->next=s;}

12.給定程序的功能是:調(diào)用函數(shù)fun將指定源文件中的內(nèi)容復(fù)制到指定的目標(biāo)文件中,復(fù)制成功時(shí)函數(shù)返

回值為1,失敗時(shí)返回值為0。在復(fù)制的過(guò)程中,把復(fù)制的內(nèi)容輸出到終端屏幕。主函數(shù)中源文件名放在變量

sfname中,目標(biāo)文件名放在變量tfname中。

intfun(char*source,char*target)

{FILE*fs,*ft;charch;

if((fs=fopen(source,〃r〃))==NULL)

return0;

if((ft=fopen(target,〃w"))==NULL)

return0;

printf(,z\nThedatainfile:\n〃);

ch=fgetc(fs);

while(!feof(fs))

{putchar(ch);

fputc(ch,ft);

ch=fgetc(fs);}

fclose(fs);fclose(ft);

printf(〃\n\n〃);

return1;}

13.給定程序中,函數(shù)fun的功能是:將自然數(shù)1?10以及它們的平方根寫(xiě)到名為myfile3.txt的文本文件

中,然后再順序讀出顯示在屏幕上。

intfun(char*fname)

{FILE*fp;inti,n;floatx;

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

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

fprintf(ft,z,%di,sqrt((double)i));

printf(〃\nSucceed!\n〃);

fclose(fp);

printf(〃\nThedatainfile:\n〃);

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

return0;

fscanf(fp,〃%d%f〃,&n,&x);

while(!feof(fp))

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

fclose(fp);

return1;}

14.給定程序功能從鍵盤(pán)輸入若干行文本(每行不超過(guò)80個(gè)字符),寫(xiě)到文件myfile4.txt中,用7(獨(dú)立一行)

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

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

voidWriteText(FILE*fw)

{charstr[81];

printf(,z\nEnterstringwith-1toend:\n〃);

gets(str);

while(strcmp(str,^-l^)!=0){

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

gets(str);}}

voidReadText(FILE*fr)

{charstr[81];

printf(z,\nReadfileandoutputtoscreen:\n〃);

fgets(str,81,fr);

while(!feof(fr)){

printf(〃%s〃,str);

fgets(str,81,fr);}

15.給定程序的功能是調(diào)用fun函數(shù)建立班級(jí)通訊錄。通訊錄中記錄每位學(xué)生的編號(hào)、姓名和電話號(hào)碼。班

級(jí)的人數(shù)和學(xué)生的信息從鍵盤(pán)讀入,每個(gè)人的信息作為一個(gè)數(shù)據(jù)塊寫(xiě)到名為myfile5.dat的二進(jìn)制文件中。

intfun(STYPE*std)

{FILE*fp;inti;

if((fp=fopen(,,myfile5.dat〃,〃wb〃))=NULL)

return(0);

printf(z,\n0utputdatatofile!\n〃);

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

fwrite(&std[i],sizeof(STYPE),1,fp);

fclose(fp);

return(1);)

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

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

voidfun(SLIST*p)

{SLIST*t,*s;

t=p->next;s=p;

while(t->next!=NULL)

{s=t;

t=t->next;}

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

s->next=NULL;

free(t);}

17.給定程序已建立個(gè)帶有頭結(jié)點(diǎn)單向鏈表鏈表中各結(jié)點(diǎn)按數(shù)據(jù)域遞增有序鏈接。fun功能是刪除鏈表中數(shù)據(jù)

域值相同結(jié)點(diǎn)使之只保留一個(gè)

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;

free(q);

q=p->next;}

else

{p=q;

q=q->next;}}}

18.函數(shù)fun的功能是:統(tǒng)計(jì)長(zhǎng)整數(shù)n的各個(gè)位上出現(xiàn)數(shù)字1、2、3的次數(shù),并通過(guò)外部(全局)變量cl、

c2>c3返回主函數(shù)。例如,當(dāng)『123114350時(shí),結(jié)果應(yīng)該為:cl=3c2=lc3=2。

voidfun(longn)

{cl=c2=c3=0;

while(n){/switch(n%10)

{case1:cl++;break;

case2:c2++;break;

case3:c3++;}

n/=10;}}

19.函數(shù)fun的功能是進(jìn)行字母轉(zhuǎn)換。若形參ch中是小寫(xiě)英文字母,則轉(zhuǎn)換成對(duì)應(yīng)的大寫(xiě)英文字母;若ch

中是大寫(xiě)英文字母,則轉(zhuǎn)換成對(duì)應(yīng)的小寫(xiě)英文字母;若是其它字符則保持不變;并將轉(zhuǎn)換后的結(jié)果作為函數(shù)

值返回。

charfun(charch)

{if((ch>=,a)&&(ch<=,z'))

returnch-'a'+'A';

if(isupper(ch))

returnch+'a''A';

returnch;

)

20.給定程序中,函數(shù)fun的功能是:有NXN矩陣,根據(jù)給定的m(m<=N)值,將每行元素中的值均右移m

個(gè)位置,左邊置為0。例如,N=3,m=2,有下列矩陣程序執(zhí)行結(jié)果為

123001

456004

789007

voidfun(int(*t)[N],intm)

{inti,j;

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

{for(j=N-l-m;j>=0;j—)

t[i][j+m]=t[i][j];

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

t[i][j]=O;}}

21.給定程序中,函數(shù)fun功能:求出形參ss所指字符串?dāng)?shù)組中最長(zhǎng)字符串長(zhǎng)度,將其余字符串右邊用字符*

補(bǔ)齊,使其與最長(zhǎng)字符串等長(zhǎng)。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串且串長(zhǎng)〈N。

voidfun(char(*ss)[N])

{inti,j,n,len=0;

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

{n=strlen(ss[i]);

if(i==0)len=n;

if(n>len)len=n;}

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

n=strlen(ss[i]);

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

ss[i][n+j]='*';

ss[i][n+j+1]='\0';}}

22.給定程序中,函數(shù)fun功能:求ss所指字符串?dāng)?shù)組中長(zhǎng)度最長(zhǎng)字符串所在行下標(biāo),作為函數(shù)值返回,并

把其串長(zhǎng)放在形參n所指變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串且串長(zhǎng)CN。

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

intfun(char(*ss)[N],int*n)

{inti,k=0,len=0;

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

{len=strlen(ss[i]);

if(i==0)*n=len;

if(len>*n){*n=len;

k=i;}}

return(k);}

23.給定程序中,函數(shù)fun功能:求ss所指字符串?dāng)?shù)組中長(zhǎng)度最短字符串所在行下標(biāo),作為函數(shù)值返回,并

把其串長(zhǎng)放在形參n所指變量中。ss所指字符串?dāng)?shù)組中共有M個(gè)字符串且串長(zhǎng)〈N。

intfun(char(*ss)[N],int*n)

{inti,k=0,len=N;

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

{len=strlen(ss[i]);

if(i==0)*n=len;

if(len<*n)

{*n=len;

k=i;}}

return(k);}

24.給定程序中,函數(shù)fun的功能是:將s所指字符串中的所有數(shù)字字符移到所有非數(shù)字字符之后,并保持

數(shù)字字符串和非數(shù)字字符串原有的先后次序。例如,形參s所指的字符串為:def35adh3kjsdf7.執(zhí)行結(jié)果

defadhkjsdf3537o

voidfun(char*s)

{inti,j=0,k=0;chartl[80],t2[80];

for(i=0;s[i]!-\0';i++)

if(s[i]>=,0,&&s[i]<='9')

{t2[j]=s[i];j++;}

elsetl[k++]=s[i];

t2[j]=0;tl[k]=0;

for(i=0;i<k;i++)s[i]=tl[i];

for(i=0;i<j;i++)s[k+i]=t2[i];}

25.給定程序中,函數(shù)fun的功能是:在形參s所指字符串中的每個(gè)數(shù)字字符之后插入一個(gè)*號(hào)。例如,形參

s所指的字符串為:def35adh3kjsdf7.結(jié)果def3*5*adh3*kjsdf7*。

voidfun(char*s)

{inti,j,n;

for(i=0;s[i]!=,\0*;i++)

if(s[i]>=0'&&s[i]<=9*)

{n=0;

while(s[i+l+n]!=0)n++;

for(j=i+n+l;j>i;j—)

s[j+l]=s[j];

*';

i=i+l;})

26.給定程序中,fun功能統(tǒng)計(jì)形參s所指字符串中數(shù)字字符出現(xiàn)的次數(shù)并存放在形參t所指變量中,最后

在主函數(shù)中輸出。例形參s所指字符串為abcdef35adgh3kjsdf7。輸出結(jié)果為4

voidfun(char*s,int*t)

{inti,n;

n=0;

for(i=0;s[i]!=(int)NULL;i++)

if(s[i]>=,O"&&s[i]<='9')n++;

*t=n;}

27.給定程序中,函數(shù)fun功能:把形參s所指字符串中下標(biāo)為奇數(shù)字符右移到下一個(gè)奇數(shù)位置,最右邊被

移出字符串字符繞回放到第一個(gè)奇數(shù)位置,下標(biāo)為偶數(shù)字符不動(dòng)(注:字符串的長(zhǎng)度大于等于2)。例如,形

參s所指的字符串為:abcdefgh,執(zhí)行結(jié)果為:ahcbedgf。

voidfun(char*s)

{inti,n,k;charc;

n=0;

for(i=0;s[i]!=,\0*;i++)n++;

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

if(n%2==0)k=n-l;

elsek=n_2;

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

c=s[k];

for(i=k-2;i>=l;i=i-2)s[i+2]=s[i];

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

s[l]=c;}

28.給定程序中,函數(shù)fun的功能是:對(duì)形參s所指字符串中下標(biāo)為奇數(shù)的字符按ASCH碼大小遞增排序,

并將排序后下標(biāo)為奇數(shù)的字符取出,存入形參p所指字符數(shù)組中,形成一個(gè)新串。例如,形參s所指字符串

為:baawrskjghzlicda,執(zhí)行后p所指字符數(shù)組中字符串為:aachjlsw0

voidfun(char*s,char*p)

{inti,j,n,x,t;

n=0;

for(i=0;s[i]!=,\0*;i++)n++;

for(i=l;i<n-2;i=i+2){

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

t=i;

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

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

if(s[t]>sLj])t=j;

if(t!=i)

{x=s[i];s[i]=s[t];s[t]=x;}}

for(i=l,j=0;i<n;i=i+2,j++)p[j]=s[i];

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

p[j]=o;}

29.給定程序中,函數(shù)fun的功能是:將NXN矩陣中元素的值按列右移1個(gè)位置,右邊被移出矩陣的元素繞

回左邊。例如,N=4,有下列矩陣

21121324計(jì)算結(jié)果為:24211213

2516473838251647

2911325454291132

422133101042233

voidfun(int(*t)[N])

{inti,j,x;

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

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

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

x=t[i][N-l];

for(j=N-l;j>0;j—)

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

t[i][0]=x;}}

30.給定程序中,函數(shù)fun的功能是將參數(shù)給定的字符串、整數(shù)、浮點(diǎn)數(shù)寫(xiě)到文本文件中,再用字符串方式

從此文本文件中逐個(gè)讀入,并調(diào)用庫(kù)函數(shù)atoi和atof將字符串轉(zhuǎn)換成相應(yīng)的整數(shù)、浮點(diǎn)數(shù),然后將其顯示

在屏幕上。

voidfun(char*s,inta,doublef)

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

FILEfp;

charstr[100],strl[100],str2[100];

intal;doublefl;

fp=fopen(,zfilel.txt,z,〃w〃);

fprintf(fp,〃%s%d%f\n〃,s,a,f);

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

fclose(fp);

fp=fopenCfilel.txt",〃r〃);

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

fscanf(FP,,z%s%s%s/z,str,strl,str2);

fclose(fp);

al=atoi(strl);

fl=atof(str2);

printf(,z\nTheresult:\n\n%s%d%f\n〃,str,al,fl);}

31.程序通過(guò)定義學(xué)生結(jié)構(gòu)體變量,存儲(chǔ)了學(xué)生的學(xué)號(hào)、姓名和3門課的成績(jī)。所有學(xué)生數(shù)據(jù)均以二進(jìn)制方

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

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

voidfun(char*filename,STUn)

{intp,m;

FILE*fp;

p=sizeof(STU);

m=p*(-1L);

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

fp=fopen(filename,〃rb+〃);

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

fseek(fp,m,SEEK_END);

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

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

fclose(fp);}

32.給定程序blankl.c中,函數(shù)fun的功能是:計(jì)算的前n項(xiàng)之和。若x=2.5,n二15時(shí),函數(shù)值

?52曾/M3

/?)=1+X-—+-------+(-1—.

234!(?-1)!"為:1.917914。

doublefun(doublex,intn)

{doublef,t;inti;

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

f=1;

t=-1;

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

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

t*=(T)*x/i;

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

f+=t;}

returnf;}

33.給定程序blankl.c中,函數(shù)fun的功能是:計(jì)算的前n項(xiàng)。若x=2.5,n=12時(shí),函數(shù)值為:12.182340。

=1+左+不+…+—T

21n\

doublefun(doublex,intn)

{doublef,t;inti;

f=1.0;

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

t=1;

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

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

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

t*=x/i;

f+=t;}

returnf;}

f(x)=1+x+—+???+——<10~b

34.給定程序blankl.c中,函數(shù)fun功能:計(jì)算2!加直到若x=2.5,函數(shù)值為:

12.182494c

doublefun(doublex)

{doublef,t;intn;

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

f=1.0+x;

t=x;

n=1;

do{n++;

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

t*=x/n;

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

f+=t;

}while(fabs(t)>=le-6);

returnf;}

35.給定程序中,函數(shù)fun的功能是:有NXN矩陣,將矩陣的外圍元素順時(shí)針旋轉(zhuǎn)。操作順序是:首先將第

一行元素的值存入臨時(shí)數(shù)組r,然后使第一列成為第一行,最后一行成為第一列,最后一列成為最后一行,

臨時(shí)數(shù)組中的元素成為最后一列。例如,若N=3,有下列矩陣:

123計(jì)算結(jié)果為741

456852

789963

voidfun(int(*t)[N])

{intj,r[N];

for(j=0;j<N;j++)r[j]=t[0][j];

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

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

t[0][N-j-l>t[j][O];

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

t[j][0>t[N-l][j];

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

for(j=N-l;j>=0;j—)

t[N-l][N-l-j]=t[j][N-l];

for(j=N-l;j>=0;j—)

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

t[j][N-l]=r[j];}

36.給定程序中,函數(shù)fun的功能是:有NXN矩陣,以主對(duì)角線為對(duì)稱線,對(duì)稱元素相加并將結(jié)果存放在左

下三角元素中,右上三角元素置為0。例如,若N=3,有下列矩陣:

123計(jì)算結(jié)果為100

456650

78910149

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

voidfun(int(*t)[N])

{inti,j;

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

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

{

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

t[i][j]=t[i][j]+t[j][i];

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

=0;}}}

37.給定程序中,函數(shù)fun的功能是:計(jì)算NXN矩陣的主對(duì)角線元素和反向?qū)蔷€元素之和,并作為函數(shù)值

返回。注意:要求先累加主對(duì)角線元素中的值,然后累加反向?qū)蔷€元素中的值。例如,若N=3,有下列矩

陣:fun函數(shù)首先

123累加1、5、9,然后累加3、

4565、7,函數(shù)的返回值為30。

789

fun(intt[][N],intn)

{inti,sum;

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

sum=0;

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

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

sum+=t[i][i];

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

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

sum+=t[i][n-i-1];

returnsum;}

38.函數(shù)fun的功能是:把形參a所指數(shù)組中的奇數(shù)按原順序依次存放到a[0]、a[l].a[2]、…中,把偶數(shù)

從數(shù)組中刪除,奇數(shù)個(gè)數(shù)通過(guò)函數(shù)值返回。例如:若a所指數(shù)組中數(shù)據(jù)最初排列為:9、1、4、2、3、6、5、

8、7,刪除偶數(shù)后a所指數(shù)組中數(shù)據(jù)為:9、1、3、5、7,返回值為5。

intfun(inta[],intn)

{inti,j;

j=0;

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

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

if(a[i]%2==l)

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

a[j]=a[i];j++;}

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

returnj;}

39.函數(shù)fun的功能是:把形參a所指數(shù)組中的偶數(shù)按原順序依次存放到a[0]、a⑴、a[2]、…中,把奇數(shù)

從數(shù)組中刪除,偶數(shù)個(gè)數(shù)通過(guò)函數(shù)值返回。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:9、1、4、2、3、6、5、

8、7,刪除奇數(shù)后a所指數(shù)組中數(shù)據(jù)為:4、2、6、8,返回值為4。

intfun(inta[],intn)

{inti,j;

j=0;

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

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

if(a[i]%2==0){

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

a[j]=a[i];j++;}

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

returnj;}

40.函數(shù)fun的功能是:把形參a所指數(shù)組中的最小值放在元素a[0]中,接著把形參a所指數(shù)組中的最大值

放在a[l]元素中;再把a(bǔ)所指數(shù)組元素中的次小值放在a[2]中,把a(bǔ)所指數(shù)組元素中的次大值放在a[3];

其余以此類推。例如:若a所指數(shù)組中的數(shù)據(jù)最初排列為:9、1、4、2、3、6、5、8、7;則按規(guī)則移動(dòng)后,

數(shù)據(jù)排列為:1、9、2、8、3、7、4、6、5。形參n中存放a所指數(shù)組中數(shù)據(jù)的個(gè)數(shù)。

voidfun(inta[],intn)

{inti,j,max,min,px,pn,t;

for(i=0;i<n-l;i+=2)

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

max=min=a[i];

px=pn=i;

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

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

if(max<a[j])

{max=a[j];px=j;}

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

if(min>a[j])

{min=a[j];pn=j;}}

if(pn!=i)

{t=a[i];a[i]=min;a[pn]=t;

if(px==i)px=pn;}

if(px!=i+1)

{t=a[i+l];a[i+l]=max;a[px]=t;}}}

41.函數(shù)fun的功能是:把形參a所指數(shù)組中的最大值放在a[0]中,接著求出a所指數(shù)組中最小值放在a[l]

中;再把a(bǔ)所指數(shù)組元素中次大值放在a[2]中,把a(bǔ)數(shù)組元素中次小值放在a[3]中;其余以此類推。例如:

若a所指數(shù)組中的數(shù)據(jù)最初排列為:1、4、2、3、9、6、5、8、7,則按規(guī)則移動(dòng)后,數(shù)據(jù)排列為:9、1、8、

2、7、3、6、4、5o形參n中存放a所指數(shù)組中數(shù)據(jù)的個(gè)數(shù)。

voidfun(int*a,intn)

{inti,j,max,min,px,pn,t;

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

for(i=0;i<n-l;i+=2)

{max=min=a[i];

px=pn=i;

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

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

{if(max<a[j])

{max=a[j];px=j;}

if(min>a[j])

{min=a[j];pn=j;}}

if(px!=i)

{t=a[i];a[i]=max;a[px]=t;

if(pn==i)pn=px;}

if(pn!=i+1)

{t=a[i+l];a[i+l]=min;a[pn]=t;}}}

42.函數(shù)fun的功能是:將形參a所指數(shù)組中的前半部分元素中的值和后半部分元素中的值對(duì)換。形參n中

存放數(shù)組中數(shù)據(jù)的個(gè)數(shù),若n為奇數(shù),則中間的元素不動(dòng)。例如:若a所指數(shù)組中的數(shù)據(jù)依次為:1、2、3、

4、5、6、7、8、9,則調(diào)換后為:6、7、8、9、5、1、2、3、4。

voidfun(inta[],intn)

{inti,t,p;

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

p=(n%2==0)?n/2:n/2+l;

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

{t=a[i];

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

a[i]=a[p+i];

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

a[p+i]=t;}}

43.函數(shù)fun的功能是:逆置數(shù)組元素中的值。例如:若a所指數(shù)組中的數(shù)據(jù)依次為:1、2、3、4、5、6、7、

8、9,則逆置后依次為:9、8、7、6、5、4、3、2、1。形參n給出數(shù)組中數(shù)據(jù)個(gè)數(shù)。

voidfun(inta[],intn)

{inti,t;

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

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

{t=a[i];

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

a[i]=a[n-l-i];

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

a[n―i.—]]~t,}}

44.fun功能是進(jìn)行數(shù)字字符轉(zhuǎn)換.若形參ch中是數(shù)字字符,0'?'9'則'0'轉(zhuǎn)換成'9'T'轉(zhuǎn)換成'8''2'轉(zhuǎn)換成

'7'…'9'轉(zhuǎn)換成'0';若其它字符則保持不變并將轉(zhuǎn)換后結(jié)果作為函數(shù)值返回

charfun(charch)

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

if(ch>='O'&&ch〈二'9')

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

return'9'-(ch,O');

returnch;}

45.函數(shù)fun功能是:統(tǒng)計(jì)所有小于等于n(n>2)的素?cái)?shù)的個(gè)數(shù),素?cái)?shù)的個(gè)數(shù)作為函數(shù)值返回。

intfun(intn)

{inti,j,count=0;

printf(z,\nTheprimenumberbetween3to%d\n〃,n);

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

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

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

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

if(i%j==0)

break;

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

if(j>=i)

{count++;printf(count%15?〃%5d〃:〃\n%5d〃,i);}}

returncount;}

46.用篩選法可得到2~n(n<10000)之間所有素?cái)?shù),方法是首先從素?cái)?shù)2開(kāi)始將所有2倍數(shù)從數(shù)表中刪去(把數(shù)

表中相應(yīng)位置值置成0);接著從數(shù)表中找下一個(gè)非0數(shù)并從數(shù)表中刪去該數(shù)所有倍數(shù);依此類推直到所找下一

個(gè)數(shù)等于n為止.這樣會(huì)得到一個(gè)序列:23571113171923…函數(shù)fun用篩選法找出所有小于等于n的素?cái)?shù),并

統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)作為函數(shù)值返回。

intfun(intn)

{inta[10000],i,j,count=0;

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

i=2;

while(i<n){/**********found**********/

for(j=a[i]*2;j<=n;j+=a[i])

a[j]=0;

i++;

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

while(a[i]==0)

i++;}

printf(,z\nTheprimenumberbetween2to%d\n〃,n);

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

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

if(a[i]!=0)

{count++;printf(count%15?〃%5d〃:〃\n%5d〃,a[i]);}

returncou}

47.甲乙丙丁四人同時(shí)開(kāi)始放鞭炮,甲每隔tl秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4

秒放一次,每人各放n次.fun功能是根據(jù)形參提供值,求出總共聽(tīng)到多少次鞭炮聲作為函數(shù)值返回.注意當(dāng)幾

個(gè)鞭炮同時(shí)炸響,只算一次響聲,第一次響聲是在第0秒.例若tl=7,t2=5,t3=6,t4=4,n=10,總共可聽(tīng)到28

次鞭炮聲

SdefineOK(i,t,n)((i%t==O)&&(i/t<n))

intfun(inttl,intt2,intt3,intt4,intn)

{intcount,t,maxt=tl;

if(maxt<t2)maxt=t2;

if(maxt<t3)maxt=t3;

if(maxt<t4)maxt=t4;

count=l;/*給count賦初值*/

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

for(t=l;t<maxt*(nT);t++)

{if(OK(t,tl,n)||OK(t,t2,n)||OK(t,t3,n)||OK(t,t4,n))count++;}

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

returncount;}

48.fun功能是從三個(gè)形參abc中找出中間那個(gè)數(shù)作為函數(shù)值返回.例當(dāng)a=3b=5c=4時(shí)中數(shù)為4.

intfun(inta,intb,intc)

{intt;

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

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

returnt;}

49.給定程序中,函數(shù)fun功能將形參給定字符串整數(shù)浮點(diǎn)數(shù)寫(xiě)到文本文件中,再用字符方式從此文本文件

中逐個(gè)讀入并顯示在終端屏幕上

voidfun(char*s,inta,doublef)

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

FILE*fp;

charch;

fp=fopen(z,filel.txtz,,〃w〃);

fprintf(fp,〃%s%d%f\n〃,s,a,f);

fclose(fp);

fp=fopen(z,filel.txtz,,〃r〃);

printf(,z\nTheresult:\n\n〃);

ch=fgetc(fp);

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

while(!feof(fp)){

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

putchar(ch);ch=fgetc(fp);}

putchar(,\n,);

fclose(fp);}

50.程序通過(guò)定義學(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所指的文件中,覆蓋原來(lái)的文件內(nèi)容。

voidfun(char*filename)

{FILE*fp;inti,j;

STUs[N],t;

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

fp=fopen(filename,〃rb〃);

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>s[j].sno)

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

fp=fopen(filename,〃wb〃);

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

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

fclose(fp);}

51.給定程序中,函數(shù)fun的功能是:找出100至x(xW999)之間各位上的數(shù)字之和為15的所有整數(shù),然

后輸出;符合條件的整數(shù)個(gè)數(shù)作為函數(shù)值返回。例如,當(dāng)x值為500時(shí),各位數(shù)字之和為15的整數(shù)有:159、

168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、

447、456、465、474、483>492。共有26個(gè)。

fun(intx)

{intn,si,s2,s3,t;

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

n=0;

t=100;

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

while(t<=x)

{sl=t%10;s2=(t/10)%10;s3=t/100;

if(sl+s2+s3==15)

{printf(,,%d”,t);

n++;}

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

++t;}

returnn;}

52.給定程序中fun功能找出100?999之間(含100和999)所有整數(shù)中各位上數(shù)字之和為x(x為一正整數(shù))

整數(shù)然后輸出;符合條件整數(shù)個(gè)數(shù)作為函數(shù)值返回.例如,當(dāng)x值為5時(shí),100?999之間各位上數(shù)字之和為5

的整數(shù)有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、5000共有15個(gè)。

當(dāng)x值為27時(shí),各位數(shù)字之和為27的整數(shù)是:999o只有1個(gè)。

fun(intx)

{intn,si,s2,s3,t;

n=0;

t=100;

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

while(t<=999){

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

sl=t%10;s2=(t/10)%10;s3=t/100;

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

if(sl+s2+s3==x)

{printf(z,%d〃,t);

n++;}

t++;}

returnn;}

53.給定程序中fun功能將形參s所指字符串中所有字母字符順序前移其它字符順序后移,處理后新字符串

首地址作為函數(shù)值返回.例s所指字符串為asdl23fgh543df,處理后新字符串a(chǎn)sdfghdf123543。

char*fun(char*s)

{inti,j,k,n;char*p,*t;

n=strlen(s)+l;

t=(char*)malloc(n*sizeof(char));

p=(char*)malloc(n*sizeof(char));

j=0;k=0;

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

{if(((s[i]>='a')&&(s[i"='z'))||((s[i]>='A')&&(s[i"='Z'))){

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

t[j]=*(s+i);j++;}

else

{p[k]=s[i];k++;}}

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

for(i=0;i<k;i++)t[j+i]=p[i];

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

t[j+k]=0;

returnt;}

54.給定程序中,函數(shù)fun功能:計(jì)算形參x所指數(shù)組中N個(gè)數(shù)平均值(規(guī)定所有數(shù)均為正數(shù)),作為函數(shù)值

返回;并將大于平均值數(shù)放在形參y所指數(shù)組中,在主函數(shù)中輸出。例如有10個(gè)正數(shù):4630324061745

154826,平均值為:30.500000o主函數(shù)中輸出:4632404548

doublefun(doublex[],double*y)

{inti,j;doubleav;

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

av=0;

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

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

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

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

if(x[i]>av)y[j++]=x[i];

yLj]=-l;

returnav;}

55.給定程序中,函數(shù)fun的功能是將a和b所指的兩個(gè)字符串轉(zhuǎn)換成面值相同的整數(shù),并進(jìn)行相加作為函

數(shù)值返回,規(guī)定字符串中只含9以下數(shù)字字符。例如,主函數(shù)中輸入字符串:32486和12345,在主函數(shù)中

輸出的函數(shù)值為:4483U

longctod(char*s)

{longd=0;

while(*s)

if(isdigit(*s)){

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

d=d*10+*s-'O';

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

x++;)

returnd;

)

longfun(char*a,char*b)

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

returnctod(a)+ctod(b);)

56.給定程序中,函數(shù)fun的功能是:計(jì)算出形參s所指字符串中包含的單詞個(gè)數(shù),作為函數(shù)值返回。為便

于統(tǒng)計(jì),規(guī)定各單詞之間用空格隔開(kāi)。例如,形參s所指的字符串為:ThisisaClanguageprogram.,

函數(shù)的返回值為6。

intfun(char*s)

{intn=0,flag=0;

while(*s!=,\0?)

{if(*s!=''&&flag==0){

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

n++;flag=l;}

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

if(*s=='‘)flag=0;

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

s++;}

returnn;}

57.填空給定程序中,函數(shù)fun功能是:利用指針數(shù)組對(duì)形參ss所指字符串?dāng)?shù)組中的字符串按由長(zhǎng)到短的順

序排序,并輸出排序結(jié)果。ss所指字符串?dāng)?shù)組中共有N個(gè)字符串,且串長(zhǎng)小于M

voidfun(char(*ss)[M])

{char*ps[N],*tp;inti,j,k;

for(i=0;i<N;i++)ps[i]=ss[i];

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

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

k=i;

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

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

if(strlen(ps[k])<strlen(*(ps+j))k=j;

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

tp=ps[i];ps[i]=ps[k];ps[k]=tp;}

printf(z,\nThestringaftersortingbylength:\n\nz,);

for(i=0;i<N;i++)puts(ps[i]);}

58.給定程序中,函數(shù)fun功能是:在形參ss所指字符串?dāng)?shù)組中查找與形參t所指字符串相同的串,找到后

返回該串在字符串?dāng)?shù)組中的位置(下標(biāo)值),未找到則返回ss所指字符串?dāng)?shù)組中共有N

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論