二级C上机考试考试题库、程序设计题_第1页
二级C上机考试考试题库、程序设计题_第2页
二级C上机考试考试题库、程序设计题_第3页
二级C上机考试考试题库、程序设计题_第4页
二级C上机考试考试题库、程序设计题_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计题

答案:

1.函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式

是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c

数的百位和个位上。

例如,当a=45,b=如时调用该函数后,c=4125.

#include<stdio.h>

voidfun(inta,intb,long*c)

{*c=(a/10)*1000+(b/10)*l00+(a%10)*10+(b%10);}

main()

{inta,b;longc;

voidNONO();

printfC'Inputa,b:");scanf("%d,%d'',&a,&b);

fun(a,b,&c);

printf("Theresultis:%d\n,,,c);

NONO();

)

voidNONO()

{FILE*rf,*wf;

inti,a,b;longc;

rf=fopen("in.da「T);

wf=fopenC'ouLdat'';'w");

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

fscanf(rf,"%d,%d”,&a,&b);

fun(a,b,&c);

fprintf(wf,,,a=%d,b=%d,c=%1d\n,,,a,b,c);

)

fclose(rf);

fclose(wf);

}

2.函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:将a数的卜位和个位依次放在c数的个位和百位上,b数的卜位和个位依次放

在c数的千位和十位上。

例如:当a=45,b=L2,调用函数后,c=1524.

#include<stdio.h>

voidfun(inta,intb,long*c)

{*c=(b/10)*l000+(a%10)*100+(b%10)*10+(a/10);}

main()

{inta,b;longc;

voidNONO();

printfC'Inputa,b:");scanf("%d,%cT,&a,&b);

fun(a,b,&c);

printf("Theresultis:%ld\n,,,c);

NONO();

voidNONO()

{FILE*rf,*wf;

inti,a,b;longc;

rf=fopen

wf=fopenC'ouLdat'';'w");

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

fscanf(rf,"%d,%d”,&a,&b);

fun(a,b,&c);

fprintf(wf,,,a=%d,b=%d,c=%1d\n?,,a,b,c);

)

fclose(rf);

fclose(wf);

}

3.函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:将a数的十位和个位依次放在c数的个位和百位上,b数的十位和个位依次放

在c数的十位和千位上。

例如:当a=45,b=12,调用函数后,c=2514.

#include<stdio.h>

voidfun(inta,intb,long*c)

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

main()

{inta,b;longc;

voidNONO();

printf(<4Inputa,b:'');scanf("%d,%cT,&a,&b);

fun(a,b,&c);

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

NONO();

)

voidNONO()

{FILE*rf,*wf;

inti,a,b;longc;

rf=fopen("in.dat“Jr");

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

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

fscanf(rf,M%d,%d”,&a,&b);

fun(a,b,&c);

fprintf(wf,''a=%d,b=%d,c=%1d\n,,,a,b,c);

)

fclose(rf);

fclose(wf);

)

4.函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:将a数的卜位和个位依次放在c数的卜位和千位上,b数的卜位和个位依次放

在C数的百位和个位上。

例如:当a=45,b=12,调用函数后,c=5142.

#include<stdio.h>

voidfun(inta,intb,long*c)

{*c=(%10)*1000+(b/10)*l00+(a/10)*10+(b%10);}

main()

{inta,b;longc;

voidNONO();

printf(<4Inputa,b:'');scanf("%d,%cT,&a,&b);

fun(a,b,&c);

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

NONO();

)

voidNONO()

{FILE*rf,*wf;

inti,a,b;longc;

rf=fopen("in.dat",'T');

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

)

5.请编写一个fun函数,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。

例如:若有5门课程的成绩是:90.5,72,80,61.5,55

则函数的值为:71.80.

#include<stdio.h>

floatfun(float*a,intn)

inti;

floatave=0.0;

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

ave=ave/n;

returnave;

main()

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

voidNONO();

aver=fun(score,5);

printfCAnAveragescoreis:%5.2f\n,,,aver);

NONO();

{FILE*fp,*wf;

inti,j;

floataver,score[5];

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

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

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

for(j=O;j<5;j++)

fscanf(fp,,,%f,,,&score[j]);

aver=fun(score,5);

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

)

fclose(fp);

fclose(wf);

)

6.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字

符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

例如,输出beijing<CR>shanghai<CR>(vCR>为回车键),函数将返回shanghaio

#include<stdio.h>

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

(

inti;

char*p=s,*q=t;

intn=0,m=0;

while(*p)

(

n++;

P++;

)

while(*q)

(

m++;

q++;

)

if(n>=m)

P=s;

else

P=t;

returnp;

)

main()

{chara[20],b[20];

voidNONO();

printf(nInputIthstring:");

gets(a);

printf(MInput2thstring:");

gets(b);

printf(“%s%”,fun(a,b));

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*fp,*wf;

inti;

chara[20],b[20];

fp=fopenC'in.dar/r1,);

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

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

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

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

)

fclose(fp);

fclose(wf);

)

7.请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整

数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:7

11142122283335424449。

#include<stdio.h>

#defineM100

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

(

inti,j=O;*n=O;

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

if(i%7==0lli%ll==0)

(

a[j]=i;

j++;

)

*n=j;

)

main()

{intaa[M],n,k;

voidNONO();

fun(50,aa,&n);

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

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

elseprintf("%4d'\aa[k]);

printf(',\n,');

NONOQ;

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*fp,*wf;

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

fp=fopen(',in.datn,ur,');

wf=fopen("out.dat**,nwM);

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

fscanf(fp,u%d,n,&j);

fun(j,aa,&n);

sum=0;

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

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

)

fclose(fp);

fclose(wf);

)

8.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上字母转换为

大写(若该位置上不是字母,则不转换)。

例如,若输入“abc3EFg”,则应输出“aBc4EFg”。

#include<stdio.h>

#include<string.h>

voidfun(char*ss)

(

inti;

for(i=l;i<strlen(ss);i+=2)

(

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

)

)

main()

{chartt[81];

voidNONO();

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

printf(M\n\nAfterchanging,thestring\nV'%s\'M,,tt);

fun(tt);

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

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*fp,*wf;

chartt[81J;

inti;

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

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

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

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

fun(tt);

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

)

fclose(fp);

fclose(wf);

)

9.函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCH值也为偶数的字符外,

其余的全部删除;串中剩余字符所形成的一个新串放在t所指的数组中。

例如,若是所指字符串中的内容为:“ABCDEFG123456",其中字符A的ASCH码值为奇数,

因此应当删除;其中字符B的ASCH码值为偶数,但在数组中的下标为奇数,因此也应当

删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其

他以此类推。最后t所指的数组中的内容应是:“246”。

#include<stdio.h>

#include<string.h>

voidfun(char*s,chart[])

(

inti,j=0;

for(i=0;i<strlen(s);i+=2)

if(s[i]%2==0)t[j++]=s[i];

tUJ=\O';

)

main()

(

chars[100],t[100];

voidNONO();

printf("\nPleaseenterstringS:");scanf(,,%s",s);

fun(s,t);

printf(n\nTheresultis:%s\n*',t);

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

charsflOOLtflOO];

FILE*rf,*wf;

inti;

rf=fopen(uin.datM,Y');

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

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

fscanf(rf,u%s',,s);

fun(s,t);

fprintf(wf,u%s\n",t);

)

fclose(rf);

fclose(wf);

)

10.函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串

放在t所指数组中。

例如,当s所指字符串中的内容为:“ABCDEFGHIJK”,在t所指数组中的内容应是:

“BDFHJ”。

#include<stdio.h>

#include<string.h>

voidfun(char*s,chart[])

(

inti,j=0;

for(i=l;i<strlen(s);i+=2)

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

tU]=w;

)

main()

(

chars[100],t[100];

voidNONO();

printf(n\nPleaseenterstringS:");scanf(n%sn,s);

fun(s,t);

printf(M\nTheresultis:%s\nH,t);

NONO();

}

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

chars[100],t[1001;

FILE*rf,*wf;

inti;

rf=fopen(uin.datn,Y');

wf=fopen(,'out.dat',,,'wn);

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

fscanf(rf,s);

fun(s,t);

fprintf(wf,n%s\nH,t);

)

fclose(rf);

fclose(wf);

11.函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一

个新串放在t所指的数组中。

例如,若s所指字符串中的内容为:“ABCDEFG12345”,最后t所指的数组中内容应是:

“ACEG135”。

#include<stdio.h>

#include<string.h>

voidfun(char*s,chart[])

(

inti,j=0;

for(i=0;i<strlen(s);i++)

if(s[i]%2)

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

t[jl=O;

)

main()

(

chars[100],t[100];

printf("\nPleaseenterstringS:");scanf("%s",s);

fun(s,t);

printl'CAnTheresultis:%s\n",t);

NONO();

)

NONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

chars[100],t[100];

FILE*rf,*wf;

inti;

rf=fopen(nin.datH;'rM);

wf=fopen(',out.datn,',wn);

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

fscanf(rf,u%sH,s);

fun(s,t);

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

)

fclose(rf);

fclose(wf);

)

12.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编

写函数fun,函数的功能是:找出成绩最高的学生记录,通过形参指针传回主函数(规定只

有一个最高分)。已给出函数的首部,请完成该函数。

#include<stdio.h>

#include<string.h>

#defineN10

typedefstructss

{charnum[10];ints;}STU;

fun(STUa[],STU*s)

(

inti,max=a[0].s,j=0;

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

if(max<a[i].s){

j=i;

max=a[i].s;

)

*s=a[j];

}

main()

{STUa[N]={{"AO1”,81},{“A02”,89},{“A03”,

66},{"A04,\87},{"A05',,77},{"A06H,90},{"A07",79},{"A08',,61},{',A09",80},{,,A10u,71}},m;

inti;

printf("*****Theoriginaldata*****\n");

for(i=0;i<N;i+4-)printf(,,No=%sMark=%d\n",a[i].num,a[i].s);

fun(a,&m);

prim””*****THERESULT*****\n");

printf("Thetop:%s,%d\nH,m.num,m.s);

NONO();

)

NONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*rf,*wf;

STUa[N],m;

inti;

rf=fopen("in.datM,,'rn);

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

for(i=0;i<10;i++)fscanf(rf,M%s%dH,a[i].num,&a[i].s);

fun(a,&m);

fprintf(wf,"Thetop:%s,%d\n",m.num,m.s);

fclose(rf);

fclose(wf);

)

13.程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int[][N],intn),

函数的功能是:使数组左下三角元素中的值乘以n。

例如:若n的值为3,a数组中的值为

II97113971

a=l2381则返回主程序后a数组中的值应为16971

1456111215181

#include<stdio.h>

#include<stdlib.h>

#defineN5

voidfun(inta[][N],intn)

(

inti,j;

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

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

a[i][j]*=n;

)

NONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*rf,*wf;

inti,j,n,a[5][51;

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

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

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

for(j=0;jv5;j++)

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

fscanf(rf,n%d",&n);

fun(a,n);

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

for(j=0;j<5;j++)fprintf(wf,n%4d",a[i][j]);

fprintf(wf,"Vn");

)

fclose(rf);

fclose(wf);

)

main()

{inta[N][N],n,i,j;

printf("*****Thearray*****\n”);

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

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

{a[i][j]=rand()%10;printf("%4d",a[i][j]);}

printf(n\nH);

)

don=rand()%10;while(n>=3);

printf("n=%4d\nu,n);

fun(a,n);

print"”*****THERESULT*****\n");

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

{for(j=O;j<N;j++)printf("%4dn,a[i][j]);

printf(M\nM);

NONO();

14.程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数

fun(inta口[N]),函数的功能是:使数组左下三角的值全部置成0。

II97110971

a=l2381则返怛I主程序后a数组中的值应为10081

1456110001

#include<stdio.h>

#include<stdlib.h>

#defineN5

voidfun(inta[][N])

(

inti,j;

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

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

a[i][j]=O;

)

NONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*rf,*wf;

inti,j,a[5][5];

rf=fopen(nin.dat'W);

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

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

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

fscanf(rf,u%d”,&a[i][j]);

fun(a);

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

for(j=0;j<5;j++)fprintf(wf,H%4d",a[i][j]);

fprintf(wf,"\n");

)

fclose(rf);

fclose(wf);

)

main()

{intalNJLN],i,j;

printf("*****Thearray*****\n”);

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

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

{a[iJ[jJ=rand()%10;printf(M%4dM,a[ij|jj);}

printf(H\n");

fun(a);

printf(nTHERESULT\nn);

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

{for(j=0;j<N;j++)printf(,,%4d,',a[i][j]);

printfCXn1');

}

NONO();

15.请遍一个函数voidfun(inttt[M][N]Jntpp[N]),tt指向一个M行N列的二维数组,求出二维

数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

#include<stdio.h>

#defineM3

#defineN4

voidfun(inttt[M][N],intpp[Nl)

(

inti,j,min,k;

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

min=tt[0][i];k=0;

for(j=l;j<M;j++)

if(min>tt[j][i]){

min=tt[j][i];

k=j;

)

pp[i]=tt[k][i];

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

inti,j,k,m,t[MJ[N],p[NJ;

FILE*rf,*wf;

rf=fopen(',in.dat'V'r,');

wf=fopen(nout.datn,nwM);

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

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

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

fscanf(rf,M%6dn,&t[i]fj]);

)

fun(t,p);

for(k=0;k<N;k++)fprintf(wf,n%4d\p[k]);

fprintf(wf,"\n");

}

fclose(rf);

fclose(wf);

main()

{intt[M][N]={{22,45,56,30},{19,33,45,38},{20,22,66,40}};

intp[N],i,j,k;

printf("Theoriginaldatais:\nn);

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

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

printf("%6d*t[i][j]);

printf("\n");

)

fun(t,p);

printf(n\nTheresultis:\nH);

for(k=0;k<N;k++)printf("%4d",p[k]);

printf(M\nH);

NONO();

16.请编写•个函数unsignedfun(undigndew),w是一个大于10的无符号整数,若w是n(n>=2)

位的整数,函数求出w的低n-1位的数作为函数值返回。

例如:w值为5923,则函数返回923;w值为923则函数返回23。

#include<stdio.h>

unsignedfun(unsignedw)

(

unsignedt,s=O,s1=1,p=0;

t=w;

while(t>10)

(

if(t/10)

p=t%10;

s=s+p*sl;

sl=sl*10;

t=t/10;

)

returns;

)

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

unsignedx;

inti;

FILE*rf,*wf;

rf=fopen(uin.datM,Y');

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

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

fscanf(rf,n%u",&x);

fprintf(wf,U%u\nn,fun(x));

)

fclose(rf);

fclose(wf);

)

main()

{unsignedx;

printf("Enteraunsignedintegernumber:");scanf("%u",&x);

printf("Theoriginaldatais:%u\nH,x);

if(x<10)printf("Dataerror!");

elseprintf(nTheresult:%u\n'\fun(x));

NONOQ;

}

17.请编•个函数fun(char*s),函数的功能是把s所指字符串的内容逆置。

例如:字符串中原有的字符串为:abcdefg,则调用该函数后,串中的内容为:gfedcbao

#include<string.h>

#include<stdio.h>

#defineN81

fun(char*s)

(

charbfN];

inti=0,j;

memset(b,0,N);

for(j=strlen(s)-l;j>=0;j-)b[i++J=s[jJ;

strcpy(s,b);

)

NONO()

{/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

inti;

chara[NJ;

FILE*rf,*wf;

rf=fopen(uin.dat,,,Y');

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

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

fscanf(rf,n%s",a);

fun(a);

fprintf(wf,"%s\nH,a);

)

fclose(rf);

fclose(wf);

main()

{chara[N];

printf("Enterastring:");gets(a);

printf("Theoriginalstringis:'*);puts(a);

fun(a);

printf(H\n");

printf("Thestringaftermodified:");

puts(a);

NONO();

)

18.编写函数fun,函数的功能是:从s所指的字符串中删除给定的字符。同一字母的大、小

写按不同字符处理。

若程序执行时输入字符串为:turbocandborlandC++从键盘上输入字符:n,则输出后变为:

turbocadborlandC++。

#include<stdio.h>

#include<string.h>

voidfun(chars[],charc)

(

char*p=s;

inti=0;

while(*p){

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

P++;

)

s[iJ='\O,;

)

NONO()

(

/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

FILE*rf,*wf;

chars[81],ch,w;

intlen;

rf=fopen(uin.dat,,,Y');

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

fgets(s,80,rf);

fscanf(rf,"%cu,&ch);

len=strlen(s)-1;

w=s[len];

if(w==\rfllw==Ox1a)s[lenj=0;

fun(s,ch);

fprintf(wf,u%sM,s);

fclose(rf);

fclose(wf);

main()

(

staticcharstr[]=nturbocandborlandC++”;

charch;

printf("原始字符串:%s\n”,str);

printf("输入一个字符

scanf(n%c'\&ch);

fun(str,ch);

printf(nstr[]=%s\n",str);

NONO();

)

19.请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII

码降序排列。

例如,原来的字符串为CEAedca,排序后输出为CedcEAa。

#include<stdio.h>

#include<ctype.h>

#include<string.h>

voidfun(char*s,intnum)

(

chart;

inti,j;

for(i=1;i<num-2;i++)

〃对n个元素进行循环选择

for(j=i+l;j<num-1;j++)

if(s[i]<sD])

〃将strm设为最大值,和剩下的j〜n-1进行比较

{

t=s[i];

s[i]=s[j];

s[j]=t;

}

)

NONO()

(

/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

chars[IO];

FILE*rf,*wf;

inti=0;

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

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

while(i<10){

fgets(s,10,rf);

s[7]=0;

fun(s,7);

fprintf(wf,"%s\nH,s);

i++;

)

fclose(rf);

fclose(wf);

)

main()

(

chars[10];

printf("输入7个字符的字符串

gets(s);

fun(s,7);

printf(n\n%s'\s);

NONO();

20.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。

例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,子字符串为:as,则应输出

6.

#include<stdio.h>

#include<string.h>

intfun(char*str,char*substr)

(

intcnt=O;

char*p=str,*q;

while(*p){

q=strstr(p,substr);

if(q==NULL)break;

p=q+strlen(substr);

cnt++;

)

returnent;

}

NONO()

(

/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

charstr[81],substr[3],ch;

intn,len,i=0;

FILE*rf,*wf;

rf=fopen(uin.datM,Y');

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

while(i<5){

fgets(str,80,rf);

fgets(substr,10,rf);

len=strlen(substr)-1;

ch=substr[len];

if(ch=='\n'IIch==Oxla)substr[len]=0;

n=fun(str,substr);

fprintf(wf,u%d\n",n);

i++;

)

fclose(rf);

fclose(wf);

)

main()

(

charstr[81],substr[3];

intn;

printf("输入主字符串:”);

gets(str);

printf("输入子字符串:”);

gets(substr);

puts(str);

puts(substr);

n=fun(str,substr);

printf(',n=%d\n,,,n);

NONO();

)

21.请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非

素数的个数通过k传回。

例如,若输入:17,则应输出:46891012141516,

#include<stdio.h>

voidfun(intm,int*k,intxx[J)

(

inti,j;

intt=0;〃初始化数组个数

for(i=2;i<m;i++)〃循环判断小于n的数是否为素数

{

j=2;

while(j<i)

{

if(i%j==O)//如果i不是素数

{

xx[t]=i;

t++;

break;

j++;

}

*k=t;

)

)

main()

(

intm,n,zz[100];

voidNONO();

printf(H\nPleaseenteranintegernumberbetween10and100:");

scanf("%dn,&n);

fun(n,&m,zz);

printf(n\n\nThereare%dnon-primenumberslessthan%d:",m,n);

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

printf(H\n%4dH,zz[n]);

NONO();

}

voidNONO()

(

/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

intm,n,zz[100];

FILE*rf,*wf;

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

wf=fopen(nout.datH,HwH);

fscanf(rf,"%dn,&n);

fun(n,&m,zz);

fprintf(wf,"%d\n%d\nn,m,n);

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

fprintf(wf,,"%d\nM,zz[n]);

fclose(rf);

fclose(wf);

)

22.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

例如,若输入字符串:123412132,输入字符为:1,则输出:3.

#include<stdio.h>

#include<string.h>

#defineM81

intfun(char*ss,charc)

(

intcnt=O;

char*p=ss;

while(*p){

if(*p==c)cnt++;

P++;

)

returnent;

)

main()

{chara[M],ch;

voidNONO();

printf(M\nPleaseenterastring:");gets(a);

printf(H\nPleaseenterachar:");ch=getchar();

printf(H\nThenumberofthecharis:%d\n",fun(a,ch));

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

inti;

FILE*rf,*wf;

chara[M],b[M],ch;

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

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

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

fscanf(rf,a);

fscanf(rf,n%s",b);

ch=*b;

fprintf(wf,n%c=%d\nn,ch,fun(a,ch));

)

fclose(rf);

fclose(wf);

)

23.请编写程序,函数的功能是:实现B=A+A;即把矩阵A加上A的转置,存放在矩阵B

中。计算结果在main函数中输出。

例如,输入下面的矩阵:123

456

789

其转置矩阵为:147

258

369

程序输出:2610

61014

101418

#include<stdio.h>

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

(

intc[3][3];

inti,j;

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

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

c[i][j]=a[jl[i];〃矩阵的转置

b[i]U]=a[i]U]+c[i]fj];

main()/*主程序*/

{inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];

inti,j;

voidNONO();

fun(a,t);

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

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

printf("%7d",t[i][j]);

printf("\n");

)

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

inti,j,k,a[3][3],t[3][3];

FILE*rf,*wf;

tf=fopen("in.dat","r");

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

for(k=0;k<5;k++){

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

fscanf(rf,u%d%d%d",&a[i][0],&a[i][2]);

fun(a,t);

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

for(j=0;j<3;j++)fprintf(wf,"%7dn,t[i][j]);

fprintf(wf,n\nn);

)

)

fclose(rf);

fclose(wf);

24.请编写函数fun,它的功能是:求出1到1000之间能被7或11整除的所有整数并将它们

放在a所指的数组中,通过n返回这些数的个数。

#include<stdio.h>

voidfun(int*a,int*n)

(

inti;

*n=0;

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

if(((i%7)==0ll(i%11)==0)&&(i%77)!=0)a[(*n)++]=i;

)

main()

{intaa[1000],n,k;

voidNONO();

fun(aa,&n);

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

if((k+1)%10==0)printf(n\n");

elseprintf(H%5d';aa[k]);

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

intaa[1000],n,k;

FILE*fp;

fp=fopen(nout.datn,,(wn);

fun(aa,&n);

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

if((k+1)%10==0)fprintf(fp,H\nH);

elsefprintf(fp,M%5dn,aa[k]);

fclose(fp);

)

25.请编写一个函数voidfim(charpp[]),统计在tt所指字符串中'a'到'z,26个小写

字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串:abcdefgabcdeabc

后,程序的输出结果是:333221100000000000000000000

#include<stdio.h>

#include<string.h>

voidfun(char*tt,intpp[])

(

char*p=tt;

inti;

for(i=0;i<26;i++)ppli]=O;

while(*p){

if(*p>=,a,&&*p<='z,)ppl*p-,a,]+=1;

P++;

main()

{charaa[1000];

intbb[26],k;

voidNONO();

printf(n\nPleaseenteracharstring:");scanf("%s”,aa);

fun(aa,bb);

for(k=0;k<26;k++)printf(”%d",bb[k]);

printf("\n");

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

charaa[1000];

intbb[26],k,i;

HLE*rf,*wf;

rf=fopen(uin.dat,V'r,');

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

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

fscanf(rf,n%sn,aa);

fun(aa,bb);

for(k=0;k<26;k++)fprintf(wf,n%d”,bb[k]);

fprintf(wf,"\n");

)

fclose(rf);

fclose(wf);

)

26.请编写一个函数voidfun(chara[],charb[],intn),其功能是:删除一个字符串中指定下标的

字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的数组中,n中存放

指定的下标。例如,输入一个字符串:World,然后输入3,则调用该函数后的结果为:Wordo

#include<stdio.h>

#include<string.h>

#defineLEN20

voidfun(chara[],charb[],intn)

(

intp,m=0;

for(p=0;p<LEN;p++)

if(p!=n)〃如果字符下标不满足题目要求的标志n

b[m]=a[p];

〃原始串的字符赋值给新串b

m++;

blmJ=,\O';〃新串末尾加上结束符

)

main()

{charstrl[LEN],str2[LEN];

intn;

voidNONO();

printf(HEnterthestring:\nn);

gets(strl);

printf("Enterthepositionofthestringdeleted:");

scanf("%d”,&n);

fun(strl,str2,n);

printf(HThenewstringis:%s\n",str2);

NONOQ;

}

voidNONO()

{/*本函数用于打开文件,输入测试数据•,调用fun函数,输出数据,关闭文件。*/

charstrl[LEN],str2[LEN];

inti,n;

FILE*rf,*wf;

rf=fopen(uin.dat,,;'rn);

wf=fopen(nout.datHnwM);

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

fscanf(rf,u%s%d",strl,&n);

fun(strl,str2,n);

fprintf(wf,n%s\nH,str2);

}

fclose(rf);

fclose(wf);

)

27.编写函数fun,函数的功能是:根据一下公式计算s,

s=l+l/l+2+l/l+2+3+...l/l+2+3+...+no例如:若n的值为11时,函数的值为:1.833333

#include<stdio.h>

doublefun(intn)

(

intk;

floatstr=1.0,sum=1.0;

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

(

sum=sum+k;〃求得每一项的分母

str=str+l/sum;〃级数累加求和

returnstr;

main()

{intn;doubles;

voidNONO();

printf(H\nPleaseenterN:'*);scanf(u%du,&n);

s=fun(n);

printf(ntheresultis:%f\n",s);

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*fp,*wf;

inti,n;

doubles;

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

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

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

fscanf(fp,H%d",&n);

s=fun(n);

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

)

fclose(fp);

fclose(wf);

)

28.编写函数fun,它的功能是:利用一下所示的简单迭代方法求方程:cos(x)-x=0的一个实

根。

#include<math.h>

#include<stdio.h>

doublefun()

(

floatxO,xl=0.0;

do{

x0=x1;

xl=cos(x0);

}while(fabs(xO-x1)>0.000001);

returnx1;

)

main()

(

voidNONO();

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

NONOQ;

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*wf;

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

fprintf(wf,fun());

fclose(wf);

)

29.编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返

回。其中Fibonacci数列F(n)的定义为:F(0)=0,F(l)=lF(n)=F(n-l)+F(n-2)

例如:当t=1000时,函数值为:1597。

#include<math.h>

#include<stdio.h>

intfun(intt)

(

intfO=O,fl=l,f;

do{

f=fO+fl;

fO=fl;

fl=f;

}while(f<t);

returnf;

)

main()/*主函数*/

{intn;

voidNONO();

n=1000;

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

NONO();

)

voidNONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/

FILE*fp,*wf;

inti,n,s;

fp=fopen(,,in.datM;'rH);

wf=fopen(',out.datn,,,wn);

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

fscanf(fp,u%dH,&n);

s=fun(n);

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

)

fclose(fp);

fclose(wf);

30.编写函数fun,它的功能是计算:

s=ln(l)+ln(2)+ln(3)+...+ln(m)的开方,s作为函数值返回。在C语言中可调用log(n)函数求

ln(n)olog函数的引用说明是:doublelog(doublex)o

例如,若

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论