【编程题库】2010年C语言考试题库

【编程题库】2010年C语言考试题库

ID:83011523

大小:334.44 KB

页数:219页

时间:2023-09-19

上传者:无敌小子
【编程题库】2010年C语言考试题库_第1页
【编程题库】2010年C语言考试题库_第2页
【编程题库】2010年C语言考试题库_第3页
【编程题库】2010年C语言考试题库_第4页
【编程题库】2010年C语言考试题库_第5页
【编程题库】2010年C语言考试题库_第6页
【编程题库】2010年C语言考试题库_第7页
【编程题库】2010年C语言考试题库_第8页
【编程题库】2010年C语言考试题库_第9页
【编程题库】2010年C语言考试题库_第10页
资源描述:

《【编程题库】2010年C语言考试题库》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1.给定程序中,函数FUN的功能是:计算出带有头接点的单向链表中各结点数据域之和作为函数值返回。ttinclude^includettdefineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(int*);voidoutlist(SLIST*);intfun(SLIST*h){SLIST*p;ints=0;p=h->next;while(p)/(s+=p->1;datap=p->2;next}returns;}main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48};head=creatlist(a);outlist(head);printf(*

1sum=%d

2*,fun(3));head}SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("ThelistisNULL!

3");else{printf(*

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

5");2.给定程序中,函数FUN的功能是:求出形参SS所指字符串数组中最长字符串的长度,其余字符串左边用字符・补齐,使其与最长的字符串等长。字符串数组中工有M个字符串,且串长くN。^includettinclude

6^defineM5#defineN20voidfun(char(*ss)[N]){inti,j,k=0,n,m,len;for(i=0;in){n=len;k=1;i})for(i=0;i=0;j")lenss[i][m—]=ss[i][j];for(j=0:j

7Theoriginalstringsare:

8");for(i=0;i

9",ss[i]);printf('

10");fun(ss);printf("

11Theresult:

12*);for(i=0;i

13",ss[i]);3.人员记录由编号和出生年,月,日组成,N名人员的数据已在主函数中存入结构体数组std且编号唯一。函数fun的功能是;找出指定编号人员的数据,作为函数值返回,有主函数输出,若指定编号不存在,返回数据中的编号为空串。#includettincludeWdefineN8typedefstruct{charnum[10];intyear,month,day;

14}STU;*******/1fun(STU*std,char*num)STU{inti;STUa={"〃,9999,99,99};for(i=0;i

15Notfound!

16");elseprintf(^XnSucceed!

17");printf("%s%d-%d-%d

18^,p.num,p.year,p.month,p.day);4.给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能:删除链表中数据域值相同的结点,使之保留一个。[include[include[defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h){SLIST*p,*q;p=hー〉next;if(p!=NULL)

19{q=p->next;while(q!=NULL){if(p->dataニニqー〉data){p-〉next二q-〉next;*******/free(1);q*******/q=p->2;next)else{p=q;*******/q=q->3;next)SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;inext;if(p==NULL)printf("

20ThelistisNULL!

21*);else{printf("

22Head");do{printf("ー>%d”,p-〉data);p=pー〉next;}while(p!=NULL);printf("->End

23");))main(){SLIST*head;inta[N]={l,2,2,3,4,4,4,5};head=creatlist(a);printf('

24Thelistbeforedeleting:

25");outlist(head);fun(head);printf("

26Thelistafterdeleting八n");outlist(head);5.函数fun的功能是进行数字字符转换。若形参ch中是数字字符‘0~9',则’0‘转换成’9',’1'转换成'8',’2'转换成‘ア…'9'转换成‘。’;若是其他字符则保持不变;并将转换后的结果作为函数值返回.#include*******/1fun(charch)char{

27*******/if(ch〉ニ'〇'&&_2)chくヨ9'*******/return'9'-(ch-3):'0'returnch;)main(){charcl,c2;printf("

28Theresult:

29");cl='2';c2=fun(cl);printf("cl=%cc2=%c

30",cl,c2);cl='8';c2=fun(cl);printf("cl=%cc2=%c

31",cl,c2);cl二'a';c2二fun(cl);printf("cl=%cc2=%c

32",cl,c2);6.给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M字符串按长度由短到长进行排序。SS所指字符串数组中共有M个字符串,且串长くN#include^include^defineM5^defineN20voidfun(char(*ss)[N]){inti,j,k,n[M];chart[N];for(i=0;in[j])k=_2_;Jif(k!=i){strcpy(t,ss[i]);strcpy(ss[i],ss[k]);*******/strcpy(ss[k],3);tn[k]=n[i];}

33}}main(){chars[M][N]={*shanghai*,“guangzhou,“beijing","tianjing","cchongqing”}inti;printf("

34Theoriginalstringsare:

35");for(i=0;i

36〃,ss[i]);printf<

37");fun(ss);printf("

38Theresult:

39");for(i=0;i

40”,ss[i]);7.函数FUN的功能是:从三个形参a,b,c中找出中间的哪个数,作为函数值返回。例如,当a=3,b=5,c=4时,中数为4〇#includeintfun(inta,intb,intc){intt;*******/t=(a>b)?(b>c?b:(a>c?c:1)):((a>c)?2:((b>c)?c:-3—));returnt;}1.a2.a3.bmain(){intal=3,a2=5,a3=4,r;r=fun(al,a2,a3);printf("

41Themiddlenumberis:%d

42”,r);)8.给定程序中,函数FUN的功能是:统计出带有头结点的单向链表中接点的个数,存放在形参N所指的存储单元中。#include#include^defineN8typedefstructlist{intdata;structlist*next;}SLIST;SLIST*creatlist(int*a);voidoutlist(SLIST*);voidfun(SLIST*h,int*n){SLIST*p;*******/*n=1;0p=h->next;while(p){(*n)++;*******/P=2;p->next)

43)main(){SLIST*head;inta[N]={12,87,45,32,91,16,20,48},num;head=creatlist(a);outlist(head);*******/fun(head,3);&numprintf("

44number=%d

45”,num);)SLIST*creatlist(inta[]){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;)p->next=O;returnh;)voidoutlist(SLIST*h){SLIST*p;p二h->next;if(p=NULL)printf("ThelistisNULL!

46");else{printf("

47Head");do{printf〈ー〉%d”,p->data);p=p->next;}while(p!=NULL);printf('ー〉End

48");}}7.给定程序的功能是:调用函数FUN将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为〇〇在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名房子变量sfname中,目标文件名放在变量tfname中。^include^includeintfun(char*source,char*target){FILE*fs,*ft;charch;if((fs=fopen(source,1))==NULL)return0;if((ft=fopen(target,"w"))==NULL)return0;printf("

49Thedatainfile:

50");

51ch=fgetc(fs);while(!feof(2))fs{putchar(ch);fputc(ch,3);ftch=fgetc(fs);}fclose(fs);fclose(ft);printf("

52

53");return1;}.main(){charsfname[20]="myfilel”,tfname[20]="myfile2”;FILE*myf;inti;charc;myf=fopen(sfname,"w");printf("

54Theoriginaldata:

55");for(i=l;i<30;i++){c='A'+rand()%25;fprintf(myf,"%c",c);printf("%c",c);}fclose(myf);printf("

56

57");if(fun(sfname,tfname))printf("Succeed!");elseprintf("Fail!");7.给定程序中,函数FUN的功能是:在形参S所指字符串中的每个数字字符之后插入一个・。例如,形参S所指字符串为:def35adh3kjsdf7.执行结果为:def3*5*adh3*kjsdf7*#includevoidfun(char*s){inti,j,n;for(i=0;s[i]!='\〇';i++)if(s[i]>='0'1s[i]くニ’9'){n=0;while(s[i+l+n]!=2)n++;0for(j=i+n+l;j>i;j")s[j+U=_3_;

58s[j+l]-**;i=i+l;)}main(){chars[80]="ba3a54cd23a”;printf("

59Theoriginalstringis:%s

60",s);fun(s);printf("

61Theresultis:%s

62",s);)7.给定程序中,函数FUN的功能是:将形参STD所指结构体数组中年龄最大者的数据作为函数值返回,并将main函数输出。ttincludetypedefstruct{charname[10];intage;}STD;STDfun(STDstd[],intn){STDmax;inti;max=1;std[O]for(i=l;i

63Theresult:

64");printf("

65Name:%s,Age:%d

66",3,max.age);max.name}8.给定程序中,函数fun功能是:在带有头结点的单向链表中,查找数据域中为CH的结点,找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为CH的结点,函数返回〇值。ttinclude#includettdefineN8typedefstructlist{intdata;

67structlist*next;}SLIST;SLIST*creatlist(char*);voidoutlist(SLIST*);intfun(SLIST*h,charch){SLIST*p;intn=0;p=h->next;while(p!=1)NULL{n++;if(p->data==ch)return2;nelsep=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);k=fun(_3_);head,chif(k==0)printf("

68Notfound!

69");elseprintf("Thesequencenumberis:%d

70",k);}SLIST*creatlist(char*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;inext=0;returnh;voidoutlist(SLIST*h){SLIST*p;p二h->next;if(p==NULL)printf("

71ThelistisNULL!

72");else{printf("

73Head");do{printf(“ー〉%c”,pー〉data);p=p->next;}while(p!=NULL);printf("->End

74");})

757.给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结素的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数readText和writeText实现.^include^include^includevoidWriteText(FILE*);voidReadText(FILE♦);main(){FILE*fp;if((fp=fopen("myfile4.txt","w"))==NULL){printf("openfail!!

76");exit(0);}WriteText(fp);fclose(fp);if((fp=fopen("myfile4.txt","r"))ニニNULL){printf("openfail!!

77");exit(0);}ReadText(fp);fclose(fp);)voidWriteText(FILE1)*fw{charstr[81];printf("

78Enterstringwith-1toendハn");gets(str);while(strcmp(str,"-1")!=0){fputs(2,fw);fputs("

79",fw);strgets(str);voidReadText(FILE*fr){charstr[81];printf("

80Readfileandoutputtoscreen:

81");fgets(str,81,fr);while(!feof(fr)){printf3);strfgets(str,81,fr);})8.给定程序中,函数FUN的功能是:有NXN矩阵,根据给定的m(m〈=N)

82值,将每个元素中的值均右移m个位置,左边置为〇〇例如,N=3,m=2,有下列矩阵123001456程序执行结果为004789007ttincludettdefineN4voidfun(int(*t)[N],intm){inti,j;for(i=0;i

83Theoriginalarray:

84*);for(i=0;i

85");}printf(*Inputm(m<=%d):",N);scanf("%d",&m);fun(t,m);printf("

86Theresultis:

87");for(i=0;i

88");7.函数FUN的功能是;把形参a所指数组中的最大值放杂a[〇]中,接着求出a所指数组中的最小值防在a[l]中;再把a所指数组元素中的次大值a[2]中,把a所指数组的数据最初排列为:1,4,2,3,9,6,5,8,7,则按规则移动后,数据排列为:9,1,8,2,7,3,6,4,5。形参n中存放a所指数组中数据的个数。^include#defineN9

89voidfun(int1,intn)*a{inti,j,max,min,px,pn,t;for(i=0;ia[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;}main(){intb[N]={l,4,2,3,9,6,5,8,7},i;printf("

90Theoriginaldata八n");for(i=0;i

91");fun(b,N);printfl

92Thedataaftermoving:

93");for(i=0;i

94");7.给定程序中,函数FUN的功能是;求SS所指字符串数组中长度最厂的字符串所在的行下标,作为函数值返回,并把其串长防在形参n所指变量中。SS所指字符串数组中共有M个字符串,且串长くN.ttinclude^defineM5^defineN20intfun(char(*ss)[1],int*n)N{inti,k=0,len=0;for(i=0;i

95lenif(len>*n){*n=3;lenk=i;)}return(k);}main(){charssLMJLNJ={shanghai,guangzhou,beijing,tianjmg,cchongqmgつ;intn,k,i;printf("

96Theoriginalstringsare:

97");for(i=0;i

98Thelengthoflongeststringis:%d

99”,n);printf("

100Thelongeststringis:%s

101”,ss[k]);7.函数FUN的功能是:逆置数组元素中的值。例如:若a所指数组中的数据依次为:1,2,3,4,5,6,7,8,9,则逆置后依次为:9,8,7。6,5,4,3,2,1»形参n给出数组中数据的个数。4includevoidfun(inta[],intn){inti,t;for(i=0:i<1;i++)n/2(t=a[i];a[i]=2a[n-l-i];a[n-l-i]=3;t)}main(){intb[9]={l,2,3,4,5,6,7,8,9},i;printf("

102Theoriginaldata:

103");for(i=0;i<9;i++)printf(*%4d",b[i]);printf("

104");fun(b,9);printf("

105Thedataafterinvert:

106");

107for(i=0;i<9;i++)printf("%4d",b[i]);printf("

108");7.给定程序中,函数FUN的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。例如,S所指字符串:baacda,c中的字符为:a,执行后S所指字符串为:baaaacdaa#includevoidfun(char*s,charc){inti,j,n;/**********found**********/for(i=0;s[i]!=__1;i++)‘、〇'if(s[i]==c)(/**********found**********/n=2;0while(s[i+l+n]!=‘、〇')n++;for(j=i+n+l;j>i;j—)s[j+l]=s[j];/**********found**********/s[j+l]=s[3];ii=i+l:)}main(){chars[80]="baacda”,c;printf(*

109Thestring:%s

110,s);printf(

111Inputacharacter:つ;scanf(飞c”,&c);fun(s,c);printf(*

112Theresultis:%s

113*,s);8.函数FUN的功能是:把形参a所指数组总的奇数原顺序依次存放到a[0],a[l],a[2],……中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后,a所指数组中数据为:9、1、3、5、7,返回值为5。#include^defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i

114if(a[i]%2==1)1a[j]=a[i];2;j++)

115return3jmain(){intb[N]={9,1,4,2,3,6,5,8,7},i,n;printf("

116Theoriginaldata:

117");for(i=0;i

118");n=fun(b,N);printf('

119Thenumberofodd:%d

120',n);printfi

121Theoddnumber:

122");for(i=0;i

123");7.给定程序的功能是:调用函数FUN将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为〇〇在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名防在变量sfname中,目标文件名放在变量tfname中。#include^includeintfun(char*source,char*target){FILE*fs,*ft;charch;if((fs=fopen(source,1))==NULL)rreturn0;if((ft=fopen(target,"w"))=NULL)return0;printf("

124Thedatainfile:

125");ch=fgetc(fs);while(!feof(2))fs{putchar(ch);ftfputc(ch,3);ch=fgetc(fs);}fclose(fs);fclose(ft);printf("

126

127");return1;main(){charsfname[20J="myfilel”,tfname[20]="myfile2”;FILE*myf;inti;charc;myf=fopen(sfname,"w");printf("

128Theoriginaldata:

129");for(i=l;i<30;i++){c='A'+rand()%25;fprintf(myf,"%c",c);

130printf("%c",c);}fclose(myf);printf("

131

132");if(fun(sfname,tfname))printf("Succeed!");elseprintf("Fail!");7.函数FUN的功能是:计算直到—く10".若x=2.5,函数值为:12.182494.n\^include#includedoublefun(doublex){doublef,t;intn;f=1.0+_1—;Xt=X;n=1;do{n++;t*=x/2;nf+=—1—;t}while(fabs(t)>=le-6);returnf;}main(){doublex,y;x=2.5;y=fun(x);printf("

133Theresultis:

134");printf(*x=%-12.6fy=%-12.6f

135”,x,y);22.给定程序中,函数FUN的功能是:统计形参S所指字符串中数字字符出现的次数,并存放在形参t所指的变量中最后在函数中输出。例如,形参所指的字符串为:abcdef35adgh3kjsdf7.输出结果为:4^includevoidfun(char*s,int*t){inti,n;n=0;for(i=0;—1—!=NULL;i++)s[i]

136if(s[i]>=0'&&sFi1<=2—)n++;,y*t=___3;n)main(){chars[80]="abcdef35adgh3kjsdf7”;intt;printf(*

137Theoriginalstringis:%s

138',s);fun(s,&t);printf("

139Theresultis:%d

140*,t);22.用筛选法可得到2—n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成〇)接着从数表中找下ー个非〇数,并从数表中找下一个非〇数,并从数表中删去该书的所有倍数:依次类推,直到所找的下ー个数等于n为止。这样会得到ー个序列:2,3,5,7,11,13,17,19,23,函数FUN用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。^includeintfun(intn){inta[10000],i,j,count=0;for(i=2;i<=n;i++)a[i]=i;i=2;while(i

141for(j=a[i]*2;a[i]a[j]=0;j<=n;i++;while(a[i]==_1—)i++;}printf(*

142Theprimenumberbetween2to%d

143,n);for(i=2;i<=n;i++)if(a[i]!=3){count++;printf(count%15?"%5d":"

144%5d”,a[i]);}returncount;)main(){intn=20,r;r=fun(n);printf("

145Thenumberofprimeis:%d

146',r);24给定程序中,函数FUN的功能是:将NXN矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。例如,若N=3,有下列矩阵:123321456交换后为:456789987^include^defineN4voidfun(intt[N][N]n){inti,s;for(2;i=0;i

147t[i][n-l-i]=3;s)}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,J;printf(*

148Theoriginalarray:

149*);for(i=0;i

150");)fun(t,N);printf(*

151Theresultis:

152*);for(i=0;i

153");25.给定程序中,函数FUN的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与相同的字符,若找不到相同的字符则函数不做任何处理。例如,S所指字符串为:baacda,执行后S所指字符串为:baaaacdaattincludevoidfun(char*s,charc){inti,j,n;for(i=0;s[i]!=_1_;i++)if(s[i]==c)n=2;while(s[i+l+n]!=‘、〇')n++;for(j=i+n+l;j>i;j—)s[j+l]=s[j];s[j+U=-3—;i=i+l;)}main(){chars[80]="baacda”,c;printf("

154Thestring:%s

155,s);printf("

156lnputacharacter:");scanf("%c,&c);fun(s,c);printf(*

157Theresultis:%s

158',s);

15925.函数FUN的功能是:把形参a所指数组中的最小值防在元素a[0]中,接着把形参a所指数组中的最大值放在a[l]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以次类推。例如:若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7I则按规则移动后,数据排列为:1,9,2,8,3,7,4,6,5。形参n中存放a所指数组中数据的个数。注意:规定FUN函数中的MAX存放当前所找的最大值,PX存放当前所找最大值的下标。#include4defineN9voidfun(inta[],intn){inti,j,max,min,px,pn,t;for(i=0;i3)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;}))main(){intb[N]={9,1,4,2,3,6,5,8,7},i;printf(*

160Theoriginaldata:

161");for(i=0;i

162");fun(b,N);printf(*

163Thedataaftermoving:

164");for(i=0;i

165");}

16625.甲乙丙丁四人同时开始放鞭炮,甲每隔tl秒放一次,乙每隔t2秒放一次,丙每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次函数FUN的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算ー次响声,每次响声,第一次响声是在第0秒。ttinclude4define0K(i,t,n)((1%t==0)&&(i/t

167",r);}26.给定程序的功能是调用FUN函数建立班级通讯录。通讯录中记录每位同学的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为ー个数据块写到名为myfile5.dat的二进制文件中。#includettinclude^defineN5typedefstruct{intnum;charname[10];chartel[10];}STYPE;voidcheck();*******/intfun(1*std)

168STYPE{*******/2*fp;inti;FILEif((fp=fopen(^myfile5.dat","wb"))==NULL)return(0);printf("

1690utputdatatofile!

170");for(i=0;i

171");exit(0);}printf("

172Readfileandoutputtoscreen:

173");printf(*

174numnametel

175");for(i=0;i

176^,s[i].num,s[i].name,s[i].tel);)fclose(fp);29.函数FUN的功能是:将形参a所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间元素不动。例如:若a所指数组中的数据依次为:1234567.89,则调换后为:6,7,8,9,1,2,3,4。^include4defineN9voidfun(inta[],intn){inti,t,p;p=(n%2==0)?n/2:n/1;2+1for(i=0;i

177a[3]=t;p+Ip+i})main(){intb[N]={l,2,3,4,5,6,7,8,9},i;printf(*

178Theoriginaldata:

179*);for(i=0;i

180");fun(b,N);printf("

181Thedataaftermoving:

182");for(i=0;i

183");29.给定程序中,函数FUN的功能是:有NXN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为〇〇例如,若N=3,有下列矩阵:计算结果为12210045665078910149^include^defineN4voidfun(int(*t)1){inti,j;for(i=l;i

184Theoriginalarray:

185*);for(i=0;i

186{for(j=0;j

187");)fun(t);printf("

188Theresultis:

189");for(i=0;i

190");))31.给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用FUN函数,每调用一次FUN函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。^includettinclude^defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*p){SLIST*t,*s;t=p->next;s=p;while(t->next!=NULL){s=t;t=1;t->next)printf(w%d",2);s->datasー〉next二NULL;free(3);t}SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;idata=a[i];p->next=q;p=q;}p->next=0;returnh;

191}voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("

192ThelistisNULL!

193");else{printf("

194Head");do{printf("ー)%d”,p->data);p=pー〉next;}while(p!=NULL);printf("->End

195");main(){SLIST*head;inta[N]={ll,12,15,18,19,22,25,29);head=creatlist(a);printf("

196Outputfromhead:

197");outlist(head);printf("

198Outputfromtail:

199");while(head->next!=NULL){fun(head);printf(*

200

201*);printf(*

202Outputfromheadagain:

203");outlist(head);))31.函数FUN的功能是:计算r2r3r<ゴ-1”」(x)l+x--+-+213!4!(ね-1)!n\的前n项。若X=2.5,N=15时,函数值为:1.142857〇^include#includedoublefun(doublex,intn){doublef,t;inti;f=1;1.0t=-1;for(i=l;i

204f+=_3_;t)returnf;}main(){doublex,y;x=2.5;y=fun(x,15);printf(*

205Theresultisハn");printf(*x=%-12.6fy=%-12.6f

206”,x,y);31.给定程序中,函数FUN的功能是:计算NXN矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,软后累加反向对角线的值。例如,若N=3有下列矩阵:123456789FUN函数首先累加1,5,9,然后累加3,5,7«喊素的返回值为30〇#include#defineN4fun(intt[][N],intn){inti,sum;sum=0for(i=0;i

207Theoriginaldata:

208*);for(i=0;i

209");}printf("Theresultis:%d",fun(t,N));32.给定程序中,函数FUN的功能是:将S所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符原有的先后次序。例如,形参S所指的字符串为:def35adh3kjsdf7.执行结果为:defadhkjsdf3537.^includevoidfun(char*s){inti,j=0,k=0;chartl[80],t2[80];

210for(i=0;s[i]!=*\0*;i++)if(s[i]>=’〇'&&s[i]<='9')(t2[j]=s[i];1_;J++elsetl[k++]=s[i];

211t2[j]=0;tl[k]=O;for(i=0;s[i]=tl[i]i

212Theoriginalstringis:%s

213,s);fun(s);printfi'

214Theresultis:%s

215,s);31.程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息。函数FUN的功能是输出这位学生的信息。^includetypedefstruct{intnum;charname[9];charsex;struct{intyear,month,day;}birthday;floatscore[3];}STU;voidshow(STU1)tt{inti;printf("

216%d%s%c%d-%d-%d”,tt.num,tt.name,tt.sex,tt.birthday,month,tt.birthday,year,tt.birthday,day);for(i=0;i<3;i++)printf(*%5.If*,―2—);tt.score[i]printf("

217");)main(){STUstd={1,"Zhanghua",',1961,10,8,76.5,78.0,82.0};printf("

218Astudentdata:

219");show(3);std32.给定程序中,函数FUN的功能是:求SS所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。SS

220所指字符串数组中共有M个字符串,且串长くN〇ttinclude#include#defineM5^defineN20intfun(char(*ss)[N],int*n){inti,k=0,len=N;for(i=0;i<1;i++)M{len=strlen(ss[i]);if(i=0)*n=len;if(len—2_*n)<{*n=len;k=i;))return(3);i}main(){charssLMJLNJ=tshanghai,guangzhou,beijing,tianjing,chongqing};intn,k,i;printf("

221Theoriginalstringsare:

222);for(i=0;i

223Thelengthofshorteststringis:%d

224',n);printf("

225Theshorteststringis:%s

226”,ss[k]);31.函数FUN的功能是:把形参a所指数组中的偶数按原顺序依次存防到a[0],a[l],a[2]……,把奇数从数组中删除,偶数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除奇数后a所指数组中的数据为:4,2,6,8,返回值为4〇ttincludettdefineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i

2272=a[i];j++;a[j])return3;j}main(){intb[N]={9,1,4,2,3,6,5,8,7},i,n;printfi

228Theoriginaldata八n");for(i=0;i

229");n=fun(b,N);printf("

230Thenumberofeven:%d

231",n);printfi

232Theeven:

233");for(i=0;i

234");38.函数FUN的功能是:统计长整数N的各个位上出现数字1,2,3的次数,并通过外部(全部)变量cl,c2,c3,返回主函数。例如:当n=123114350时,结果为:cl=3c2=lc3=2^includeintcl,c2,c3;voidfun(longn){cl=c2=c3=0;while(n){switch(1)n%10case1:cl++;2;breakcase2:c2++;3;breakcase3:c3++;}n/=10;))main(){longn=123114350L;fun(n);printf(*

235Theresult:

236");printf(*n=%ldcl=%dc2=%dc3=%d

237”,n,cl,c2,c3);)

23839.给定程序中,函数FUN的功能是:把形参S所指字符中下标为奇数的字符右移到下ー个奇数位置,最右边被移出字符串的字绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大雨等于2)〇例如,形参S所指的字符串为:ahcbedgf.^includevoidfun(char*s){inti,n,k;charc;n=0;for(i=0;s[i]!='ゝ〇';i++)n++;if(n%2==0)k=—1—;n-1elsek=n_2;c=2;s[k]for(i=k-2;i>=l;i=i-2)s[i+2]=s[i];s[l]=3;c}main(){chars[80]="abcdefgh";printf("

239Theoriginalstringis:%s

240',s);fun(s);printf("

241Theresultis:%s

242',s);40.给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序连接。函数FUN的功能是:把形参X的值放入ー个新结点并插入到链表中,插入后各结点仍保持递增有序ttinclude#include^defineN8typedefstructlist{intdata;structlist*next;}SLIST;voidfun(SLIST*h,intx){SLIST*p,*q,*s;s=(SLIST*)malloc(sizeof(SLIST));sー〉data=1;xq二h;p=h->next;while(p!=NULL&&x〉pー〉data){q=一2一;pp=p->next;)

243sー〉next二p;q->next=3;s)SLIST*creatlist(int*a){SLIST*h,*p,*q;inti;h=p=(SLIST*)malloc(sizeof(SLIST));for(i=0;inext=q;p=q;}p->next=0;returnh;voidoutlist(SLIST*h){SLIST*p;p=h->next;if(p==NULL)printf("

244ThelistisNULL!

245");else{printf("

246Head");do{printf("ー>%d”,p->data);p=pー〉next;}while(p!=NULL);printf("ー〉End

247");}}main(){SLIST*head;intx;inta[N]={ll,12,15,18,19,22,25,29);head=creatlist(a);printf("

248Thelistbeforeinserting:

249");outlist(head);printf("

250Enteranumber:");sccnf("%d",&x);fun(head,x);printf("

251Thelistafterinserting:

252");outlist(head);)39.函数FUN的功能是进行字母的转换,若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母;若是其它字符保持不变,并将转换后的结果作为函数值返回。4include#includecharfun(charch)(if((ch>='a)1(chく='z'))&&returnch-'a'+'A';if(isupper(ch))returnch+'a,-2;

253,バreturn3;ch}main(){charcl,c2;printf("

254Theresult:

255");cl二'w';c2=fun(cl);printf("cl=%cc2=%c

256",cl,c2);cl='W';c2=fun(cl);printf(*cl=%cc2=%c

257”,cl,c2);cl=,8*;c2=fun(cl);printf(*cl=%cc2=%c

258*,cl,c2);39.给定程序中,函数FUN的功能是:求形参SS所指字符串数组中最长字符串的长度,将其余字符串右边用字符・补齐,使其与最长饿字符串等长。SS所指字符串数组中共有M个字符串,且串长くN.#include^include4defineM5#defineN20voidfun(char(*ss)[N]){inti,j,n,len=0:for(i=0;in)n=len;)for(i=0;i

259");

260for(i=0;i

261”,ss[i]);printf('

262");fun(ss);printf("Theresultis:

263");for(i=0;i

264",ss[i]);

26543.给定程序通过定义并赋初值的方式,利用结构体变量存储了一个学生的学号,姓名和3门课的成绩。函数FUN的功能是将学生的各科成绩都乘以ー个系数a。^includetypedefstruct{intnum;charname[9];floatscore[3];}STU;voidshow(STUtt){inti;printf("%d%s:",tt.num,tt.name);for(i=0;i<3;i++)printf("%5.If",tt.score[i]);printf("

266");)voidmodify(*ss,floata)STU{inti;for(i=0;i<3;i++)ss->2*=a;score[i]}main(){STUstd={1,"Zhanghua",76.5,78.0,82.0};floata;printf("

267Theoriginalnumberandnameandscores:

268");show(std);printf("

269lnputanumber:");scanf("%f",&a);modify(3,a);&stdprintf("

270Aresultofmodifying:

271");show(std);}44.给定程序中,函数FUN的功能是:将形参指针所指结构体数组中的三个元素按NUM成员进行升序排列。ttincludetypedefstruct

272{intnum;charname[10];*std}PERSON;voidfun(PERSON1)2temp;PERSONif(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;})main(){PERSONstd[]={5,"Zhanghu”,2,"WangLi”,6,"LinMin"};inti;fun(3);stdprintfl

273Theresultis:

274");for(i=0;i<3;i++)printf1%d,%s

275,std[i].num,std[i].name);44.给定程序中,函数FUN的功能是:将自然数广10以及他们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。#includettincludeintfun(char*fname){FILE*fp;inti,n;floatx;if((fp二fopen(fname,w))==NULL)return0;fprintf(1一,"%dfor(i=l;i<=10;i++)%f

276",i,sqrt((double)i));fpprintf("

277Succeed!!

278");―2—;fclose(fp)printf(*

279Thedatainfile:

280");if((fp=fopen(3,*r*))==NULL)fnamereturn0;fscanf(fp,&n,&x);while(!feof(fp)){printf("%d%f

281”,n,x);fscanf(fp,&n,&x);}fclose(fp);return1;}main()

282{charfname口="myfile3.txt”;fun(fname);}44.给定程序中,函数fun的功能是:将NXN矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。例如,N=3,有下列矩阵计算结果是123312456645789978^include^defineN4voidfun(int(*t)[N]){inti,j,x;for(i=0;i<1;i++)Nx=t[i][_2];n-1for(j=N-l;j>=0;j—)t[i][j]=t[i][j-l];t[i][3]=x;0main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;““printf(*Theoriginalarray:

283*);for(i=0;i

284Theresultis:

285*);for(i=0;i

286");)45.给定程序中,函数FUN的功能是:对形参S所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参P所指字符数组中,形成一个新串。

287例如,形参S所指的字符串为:baawrskjghzlicda,执行后P所指字符数组中的字符串应为:aachjlsw#includevoidfun(char*s,char*p){inti,j,n,x,t;n=0;for(i=0;s[i]!='、〇';i++)n++;for(i=l;is[j])t=j;if(t!=i){x=s[i];s[i]=s[t];s[t]=x;}}for(i=l,j=0;i

288Theoriginalstringis:%s

289',s);fun(s,p);printf("

290Theresultis:%s

291',p);)48.各定程序的功能是:从键盘输入若干行文字(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和writetext实现。^includettinclude^includevoidWriteText(FILE♦);voidReadText(FILE*);main(){FILE*fp;if((fp=fopen("myfile4.txt","w"))==NULL){printf("openfail!!

292^);exit(0);}

293WriteText(fp);fclose(fp);if((fp=fopen(^myfile4.txt","r"))=NULL){printf("openfail!!

294");exit(0);}ReadText(fp);fclose(fp);)voidWriteText(FILE1)*fw{charstr[81];printf("

295Enterstringwith-1toendハn");gets(str);while(strcmp(str,"-1")!=0){fputs(2,fw);fputs("

296",fw);strgets(str);)}voidReadText(FILE*fr){charstr[81];printf("

297Readfileandoutputtoscreen:

298");fgets(str,81,fr);while(Ifeof(fr)){printf("如",3);strfgets(str,81,fr);49.给定程序中,函数FUN的功能是:有NXN矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。例如,若N=3,有下列矩阵:计算结果为123741456852789963

299^include#defineN4voidfun(int(*t)[N]){intj,r[N];for(j=0;j=0;_2_)t[N-l][N-l-j]=t[j][N-l];for(j=N-l;j>=0;j—)t[j][N-l]=r[_3_];j}main(){intt[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10},i,j;““printf("

300Theoriginalarray:

301");

302for(i=0;i

303");}fun(t);printf("

304Theresultis:

305");for(i=0;i

306");)50.函数fun的功能是:计算#include^includedoublefun(doublex){doublef,t;intn;f=1.0+x;t=1n=1;do{*=n++;(-1.0)*x/2nf+=t;while(3>=le-6);fabs(t)returnf;)main(){doublex,y;x=2.5;y=fun(x);printf(*

307Theresultis:

308");printf("x=%T2.6fy二%-12.6f

309”,x,y);}51.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值

310返回主函数进行输出。例如:传给形参a的数据中,学号、姓名、和三门课的成绩依次是:10001、“ZhangSan”95、80、88,修改后的数据应为:10002、“LiSi”、96、81、89〇^include#includestructstudent{longsno;charname[10];floatscore[3];};**/1fun(structstudenta)structstudent{inti;a.sno=10002;**/strcpy(_2_,“Libi);a.name**/for(i=0;i<3;i++)_3_+=1;a.score[i]returna;)main(){structstudents={10001,"ZhangSan”,95,80,88},t;inti;printf(*

311

312Theoriginaldata:

313);printf('

314No:%ldName:%s

315Scores:",s.sno,s.name);for(i=0;i<3;i++)printf("%6.2f”,s.scoreti]);printf("

316");t=fun(s);printf("

317Thedataaftermodified:

318");printf(

319No:%ldName:%s

320Scores:",t,sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t.score[i]);printf(*

321*);}52.给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M〇ttincludettincludeSdefineN5#defineM8voidfun(char(*ss)[M])

322{char*ps[N],*tp;inti,j,k;for(i=0;i

323Thestringaftersortingbylength:

324

325");for(i=0;i

326Theoriginalstring

327

328");for(i=0;i

329");fun(ch);}52.给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。#includevoidfun(char*s,inta,doublef)(*♦/_1_fp;FILE*charch;fp=fopen("filel.txt","w");fprintf(fp,"%s%d%f

330”,s,a,f);fclose(fp);fp=fopen("filel・txt","r");printf('

331Theresult:

332

333");ch=fgetc(fp);**/while(!feof(—2—.))fp**/{putchar(_3_);ch=fgetc(fp);}chputchar('

334);fclose(fp);)main()

335{chara[10]="Hello!”;intb=12345;doublec=98.76;fun(a,b,c);}52.给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。例如,形参s所指的字符串为:abs5defl26jkm8,程序执行后的输出结果为:22〇ttinclude#includettincludeintfun(char*s){intsum=0;while(*s)**/{if(isdigit(*s))sum+=*s-_1_;,o,**/_2_;}s++**/return_3—;sum}main(){chars[81];intn;printf("

336Enterastring:

337

338");gets(s);n=fun(s);printf("

339Theresultis:%d

340

341",n);}53.给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。ttinclude^includettdefineN5#defineM10**/voidfun(char(*ss)_1_,intk)[M]{inti=0;**/while(i<_2_){N**/ss[i][k]=_3_;i++;}‘、〇')main()

342{charx[N][M]={"Create","Modify","Sort","skip","Delete"};inti;printf("

343Theoriginalstring

344

345");for(i=0;i

346");fun(x,4);printf("

347Thestringafterdeleted:

348

349");for(i=0;i

350");}52.给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正数),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。例如,有!0个正数:4630324061745154826,平均值为:30.500000主函数中输出:m=30.0#include#defineN10doublefun(doublex[],double*av){inti,j;doubled,s;s=0;for(i=0;i

351");m=fun(x,&av);printf(*

352Theaverageis:%f

353*,av);printf(*m=%5.If*,m);printf(*

354*);}53.给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。1x33x55x7/1ヽ"t(2x〃-1)x(2x〃+1)224262、ノ(2x〃)2例如,当形参n的值为10时,函数返回:-0.204491o

355^includedoublefun(intn){inti,k;doubles,t;s=0;**/k=_l_;1for(i=l;i<=n;i++){**/t=_2_;2*is=s+k*(2*i-l)*(2*i+l)/(t*t);**/k=k*_3_;-1)returns;)main(){intn=-l;while(n<0){printf("Pleaseinput(n>0):");scanf("%d",&n);}printf(*

356Theresultis:%f

357*,fun(n));}52.程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。^include^includestructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudenta[],intn){**/_1_t;structstudentinti,j;**/for(i=0;i<_2_;i++)n-1for(j=i+l;j0)

358a[i].name,a[j].name{t=a[i];a[i]=a[j];a[j]=t;})main(){structstudents[4]={{10001,"ZhangSan”,95,80,88},{10002,"LiSi”,85,70,78),“0003,"CaoKai”,75,60,88},{10004,"FangFang”,90,82,87}};inti,j;printf("

359

360Theoriginaldata:

361

362");for(j=0;j<4;j++){printf(*

363No:%ldName:%-8sScores:",s[j].sno,s[j].name);for(i=0;i<3;i++)printf("%6.2f",s[j].score[i]);printf("

364");}fun(s,4);printf("

365

366Thedataaftersorting:

367

368");for(j=0;j<4;j++){printf("

369No:%ldName:%-8sScores:s[j].sno,s[j].name);for(i=0;i<3;i++)printf("%6.2f”,s[j].score[i]);printf("

370");}}52.给定程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asdl23fgh5##43df,处理后新字符串为:12543asdfgh##dfottinclude^includettincludettincludechar*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

371return_3_;p)main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("

372Theresultis:%s

373",fun(s));}52.给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。^includettincludettdefineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;p=h;while(p){*♦/q=_1_;p->next**/while(_2_)q!=NULL{if(p->data>q->data){t-p->data;p->data-qー〉data;qー〉data-t;}q=q->next;)**/P=_3_;p->next)}NODE*creatlist(intaロ){NODE*h,*p,*q;inti;h=NULL;for(i=0;inext=NULL;if(h==NULL)h=p=q;else{p->next=q;p=q;}}returnh;}voidoutlist(NODE*h){NODE*p;P=h;if(p==NULL)printf("ThelistisNULL!

374");else{printf("

375Head");do{printf("一〉%d”,p->data);p=p->next;}while(p!=NULL);printf("ー)End

376");}main(){NODE*head;inta[N]={0,10,4,2,8,6);

377head=creatlist(a);printf("

378Theoriginallist:

379");outlist(head);fun(head);printf("

380Thelistafterinverting:

381");outlist(head);}52.给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出:xl=5.000000.x2=3.000000.xl*xl+xl*x2=40.000000ttincludedoublefl(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}**/_1_fun(inti,doublex,doubley)double{if(i==D**/return_2_(x);flelse**/return_3_(x,y);f2}main(){doublexl=5,x2=3,r;r=fund,xl,x2);r+=fun(2,xl,x2);printf("

382xl=%f,x2=%f,xl*xl+xl*x2=%f

383

384",xl,x2,r);}53.给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。Sinclude#includettdefineN6typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q;intt;♦*/P=_1—;hwhile(p)**/{q=_2_;p->next

385while(q)♦*/{if(p->data_3_q->data)>{t=p->data;p->data=q->data;q->data=t;}q=q->next;}p=p->next;}}NODE*creatlist(intaロ){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));h->next=NULL;for(i=0;idata=a[i];qー>next=NULL;if(h->next==NULL)h->next=p=q;else{p->next=q;p=q;}}returnh;)voidoutlist(NODE*h){NODE*p;p=h->next;if(p==NULL)printf("ThelistisNULL!

386");else{printf('

387Head");do{printfl->%d”,p->data);p=p->next;}while(p!=NULL);printf("ー〉End

388");}main(){NODE*head;inta[N]={0,10,4,2,8,6};head=creatlist(a);printf(*

389Theoriginallist:

390");outlist(head);fun(head);printf("

391Thelistaftersorting:

392");outlist(head);}52.给定程序中,函数fun的功能是:找出100至x(xW999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。例如:当n值为500时,各位数字之和为15的整数有: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个。^includefun(intx){intn,si,s2,s3,t;**/n=_1_;0t=100;

393**/while(t<=_2_)x{sl=t%10;s2=(t/10)%10;s3=t/100;if(sl+s2+s3==15){printf(*%d",t);n++;}**/_3_;}t++returnn;)main(){intx=-l;while(x>999||x<0){printf("Pleaseinput(0

394Theresultis:%d

395",fun(x));}52.给定程序中,函数fun的功能是将不带头结点的的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2〇ttinclude^include^defineN5typedefstructnode{intdata;structnode*next;}NODE;**/NODE*_1_fun(NODE*h){NODE*p,*q,*r;P=h;if(p==NULL)returnNULL;q=p->next;p->next=NULL;**/while(_2_)q!=NULL{r=q->next;q->next=p;p=q;**/q=_3returnp;)NODE*creatlist(intaロ){NODE*h,*p,*q;inti;h=NULL;for(i=0;i

396q->data=a[i];q->next=NULL;if(h==NULL)h=p=q;else{p->next=q;p=q;})returnh;}voidoutlist(NODE*h){NODE*p;P=h;if(p==NULL)printf(*ThelistisNULL!

397*);else{printf(*

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

399");}main(){NODE*head;inta[N]={2,4,6,8,10};head=creatlist(a);printf("

400Theoriginallist:

401*);outlist(head);head=fun(head);printf(^XnThelistafterinverting:

402");outlist(head);}52.给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在ー2ー处使f指向函数fl,在ー3ー处使f指向函数f2o当调用正确时,程序输出:xl=5.000000.x2=3.000000.xl*xl+xl*x2二4〇.000000^includedoublefl(doublex){returnx*x;}doublef2(doublex,doubley){returnx*y;}doublefun(doublea,doubleb)(*/—1—(*f)();doubledoublerl,r2;*/f=_2_;/*pointfountionfl*/flrl=f(a);*/f=_3_;/*pointfountionf2*/f2r2=(*f)(a,b);returnrl+r2;

403}main(){doublexl=5,x2=3,r;r=fun(xl,x2);printfC

404xl=%f,x2=%f,xl*xl+xl*x2=%f

405”,xl,x2,r);}52.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生的数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。Sinclude#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,longsno){FILE*fp;STUn;inti;fp=fopen(filename,^rb+*);**/while(!_1_)feof(fp){fread(&n,sizeof(STU),1,fp);**/if(n.sno_2_)break;}==snoif(!feof(fp)){for(i=0;i<3;i++)n.score[i]+=3;♦♦/fseek(fp,-1L*_3_,SEEK_CUR);sizeof(STU)fwrite(&n,sizeof(STU),1,fp);}fclose(fp);)main(){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}},ss[N];inti,j;FILE*fp;fp=fopen("student,dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);printf("

406Theoriginaldata:

407");

408fp=fopen("student,dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j

409No:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("

410");}fun("student.dat",10003);fp=fopen("student,dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("

411Thedataaftermodifing:

412");for(j=0;j

413No:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("

414");}}67.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。例如:a所指变量中的学号、姓名、和三门课的成绩依次是:10001、“ZhangSan"、95、80、88,则修改后输出b中的数据应为:10002、“LiSi”、95、80、88〇#includetfincludestructstudent{longsno;charname[10];floatscore[3];);voidfun(structstudenta){structstudentb;inti;**/b=_1_;ab.sno=10002;**/strcpy(_2_,LiSi");b.nameprintf("

415Thedataaftermodified:

416");printf("

417No:%ldName:%s

418Scores:",b.sno,b.name);**/for(i=0;i<3;i++)printf("%6.2f",b._3_);score[i]printf('

419");}main(){structstudents={10001,"ZhangSan",95,80,88);inti;printf("

420

421Theoriginaldata:

422");printf("

423No:%ldName:%s

424Scores:",s・sno,s.name);for(i=0;i<3;i++)printf("%6.2f",s.score[i]);

425printf("

426");fun(s);}67.给定程序中,函数fun的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。ss所指字符串组中共有N个字符串,且串长小于M。#include^include#defineN5ttdefineM10intfun(char(*ss)[M],intk){inti,j=0,len;**/for(i=0;i<_1_;i++)N{len=strlen(ss[i]);**/if(len<=_2_)k-1**/strcpy(ss[j++],_3_);ss[i]}returnj;)main(){charx[N][M]={"Beijing","Shanghai","Tianjing","Nanjing",*Wuhan"};inti,f;printf("

427Theoriginalstring

428

429");for(i=0;i

430");f=fun(x,7);printf("Thestringwitchlengthislessthanorequalto7:

431");for(i=0;i

432");}68.给定程序中,函数fun的功能是:将形参s所指字符串中所有ASCI!码值小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。例如,形参s所指的字符串为:Abc@lx56*,程序执行后t所指字符数组中的字符串应为:A0156*O^includeintfun(char*s,char*t){intn=0;while(*s){if(*s<97){**/*(t+n)=_1_;n++;}*s

433**/_2_;s++)*(t+n)=O;**/return_3_;n)main(){chars[81],t[81];intn;printf("

434Enterastring:

435*);gets(s);n=fun(s,t);printf("

436Thereare%dletterwhichASCIIcodeislessthan97:%s

437”,n,t);}70.给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶然的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。例如,输入ー个数:27638496,新的数:为739。^includevoidfun(unsignedlong*n){unsignedlongx=0,i;intt;i=l;while(*n)***/{t=*n%_1_;10♦**/if(t%2!=_2_)0{x=x+t*i;i=i*10;}*n=*n/10;}♦**/*n=3;xmain(){unsignedlongn=-l;while(n>99999999||n<0){printf("Pleaseinput(0

438Theresultis:%ld

439,z,n);}71.给定程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长

440度小于n,则将整个字符串复制到形参t所指字符数组中。例如,形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的字符串数应为:defgho^include^include*defineN80voidfun(char*s,intn,char*t){intlen,i,j=0;len=strlen(s);***/if(n>=len)strcpy(_1_);t,selse{***/for(i=len-n;iく=len-1;i++)t[j++]=_2_;s[i]***/t[j]=_3_;ヘ〇,})main(){chars[N],t[N];intn;printf("Enterastring:");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n,t);printf("Thestringt:");puts(t);)72.给定程序中,函数fun的功能是:将a所指3X5矩阵中第k列的元素左移到第〇歹リ,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。例如,有下列矩阵:若k为2,程序执行结果为123453451212345345121234534512#include^defineM3^defineN5voidfun(int(*a)[N],intk){inti,j,p,temp;***/for(p=l;p<=_1_;p++)kfor(i=0;i

441for(j=0;j<_2_;j++)a[i][j]=a[i][j+1];N***/a[i][N-l]=_3_tempmain(){intx[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j;printf("Thearraybeforemoving:

442

443*);for(i=0;i

444");}fun(x,2);printf(*Thearrayaftermoving:

445

446*);for(i=0;i

447");}}73.给定程序中,函数fun的功能是:将a所指4X3矩阵中第k行的元素与第〇行元素交换。例如,有下列矩阵:若k为2,程序执行结果为:123789456456789123101112101112#include^defineN3#defineM4***/voidfun(int(*a)[N],int1)k{inti,j,temp;***/for(i=0;i<_2_;i++)N{temp=a[O][i];***/a[0][i]=_3_;a[k][i]a[k][i]=temp;)

448}main(){intx[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}printf(*Thearraybeforemoving:

449

450*);for(i=0;i

451

452");}fun(x,2);printf(*Thearrayaftermoving:

453

454*);for(i=0;i

455

456");}}74.给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有!0个正数:4630324061745154826,平均值为:30.500000移动后的输出为:4632404548306171526^include^include^defineN10doublefun(double*x){inti,j;doubles,av,y[N];s=0;for(i=0;iav){**/y[_2_]=x[i];x[i]=-l;}j++for(i=0;i

457main(){inti;doublex[N];for(i=0;i

458");printf(*

459Theaverageis:%f

460,fun(x));printf(*

461Theresult:

462,fun(x));for(i=0;i

463");}74.给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。例如,有10个正数:4630324061745154826,平均值为:30.500000^includettdefineN10doublefun(doublex[],double*y){inti,j;doubleav;**/av=_l_;0**/for(i=0;iav)y[_3_]=x[i];j++y[j]="l;returnav;)main(){inti;doublex[N],y[N];for(i=0;i

464");printf(*

465Theaverageis:%f

466”,fun(x,y));for(i=0;y[i]>=0;i++)printf(*%5.If*,y[i]);printf(*

467*);}75.给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。例如,s所指字符串为:asdl23fgh543df,处理后新字符串为:asdfghdfl2543。#include^include#includechar*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='a')&&(s[i"='z'))||((s[i]>='A')&&(s[i"='Z')))(**/t[j]=_l_:j++;}s[i]

468else{p[k]=s[i];k++;}}**/for(i=0;i<_2_;i++)t[j+i]=p[i];k**/t[j+k]=_3_;'、0’returnt:}main(){chars[80];printf("Pleaseinput:");scanf("%s",s);printf("

469Theresultis:%s

470",fun(s));}74.给定程序中,函数fun的功能是:找出10〇〜999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。例如,当x值为5时,1~999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500,共有15个。当x值为27时,各位数字之和为27的整数是:9990只有1个。^includefun(intx){intn,si,s2,s3,t;n=0;t=100;**/while(t<=_1_)999**/{sl=t%10;s2=(_2_)%10;s3=t/100;t/10**/if(sl+s2+s3=_3_)x{printf("%d","0;n++;}t++;}returnn;}main(){intx=-l;while(x<0){printf("Pleaseinput(x>0):");scanf("%d",&x);}printf("

471Theresultis:

472%d

473",fun(x));}74.给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。^include^includevoidfun(char*s,inta,doublef){**/_1_fp;FILE*charstr[100],strl[100],str2[100];intal;doublefl;fp=fopen("filel.txt","w");fprintf(fp,"%s%d%f

474",s,a,f);**/_2_;floes(fp)fp=fopen("filel.txt","r");**/fscanf(_3_,"%s%s%s”,str,strl,str2);fpfclose(fp);al=atoi(strl);fl=atof(str2);printf("

475Theresult:

476

477%s%dstr,al,fl);)main(){chara[10]="Hello!”;intb=12345;doublec=98.76;fun(a,b,c);}75.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后ー个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。ttinclude#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;**/fp=fopen(_1_,"rb+");filename

478**/fseek(fp,-lL*sizeof(STU),_2_);SEEK_END**/fwrite(_3_,sizeof(STU),1,fp);&nfclose(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}};STUn={10006,"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);

479fclose(fp);printf("

480Theoriginaldata:

481

482");for(j=0;j

483No:%ldName:%-8sScores:ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6・2f”,ss[j].score[i]);printf("

484");}fun("student,dat",n);printf("

485Thedataaftermodifing:

486

487");fp=fopen("student,dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j

488No:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("

489");}74.给定程序中,函数fun的功能是计算下式s=lx3_3x5+5x7___,I(2xn-l)x(2xn+l)(2x〃)2直至リュり"+1)W10一6,并把计算结果作为函数值返回。(2xn)~例如:若形参e的值为le-6,函数的返回值为ー0.205601ftincludedoublefun(doublee){inti,k;doubles,t,x;s=0;k=l;i=2;***/x=_1_/4;3.0***/while(x_2_e)>{s=s+k*x;k=k*(-1);t=2*i;♦**/x=_3_*(2*i+l)/(t*t);(2*i-l)i++;}returns;main(){doublee=le-6;printf("

490Theresultis:%f

491”,fun(e));}75.给定程序中,函数fun的功能是:在形参ss所指字符串数组中査找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),

492未找到则返回・!。ss所指字符串数组中共有N个内容不同的字符串,且串长小于Mo#include#include^defineN5ftdefineM8intfun(char(*ss)[M],char*t){inti;**/for(i=0;i<_1_;i++)N**/if(strcmp(ss[i],t)==0)return_2_;ireturn-1;)main(){charch[N][M]={"if","while","switch","int","for"},t[M];intn,i;printf("

493Theoriginalstring

494

495");for(i=0;i

496");printf("

497Enterastringforsearch:");gets(t);n=fun(ch,t);**/if(n==-l)printf("

498DonJtfound!

499");elseprintf("

500Thepositionis%d.、n”,n);)74.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。例如:b所指变量t中的学号、姓名、和三门课的成绩依次是:10002、“ZhangQi"、93、85、87,修改后输出t中的数据应为:10004、“Lijie”、93、85、87〇#include^includestructstudent{longsno;charname[10];floatscore[3];};voidfun(structstudent*b){inti;*♦/b_1_=10004;->sno♦*/strcpy(b_2—,“Lijie");->name}main(){structstudentt={10002,"ZhangQi”,93,85,87};inti;

501printf("

502

503Theoriginaldata:

504");printf('

505No:%ldName:%s

506Scores:",t・sno,t.name);for(i=0;i<3;i++)printf("%6,2f”,t.score[i]);printf(*

507*);**/fun(_3_);&tprintf("

508Thedataaftermodified:

509");printf(

510No:%ldName:%s

511Scores:",t,sno,t.name);for(i=0;i<3;i++)printf("%6.2f",t,score[i]);printf("

512");}74.给定程序中,函数fun的功能是:判定形参a所指的NXN(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1;不是,函数返回值为〇。"幻方”的判定条件是;矩阵每行、每列、主对角线及反对角线上元素之和都相等。例如,以下3X3的矩阵就是ー个“幻方”:492357816ttinclude#defineN3intfun(int(*a)[N]){inti,j,ml,m2,row,colum;ml=m2=0;for(i=0;i

513{intx[N][N],i,j;printf(*Enternumberforarray:

514*);for(i=0;i

515");for(i=0;i

516");}if(fun(x))printf("TheArrayisamagicsquare.

517");elseprintf("TheArrayisn'tamagicsquare.

518");}74.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。例如:a所指变量s中的学号、姓名、和三门课的成绩依次是:10001、“ZhangSan"、95、80、88,修改后输出t中的数据应为:10002、“LiSi”、96、81、89〇#include^includestructstudent{longsno;charname[10];floatscore[3];);***/_1_fun(structstudent*a)structstudent*{inti;a->sno=10002;strcpy(a->name,LiSi");***/for(i=0;i<3;i++)_2_+=1;aー〉score[i]***/return_3—;1)main(){structstudents={10001,"ZhangSan”,95,80,88},*t;inti;printfi'

519

520Theoriginaldata:

521");printf("

522No:%ldName:%s

523Scores:",s・sno,s.name);for(i=0;i<3;i++)printf("%6・2f”,s.score[i]);printf("

524");t=fun(&s);printf("

525Thedataaftermodified:

526");printf("

527No:%ldName:%s

528Scores:",t->sno,tー〉name);for(i=0;i<3;i++)printf("%6.2f”,tー〉score[i]);printf("

529");}

53074.给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。g__lx3+3x5+5x7+…+(2x〃ー1)x(2x〃+1)224ノ6/(2xn)2例如,当形参n的值为10时,函数返回:9.612558。^includedoublefun(intn){inti;doubles,t;**/s=_1_;0**/for(i=l;i<=_2_;i++)n{t=2.0*i;**/s=s+(2.〇・i-l)*(2.0*i+l)/_3_;(t*t))returns;}main(){intn=-l;while(n<0){printf("Pleaseinput(n>0):");scanf("%d",&n);}printf("

531Theresultis:%f

532",fun(n));}86.给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。例如,形参s所指的字符串为:ThisisaClanguageprogram,函数的返回值为6〇#includeintfun(char*s){intn=0,flag=0;while(*s!=,\0'){if(*s!=,'&&flag==0){♦*/_1_;flag=l;}n++**/if(*s=='')flag=—2—;0**/_3_;s++}returnn;

533)main(){charstr[81];intn;printfl

534Enteralinetext:

535");gets(str);n=fun(str);printfl

536Thereare%dwordsinthistext.

537

538”,n);}86.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。ttincludettdefineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename){FILE*fp;inti,j;STUs[N],t;**/fp=fopen(filename,—1—);"rb”fread(s,sizeof(STU),N,fp);fclose(fp);for(i=0;is[j].sno{t=s[i];s[i]=s[j];s[j]=t;}fp=fopen(filename,"wb");**/_3_(s,sizeof(STU),N,fp);fwritefclose(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,“MaCha〇〃,91,92,77}},ss[N];inti,j;FILE*fp;fp=fopen("student,dat","wb");fwrite(t,sizeof(STU),5,fp);

539fclose(fp);printf("

540

541Theoriginaldata:

542

543");for(j=0;j

544No:%ldName:%-8sScores:",t[j].sno,t[j].name);for(i=0;i<3;i++)printf("%6.2f",t[j].score[i]);printf("

545");}fun("student,dat");printf("

546

547Thedataaftersorting:

548

549");fp=fopen("student,dat","rb");fread(ss,sizeof(STU),5,fp);fclose(fp);for(j=0;j

550No:%ldName:%-8sScores:",ss[j].sno,ss[j].name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("

551");}88.给定程序中,函数fun的功能是:在形参ss所指字符串数组中,査找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息。ss所指字符串数组中共有N个字符串,且串长小于Mo程序中库函数strstr(sl,s2)的功能是在si串中查找s2子串,若没有,函数值为0,若有,为非。。ttinclude^includettdefineN5defineM15voidfun(char(*ss)[M],char*substr){inti,find=0;**/for(i=0;i<_1_;i++)N**/if(strstr(ss[i],_2_)!=NULL)substr{find=l;puts(ss[i]);printf("

552");}**/if(find==_3_)printf("

553Don'tfound!

554")0}main(){charx[N][M]={"BASIC","Clangwage","Java","QBASIC","Access"),str[M];inti;printf("

555Theoriginalstring

556

557");for(i=0;i

558");printf("

559Enterastringforsearch:");gets(str);fun(x,str);}89.给定程序中,函数fun的功能是:将形参n中,各位上为偶数的取出,并按原来从髙位到低位的顺序组成一个新的数,并作为函数返回。

560例如,从主函数输入ー个整数:27638496,函数返回值为:26846〇#includeunsignedlongfun(unsignedlongn){unsignedlongx=0,s,i;intt;s=n;**/i=_1_;1**/while(_2__)s!=0{t=s%10;if(t%2==0){**/x=x+t*i;i=_3_;i*10}s=s/10;}returnx;}main(){unsignedlongn=-l;while(n>99999999||n<0){printf("Pleaseinput(0

561Theresultis:%ld

562",fun(n));}88.给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2〇ttincludettincludettdefineN5typedefstructnode{intdata;structnode*next;}NODE;voidfun(NODE*h){NODE*p,*q,*r;**/p=_1_;h->next**/if(_2_)return;p->next==NULLq=p->next;p->next=NULL;while(q){r=q->next;q->next=p;**/p=q;q=_3_;r}h->next=p;)NODE*creatlist(inta[]){NODE*h,*p,*q;inti;h=(NODE*)malloc(sizeof(NODE));

563hー>next=NULL;for(i=0;inext=NULL;if(h->next==NULL)h->next=p=q;else{p->next=q;p=q;}}returnh;)voidoutlist(NODE*h){NODE*p;p=h->next;if(p==NULL)printf("ThelistisNULL!

564");else{printf("

565Head");do{printfl-〉%d”,p->data);p=p->next;}while(p!=NULL);printf("ー〉End

566");}}main(){NODE*head;inta[N]={2,4,6,8,10};head=creatlist(a);printf("

567Theoriginallist:

568");outlist(head);fun(head);printf("

569Thelistafterinverting:

570");outlist(head);)88.给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。例如,有!0个正数:4630324061745154826,平均值为:30.500000移动后的输出为:3061715264632404548#include^include#defineN10doublefun(double*x){inti,j;doubleav,y[N];av=0;**/for(i=0;i

571while(i

572");printf(*

573Theaverageis:%f

574”,fun(x));printf(*

575Theresult:

576",fun(x));for(i=0;i

577");}88.给定程序中,函数fun的功能是:判断形参s所指字符串是否是“回文”(Palindrome),若是,函数返回值为1,不是,函数返回值为〇〇“回文"是正读和反读都一样的字符串(不区分大小写字母)。例如,LEVEL和Leve!是“回文”,而しEVLEV不是“回文”。#include^include#includeintfun(char*s){char*lp,*rp;**/lp=_1_;srp=s+strlen(s)-l;while((toupper(*lp)=toupper(*rp))&&(lp

578\"%s\"isaPalindrome.

579

580",s);elseprintf("

581\"%s\"isn'taPalindrome.

582

583",s);}89.给定程序中,函数fun的功能是:在3X4的矩阵中找出在行上最大、在列上最小的那个元素,若没有符合条件的元素则输出相应信息。例如,有下列矩阵:12134781063597程序执行结果为:find:a[2][2]=9#include#defineM3#defineN4

584voidfun(int(*a)[N]){inti=0,j,find=0,rmax,c,k;while((i

585*»i,c,a[i][c]);***/i++)if(!find)printf(^notfound!

586");)main(){intx[M][N],i,j;printf("Enternumberforarray:

587*);for(i=0;i

588");for(i=0;i

589

590");}fun(x);)88.给定程序中,函数fun的功能是:找出形参s所指字符串中出现频率最髙的字母(不区分大小写),并统计出其出现的次数。例如,形参s所指的字符串为:abcAbsmaxless,程序执行后的输出结果为:letter'a':3timesletter's':3times#include#include#includevoidfun(char*s)

591{intk[26]={0},n,i,max=0;charch;while(*s){if(isalpha(*s))*♦/{ch=tolower(_1_);*sn二ch-'a';*♦/k[n]+=_2_;}1s++;**/if(max

592Aftercount:

593");for(i=0;iく26;i++)if(k[i]==max)printf("

594letter\'%c\':%dtimes

595",i+'a',k[i]);main(){chars[81];printf(*

596Enterastring:

597

598*);gets(s);fun(s);)88.给定程序中,函数fun的功能是计算下式:1x3+3x5+5x7+…+(2xn-l)x(2xn+l)224ノ6ノ(2x〃ア直到(2xn-l)x(2xn+l)10ー6,并把计算结果作为函数值返回。#includedoublefun(doublee){inti;doubles,x;***/s=0;i=_1_;0x=1.0;while(x>e){***/_2_:i++

599***/x=(2*i-l)*(2*i+l)/((_3_)*(2*i));2.0*is=s+x;)returns;)main(){doublee=le-6;printf("

600Theresultis:%f

601,fun(e));}96.给定程序中,函数fun的功能是建立一个NXN的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为:11111122211232112221ttinclude^defineN7***/voidfun(int(*a)_1)[N]{inti,j,k,m;if(N%2==0)m=N/2;elsem=N/2+l;for(i=0;iくm;i++)***/{for(j=_2_;j

602");for(i=0;i

603");}

60497.给定程序中,函数fun的功能是:找出NXN矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的ー维数组中。ttinclude#defineN4voidfun(int(*a)[N],int*b){inti,j;for(i=0;i

605Thematrix:

606*);for(i=0;i

607*);}***/fun(_3_);x,yprintf(*

608Theresultis:*);for(i=0;i

609");)98.给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置〇)。^include#defineN20voidfun(int*a){inti,x,n=0;x=rand()%20;***/while(n<_1_)N{for(i=0;i

610})main(){intx[N]={0},i;fun(x);printf(*Theresult:

611");for(i=0;i

612*);}printf(*

613

614*);99.给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。例如,输入ー个整数:27638496,函数返回值为:64862〇^includeunsignedlongfun(unsignedlongn){unsignedlongx=0;intt;while(n){t=n%10;**/if(t%2==_l_)0**/x=_2_+t;x*10**/n=_3_;n/10)returnx;}main(){unsignedlongn=-l;while(n>99999999||n<0){printf("Pleaseinput(0

615Theresultis:%ld

616",fun(n));}100.下列给定程序中,函数fun()的作用是:将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“Ab,cD”,则输出“ab,cd”。试题程序:^include#include#include

617char_1_fun(chartt[])*{inti;for(i=0;tt[i];i++)if((tt[i]>=,A')&&(tt[i]<=_2_))'Z'tt[i]+=32;}return(tt);)main(){chartt[81];printf(*

618Pleaseenterastring:つ;gets(tt);printf(*

619Theresultstringis:

620%s”,fun(_3_));tt}

621改错题1、给定程序中fun函数的功能是:根据整型形参m的值,计算如下公式的值:1112*23*3ro*m例如,若m中的值为5,则应输出0.536389。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!^includedoublefun(intm){doubley=1.0;inti;/**************found**************/for(i=2;i

622Theresultis%lf

623”,fun(n));2、给定程序中fun函数的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。例如,当s所指字符串为“ABCD”时,则t所指字符串的内容应为“ABCDDCBA”ttinclude^include/************found************/voidfun(chars,chart)改为:voidfun(char*s,char*t){inti,d;d=strlen(s);for(i=0;i

624/************found************/改为:t[2*d]='、0';mainO{chars[100],t[100];printf(^'nPleaseenterstringS:");scanf('版“,s);fun(s,t);printf("

625Theresultis:%s

626",t);}3、给定程序中fun函数的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。例如:字符串中的数据为:AABBCCDDEEFF,则应输出ABBCDDEFF。ttinclude^include#defineN80voidfun(char*s,chart[]){inti,j=0;for(i=0;i

627Pleaseenterstrings:");gets(s);fun(s,t);printf("

628Theresultis:%s

629",t);}4、给定程序中fun函数的功能是:计算n!。例如,给n输入5,则输出120.000000〇^includedoublefun(intn){doubleresult=1.0;/************found************/ifn==0改为:if(n==0)return1.0;while(n>1&&n<170)/************found************/result*=nー改为:result*=n-;returnresult;

630main(){intn;printf(*InputN:");scanf&n);printf(*

631

632%d!=%lf

633

634*,n,fun(n));5、给定程序中fun函数的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。^includeintfun(){inta[3][3],sum;inti,j;/*********found**********/!改为:sum=0for(i=0;i<3;i++){for(j=0;j<3;j++)/*********found**********/scanf(*%d*,a[i][j]);改为:scanf("%d”,&a[i][j]);)for(i=0;i<3;i++)sum=sum+a[i][i];printf("Sum=%d

635”,sum);)main(){fun();}6、给定程序中fun函数的功能是:求s二…羽ー...-aaa-aa-a,(此处aa…aa表示n个a,a和n的值在1至9之间)。例如,a=3,n=6,则以上表达式为:s=333333-33333-3333-333-33-3,其值是:296298。a和n是fun函数的形参。#includelongfun(inta,intn){intj;/**************found**************/longs=0,t=1:改为:longs=0,t=0;/**************found**************/for(j=0;j<=n;j++)改为:for(j=0;j

636/**************found**************/t=t%10;改为:t=t/10;s=s-t;}return(s);main(){inta,n;printf(

637Pleaseenteraandn:);scanf(&a,&n);printf("Thevalueoffunctionis:%ld

638",fun(a,n));}7、给定程序中fun函数的功能是:求k!(k<13),所求阶乘的值作为函数值返回。例如:若k=10,则应输出362880〇。ttincludelongfun(intk)(/************found************/ifk>0改为:if(k>0)return(k*fun(k-l));/************fotind************/elseif(k=0)改为:elseif(k==0)returnIL;main(){intk=10;printf("%d!=%ld

639",k,fun(k));}8、给定程序中fun函数的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。例如,n=8时,输入:193.99,195.673,195.757,196.051,196.092,196.596,196.579,196.763,所得平均值为:195.838745,在平均值以上的实数个数应为:5〇ttincludeintfun(floatx[],intn)|/************fotind************/intj,c=0,floatxa=0.0;改为:intj,c=0;floatxa=0.0;for(j=0;j

640”,xa);for(j=0;j

641if(x[j]=>xa)改为:if(x[j]>=xa)c++;returnc;main(){floatx[100]={193.199,195.673,195.757,196.051,196.092,196.596,196.579,196.763};printf("%d

642”,fun(x,8));}9、给定程序中fun函数的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。例如:若输入“Ab,cD”,则输出“AB,CD”^include#includechar*fun(chartt[]){inti;for(i=0;tt[i];i++)/**********found***********/if(('a'<=tt[i])||(tt[i]くニ'z'))改为:if((tt[i]>='a)&&(tt[i]<='z'))/**********found***********/tt[i]+=32J改为:tt[i]-=32;return(tt);main(){chartt[81];printf("

643Pleaseenterastring:");gets(tt);printf("

644Theresultstringis:

645%s”,fun(tt));}10、给定程序中fun函数的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数这前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGHottinclude/**********found**********/fun(char*p)改为:voidfun(char*p)

646{charmax,*q;inti=0;max=p[i];while(p[i]!=0){if(maxp)改为:while(q>p){*q=*(q-l);q—;}p[0]=max;}main(){charstr[80];printf(Enterastring:");gets(str);printfl

647Theoriginalstring:");puts(str);fun(str);printfl

648Thestringaftermoving:);puts(str);printf("

649

650");}11、给定程序MODILCJ是建立一个带头结点的单向链表,并用随机函数为各结点赋值。给定程序中fun函数的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。^includettincludetypedefstructaa{intdata;structaa*next;}NODE;intfun(NODE*h){intsum=0;NODE*p;/***********found**********/改为:p=h->next;改为:while(p)改为:p=p->next;P=h;/***********found**********/while(p->next){if(p->data%2==0)sum+二pー〉data;/***********found**********/p=h->next;)returnsum;

651NODE*creatlink(intn){NODE*h,*p,*s,*q;inti,x;h=p=(NODE*)malloc(sizeof(NODE));for(i=l;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%16;s->next=p->next;p->next=s;p=p->next;}p->next=NULL;returnh;)outlink(NODE*h,FILE*pf){NODE*p;p=hー〉next;fprintf(pf,"

652

653THELIST:

654

655HEAD");while(p){fprintf(pf,"ー〉%d,p->data);p=p->next;}fprintf(pf,"

656");)outresult(ints,FILE*pf){fprintf(pf,A

657Thesumofevennumbers:%d

658",s);}main(){NODE*head;inteven;head=creat1ink(12);headー〉data=9000;outlink(head,stdout);even=fun(head);printf("

659Theresult:

660");outresult(even,stdout);12、给定程序中fun函数的功能是:求三个数的最小公倍数。例如,给主函数中的变量xl,x2,x3分别输入15112,则输出结果应当是:330〇ttinclude/************found************/改为:fun(intx,改为:j二x;改为:fun(intx,y,z)inty,intz){intj,t,n,m;/************found************/j=1;t=j%x;m=j%y;n=j%z;/************found************/while(t!=0&&m!=0&&n!=0)while(t!=0||m!=0||n!=0){j=j+1;t=j%x;m=j%y;n=j%z;

661改为:returnj;/************fourid************/returni;)main(){intxl,x2,x3,j;printf("Inputxlx2x3:");scanf("%d%d%d",&xl,&x2,&x3);printf("xl=%d,x2=%d,x3=%d

662",xl,x2,x3);j=fun(xl,x2,x3);printf("Theminimalcommonmultipleis:%d

663",j);}13、给定程序中fun函数的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。例如:当s听字符串为“ABCDE”时,则t中的字符串应为“ABCDEEDCBA”。^include#includevoidfun(char*s,char*t){inti,si;si=strlen(s);/************found************/for(i=0;i<=sl;i++)改为:for(i=0;i

664Pleaseenterstrings:");scanfs);fun(s,t);printf(*Theresultis:%s

665,t);)14、给定程序中fun函数的功能是:从s所指字符串中删除所有小写字母c。^includevoidfun(char*s){inti,j;for(i=j=0;s[i]!='\0';i++)if(s[i]!-c*)/************fotind************/s[j]=s[i];改为:s[j++]=s[i];/************found************/

666s[i]ハ。';main(){chars[80];printflEnterastring:");gets(s);printf("Theoriginalstring:");puts(s);fun(s);printf("Thestringafterdeleted:");puts(s);printf("

667

668");15、给定程序中fun函数的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中al放个位数,a2放十位数。^include改为:intfun(int改为:for(k=10;k<55;改为:a2=k/10;/************found************/fun(int*b)*b){intk,al,a2,i=0;/************found************/for(k=10;k<=55;k++){k++){/************foiind************/a2=k/10;al=k-a2*10;if((k%3==0&&a2==5)||(k%3==0&&al=5)){b[i]=k;i++;}}/************foiind************/returnk;改为:returni;)main(){inta[100],k,m;m=fun(a);printf<'Theresultis:

669");for(k=0;k

670");16、给定程序中fun函数的功能是:求S的值。~I242メ(2げS=xxxL1・33-55,7(2と-1)(2た+1)例如,当k为10时,函数值应为:1.533852。^include#include

671/************fourid************/voidfun(intk)k){intn;floats,w,p,q;n=1;s=1.0;while(n<=k){w=2.0*n;p=w-1.0;q=w+1.0;s=s*w*w/p/q;n++;}/************found************/returns)main(){printf("%f

672”,fun(10));}改为:floatfun(int改为:returns;17、给定程序中fun函数的功能是:将十进制正整数m转换成k(2くニkく=9)进制数,并按髙位到低位顺序输出。1000)o^include^include/**********found**********/fun(intm,intk)intk){intaa[20],i;for(i=0;m;i++){/**********found**********/aa[i]=m/k;m/=k;}for(;i;i-)/**********found**********/printf("%d”,aa[i]);aa[i-1]);改为:voidfun(intm,改为:aa[i]=m%k;改为:printf("%d”,例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是main()

673{intb,n;printf('

674Pleaseenteranumberandabase:

675");scanf("%d%d”,&n,&b);fun(n,b);printf('

676");}18、给定程序中fun函数的功能是:根据整型形参n,计算如下公式的值。.一1A1例如:若n=10,则应输出0.617977.ttinclude/************foiind************/intfun(intn)n){floatA=1;inti;/************found************/for(i=2;i

677Pleaseentern:");scanf("%d",&n);printf("A%d=%f

678”,n,fun(n));}19、给定程序中fun函数的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。ttinclude#defineM5/************found************/intfun(intn,intxx[][])改为:intfun(intn,intxx[M][M]){inti,j,sum=0;printf("

679The%dx%dmatrix:"”,M,M);for(i=0;i

680");}for(i=0;i

681{intaa[M][M]={{1}2,3,4,5},{4,3,2,1,0),{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};printf("

682Thesumofallelementson2diagnalsis%d.”,fun(M,aa));}20、给定程序中fun函数的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中从此地址开始的字符串;若未打到,则函数值为NULL。例如:当字符串中的内容为:“abcdabfabcdx”,t中的内容为“ab”时,输出结果为:abcdxo当字符串中的内容为:“abcdabfabcdx”,t中的内容为“abd”时,则程序输出未打到住处:notbefound!^include#includechar*fun(char*s,char*t){char*p,*r,*a;/************found************/a=Null;改为:a=NULL;while(*s){P=s;r=t;while(*r)/************f()und************/if(r=p)改为:if(r*==*p){r++;p++;}elsebreak;if(*r=‘、〇')a=s;s++;}returna;)main(){chars[100],t[100],*p;printf("

683PleaseenterstringS:");scanf("%s",s);printf("

684Pleaseentersubstringt:");scanf("%s",t);p=fun(s,t);if(p)printf("

685Theresultis:%s

686",p);elseprintf("

687Notfound!

688");}21、给定程序中fun函数的功能是:统计ー个无符号整数中各位数字值为零的个数,通过形参传回主函数,并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。^includeintfun(unsignedn,int*zero){intcount=0,max=O,t;do

689{t=n%10;/**************found**************/if(t=0)改为:if(t==0)count++;if(max

690lnputn(unsigned):");scanf("%d",&n);max=fun(n,&zero);printfl

691Theresult:max=%dzero二%d

692”,max,zero);}22、给定程序中fun函数的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。^includelongfun(intx,inty,long*p){inti;longt=l;/**************found**************/for(i=l;i

693lnputxandy:);scanf("%ld%ld”,&x,&y);t=fun(x,y,&r);printf('

694

695x二%d,y=%d,r=%ld,last二%ld

696

697”,x,y,r,t);23、给定程序中fun函数的功能是:给ー维数组a输入任意4个整数,并按下列的规律输出。例如输入1,2,3,4«程序运行后输出以下方阵。4123341223411234^include^defineM4/**************found**************/voidfun(inta)改为:voidfun(inta[M]){inti,j,k,m;printf("Enter4number:");for(i=0;i

698

699Theresult:

700

701");for(i=M;i>0;i--){k=a[M-l];

702for(j=M-l;j>0;j")/**************found**************/aa[j]=a[j-l]:改为:a[j]=a[j-l];a[0]=k;for(m=0;m

703");main(){inta[M];fun(a);printf<

704

705");}24、在主函数中从键盘输入若干个数放入数组中,用〇结束输入并放在最后ー个元素中。给定程序中fun函数的功能是:计算数组元素中值为正数的平均值(不包括〇)。例如,数组中元素中值依次为:39,-47,21,2,-8,15,0,则程序运行结果为19.250000。♦♦includedoublefun(intxロ)|/************found************/intsum=0.0:改为:doublesum=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;}

706改为:sum/=c;/************found************/sum\=c;returnsum;main(){intx[1000];inti=0;printf("

707Pleaseentersomedata(endwith0):");do{scanf("%d”,&x[i]);}while(x[i++]!=0);printf("%f

708”,fun(x));25、给定程序中fun函数的功能是:根据整形形参m,计算如下公式的值:1111V=1+++++2*23*34*4itt*m例如,若m中的值为5,则应输出1.463611。#includedoublefun(intm){doubley=1.0;inti;/**************found**************/ford=2;i

709Theresultis%lf

710”,fun(n));}26、给定程序中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。例如,若输入“Iamastudenttotaketheexamination.则应输出“IaMAstudenTtOtakEthEexaminatioN.”。ttinclude^includevoidfun(char*p){intk=0;for(;*p;p++)if(k)/**********fotind***********/if(p=='')改为:if(*p==',){k=0;/**********fotind***********/*(p-1)=toupper(*(p-1))改为:*(p-1)-

711toupper(*(p-l));})elsek=1;}main(){charchrstr[64];intd;printf("

712PleaseenteranEnglishsentencewithin63letters:");gets(chrstr);d=strlen(chrstr);chrstr[d]='';chrstr[d+1]=0;printfi

713

714Beforechanging:

715力s,chrstr);fun(chrstr);printf("

716Afterchanging:

717%s”,chrstr);)27、给定程序中fun函数的功能是:将n个无序整数从小到大排序。^includettincludefun(intn,int*a){inti,j,p,t;for(j=0;ja[i])/************foiind************/t=i:改为:p=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("

718");}printf("

719");}main(){intaa[20]={9,3,0,4,1,2,5,6,8,10,7},n=U;printf('

720

721Beforesorting%dnumbers:

722",n);putarr(n,aa);fun(n,aa

723);printf("

724Aftersorting%dnumbers:

725",n);putarr(n,aa);}28、给定程序中fun函数的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。ttinclude^includevoidfun(char*s)(/**********found***********/while(*s!=,)改为:while(*s!=‘、。'){if(*s>=,A'&*s<=,Z'II*s>='a'&&*s<=,z'){if(*s==,Z')*s='A';elseif(*s='z')*s='a';else*s+=1;}/**********found***********/(*s)++;改为:s++;))main(){chars[80];printf("

726Enterastringwithlength<80.:

727

728");gets(s);printf('

729Thestring:

730

731");puts(s);fun(s);printf("

732

733TheCords:

734

735");puts(s);}29、给定程序中fun函数的功能是:在字符串的最前端加入n个・号,形成新串,并且覆盖原串。(注意:字符串的长度最长允许为79)。^includettinclude/**********foiind***********/voidfun(chars[],intn)改为:voidfun(char*s,intn){chara[80],*p;inti;/**********fourid***********/S=P;改为:p=s;for(i=0;i

736strcpy(s,a);)main(){intn;chars[80];printf(

737Enterastring:");gets(s);printf("

738Thestringヽ"%s\"

739",s);printf("

740Entern(numberof*):);scanf("%dz,,&n);fun(s,n);printf("

741Thestringafterinster:\"%s\"

742",s);)30、给定程序中fun函数的功能是:实现两个整数的交换。例如给a和b分别输入60和65,输出结果为a=65b=60。ttinclude/**********fotind**********/voidfun(inta,b)改为:voidfun(int*a,int*b){intt;/**********fotind**********/t=b;b=a;a=t;改为:t=*b;*b=*a;*a=t;}main(){inta,b;printf("Entera,b:");scanf("%d%d",&a,&b);fun(&a,&b);printf("a=%db=%d

743",a,b);31、给定程序中fun函数的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为“abcdefg",b所指字符串中的内容为“1234”时,c所指数组中的内容应该为“a4b3c2dlefg”;而当a所指字符串中的内容为“1234”,b所指字符串中的内容为时“abcdefg”,c所指数组中的内容应该为alg2f3e4dcba,\ttinclude^includevoidfun(char*a,char*b,char*c){inti,j;charch;i=0;j=strlen(b)-l;/************found************/while(i>j)改为:while(i

744{ch=b[i];b[i]=b[j];b[j]=ch;i++;j-';}while(*a||*b){if(*a){*c=*a;c++;a++;}if(*b){*c=*b;c++;b++;}}/************found************/c=0;改为:*c=ヘ〇'main(){charsl[100],s2[100],t[200];printf("

745Entersistring:");scanf('版“,si);printf("

746Enters2string:");scanf("%s",s2);fun(si,s2,t);printf("

747Theresultis:%s

748",t);}32、给定程序中fun函数的功能是:读入一个字符串(长度く20),将该字符串中的所有字符按ASCH码升序排序后输出。例如:若输入edcba,则应输出abcde。ttincludevoidfun(chart[]){charc;inti,j;/**********found***********/for(i=strlen(t);i;i—)改为:for(i=strlen(t);i>0;i—)for(j=0;jt[j+1]){c=t[j];t[j]=t[j+1];t[j+1]=c;}

749main(){chars[81];printf("

750Pleaseenteracharacterstring:");gets(s);printf("ヽn'nBeforesorting:

751ヽ"%s\"",s);fun(s);printf("

752Aftersortingdecendingly:

753\"%s\"",s);33、给定程序中fun函数的功能是:将一个八进制数字字符组成的字符串转换为其面值相等的十进制整数。规定输入的字符串最多只能包含5位ハ进制数字字符。例如,若输入77777,则输出将是32767。#includeintfun(char*p){intn;改为:n=*p-'〇';改为:n=n*8+*p-'〇';/**********found**********/n=*P」〇,;p++;while(*p!=0){/**********found**********/n=n*7+*P」〇';p++;}returnn;}main(){chars[6];inti;intn;printf("Enterastring(Ocataldigits):");gets(s);if(strlen(s)>5){printf("Error:Stringtoolonger!

754

755");exit(0);}for(i=0;s[i];i++)if(s[i]<'0'I|s[i]>'7'){printf("Error:%cnotisocataldigits!

756

757",s[i]);exit(0);}printf("Theoriginalstring:");puts(s);n=fun(s);printf("

758%sisconveredtointegernumber:%d

759

760",s,n);34、给定程序中fun函数的功能是:求出以下分数序列的前n项之和。235813211235813和的值通过函数值返回main函数。^include

761/**************found**************/fun(intn)改为:doublefun(intn){inta=2,b=1,c,k;doubles=0.0;for(k=1;k<=n;k++){s=s+1.0*a/b;/**************found**************/c=a;a+=b;b+=c;改为:c=a;a+=b;b=c;)return(s);)main(){intn=5;printf("

762Thevalueoffunctionis:%lf

763”,fun(n));}35、给定程序中fun函数的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。例如,当s所指字符串中的内容为“abcdabfab”,t所指字符串的内容为“ab”,则函数返回整数3.^include^includeintfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){p=s;r=t;while(*r)改为:if(*r==*p)改为:r++;p++;改为:if(*r=/************found************/if(r==p){(/************found************/r++;p++)elsebreak;/************found************/if(rニニ‘、〇')‘、0’)n++;s++;)returnn;main(){chars[100],t[100];intm;printf(^XnPleaseenterstringS:");scanf('版“,s);printf("

764Pleaseentersubstringt;scanf("%s",t);m=fun(s,t);

765printf("

766Theresultis:m=%d

767",m);}36、给定程序中fun函数的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。例如,当s所指的字符串为"ABCDE”时,则t所指的字符串应为“EDCBAABCDE”^include#includevoidfun(char*s,char*t){/************found************/inti:改为:inti,si;si=strlen(s);for(i=0;i

768Pleaseenterstrings:");scanf("%s",s);fun(s,t);printf("Theresultis:%s

769",t);}37、给定程序中fun函数的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。♦♦includevoidfun(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]>=,0'&&s[i]<=,9')/**********found**********/s[j]=s[i]:改为:s[j++]=s[i];/**********found**********/s[j]="ゝ0";改为:s[j]=‘、〇';

770main(){charitem[80];printf(^XnEnterastring:;gets(item);printf('

771

772Thestringis:ヽ"%s\"

773”,item);fun(item);printf("

774

775Thestringofchangingis:\"%s\"

776",item);}38、给定程序中fun函数的功能是:统计字符串中各元音字母(即A,E,I,0,U)的个数。注意,字母不分大小写。例如输入:THIsisaboot,则输出应该是:1、〇、2、2、〇〇#include改为:voidfun(char*s,改为:num[k]=0;/**********found**********/fun(char*s,intnum[5])intnum[5]){intk,i=5;for(k=0;k=0)num[i]++;}}main(){charsl[81];intnuml[5],i;改为:switch(*s)printf("

777Pleaseenterastring:");gets(si);fun(si,numl);for(i=0;i<5;i++)printf("%d",numl[i]);printf("

778");}39、给定程序中fun函数的功能是:计算正整数num的各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是〇。^includelongfun(longnum)(/************found************/

779longk;改为:longk=l;do{k・二num%10;/************fourid************/num\=10;改为:num/=10;}while(num);return(k);}main(){longn;printf("\Pleaseenteranumber:");scanf("%ld",&n);printf("

780%ld

781",fun(n));}40、假定整数数列中的数不重复,并存放在数组中。给定程序中fun函数的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。ttinclude#defineN20fun(int*a,intn,intx){intp=0,i;a[n]=x;while(x!=a[p])p=p+l;/**********found**********/if(P==n)return-1i改为:if(p=n)return-1;else{for(i=p;i

782");for(i=0;i

783lnputx(todelete):");scanf("%d",&x);printf("Delete:%d

784",x);n=fun(w,n,x);if(n=T)printf(“林・Notbefound!***

785

786");else{printf("Thedataafterdeleted:

787");for(i=0;iくn;i++)printf("%5d",w[i]);printf("

788

789");}

79041、给定程序中fun函数的功能是:计算并输出下列级数的前N项之和Sn,直到

791Sn+1大于q为止,q的值通过形参传入。„234N+1"123N例如,若q的值为50.0,则函数值为49.394948。ttincludedoublefun(doubleq){intn;doubles,t;n=2;s=2.0;while(s<=q){t=s;/************fourid************/s=s+(n+l)/n:改为s=s+(double)(n+l)/n;n++;}printf〈n=%d

792”,n);/************found************/returns;改为:returnt;)main(){printf("%f

793”,fun(50));}42、给定程序中fun函数的功能是:根据输入的三个边长(整型值),判断能束构成三角形,构成的是等边三解形还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回〇。#include^include/**************found**************/voidfun(inta,intb,intc)a,intb,intc){if(a+b>c&&b+c>a&&a+c>b){if(a=b&&b=c)/**************found**************/return1;elseif(a==b||b=c||a==c)return2;/**************found**************/elseretrun1改为:intfun(int改为:return3;改为:elsereturn1;elsereturn0;

794}main(){inta,b,c,shape;printf('

795lnputa,b,c:ヽ,scanf("%d%d%d",&a,&b,&c);printf(/z

796a=%d,b=%d,c=%d

797”,a,b,c);shape=fun(a,b,c);printf("

798

799Theshape:%d

800*,shape);)43、给定程序中fun函数的功能是:计算n的5次方的值(规定n的值大于2小于8),通过形参指针传回主函数,并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是16807,其低3位数的和值是15〇ttinclude^includeintfun(intn,int*value){intd,s,i;/**************found**************/d=0;s=0;改为:d=l;s=0;for(i=l;i<=5;i++)d=d*n;*value=d;for(i=l;i<=3;i++){s=s+d%10;/**************found**************/s=s\10J改为:d=d/10;)returns;)main(){intn,sum,v;do{printf("

801Entern(2くnく8):");scanf("%d",&n);}while(n<=2||n>=8);sum=fun(n,&v);printf("

802

803Theresult:

804value=%dsum=%d

805

806”,v,sum);}44、给定程序中fun函数的功能是:判断ー个整数是否是素数,若是返回1,否则返回〇〇在main()函数中,若fun返回1输出YES,若返回〇则输出N0!〇^includeintfun(intm){intk=2;while(k<=m&&(m%k))改为:k++;/************fotind************/k++/************foiind************/if(m=k)改为:if(m==k)return1;elsereturn0;}

807main(){intn;printf("

808Pleaseentern:");scanf("%d",&n);if(fun(n))printf("YES

809");elseprintf("N0!

810");}45、给定程序中fun函数的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。ttinclude^include/**********found**********/voidfun(charstr,charch)改为:voidfun(char*str,charch){while(*str&&*str!=ch)str++;/**********found**********/if(*str==ch)改为:if(*str=‘、0'){str[0]=ch;/**********found**********/str[l]=’0';改为:str[l]=>\0';main(){chars[81],c;printf("

811Pleaseenterastring:

812");gets(s);printf('

813Pleaseenterthecharactertosearch:);c=getchar();fun(s,c);printf('

814Theresultis%s

815”,s);}46、给定程序中fun函数的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并针这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组在14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。ttinclude#defineSIZE20fun(double*s,double*w){intk,i;doublesum;for(k=2,i=O;i

816{w[k]=sum/5;sum=0;k++;}}returnk;}main(){doublea[SIZE],b[SIZE/5];inti,k;k=fun(a,b);printf("Theoriginaldata:

817);for(i=0;i

818");printf("%4.Of",a[i]);}printf("

819

820Theresult:

821");for(i=0;i

822");}47、给定程序中fun函数的功能是:按以下递归公式求函数值。「10(n=l)fun(n)="Lfun(nT)+2(n>l)例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。#include/************f()und************/fun(n)改为:intfun(intn){intc;/************found************/if(n=l)改为:if(n==l)c=10;elsec=fun(n-l)+2;return(c);}main(){intn;printf("Entern:");scanf("%d",&n);printf("Theresult:%d

823

824",fun(n));}48、给定程序中fun函数的功能是:用二分法求方程2ボー4金+3ヰ6=0的一个根,并要求绝对误差不超过0.001。例如,若给m输入ー100,给n输入90,则函数求得一个根值为2.〇〇〇〇#include^includedoublefunx(doublex){return(2*x*x*x-4*x*x+3*x-6);}doublefun(doublem,doublen)|/************found************/intr;改为:doubler;r=(m+n)/2;

825/************fc)und************/while(fabs(n-m)<0.001)改为:while(fabs(n-m)>0.001){if(funx(r)*funx(n)<0)m=r;elsen=r;r=(m+n)/2;}returnr;}main(){doublem,n,root;printf("Entermn:

826");scanf("%lf%lf",&m,&n);root=fun(m,n);printf("root=%6.3f

827",root);}49、给定程序中fun函数的功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。^includettdefineN20voidfun(inta[],intn){inti,j,t,p;for(j=0;j

828");

829fun(a,m);printf(〃排序后的数据:〃);for(i=0;i

830");}50、给定程序中fun函数的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。例如,当x的值为9、y的值为11、z的值为15时,函数值为ー3.50。^include#include^include/************found************/ttdefineFU(m,n)(m/n)改为:SdefineFU(m,n)(m)/(n)floatfun(floata,floatb,floatc){floatvalue;value=FU(a+b,a-b)+FU(c+b,c-b);/************found************/Return(Value);改为:return(value);)main(){floatx,y,z,sum;printf("Inputxyz:");scanf("%f%f%f",&x,&y,&z);printf("x=%f,y=%f,z=%f

831",x,y,z);if(x==y||y=z){printf("Dataerror!

832");exit(0);}sum=fun(x,y,z);printf("Theresultis:%5.2f

833",sum);}51、给定程序中fun函数的功能是:根据形参m的值,计算如下公式的值:+-+-+—+1十——m例如,若输入5,则应输出2.283333。^includedoublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/改为:t+=1.0/i;t+=1.0/k;/**********found**********/改为:returnt;

834main(){intm;printf(^XnPleaseenter1integernumber:");scanf("%d",&m);printf("

835Theresultis%lf

836",fun(m));}52、给定程序中fun函数的功能是:用递归算法计算裴波拉契数列中第n项的值,从第1项起,裴波拉契数列为:1、1、2、3、5、8、13、21……例如,若给n输入7,则裴波拉契数值为13。^includelongfun(intg)(/**********found**********/switch(g);改为:switch(g):{case0:return0;/**********found**********/case1;case2:return1;改为:case1:case2:return1;)return(fun(g-1)+fun(g-2));}main(){longfib;intn;printf("Inputn:");scanf("%d",&n);printf("n=%d

837",n);fib=fun(n);printf("fib=%d

838

839",fib);}53、给定程序中fun函数的功能是:用冒泡法对6个字符串按由小到大顺序进行排列。^include♦♦include♦♦defineMAXLINE20/**************found**************/fun(char*pstr[6])改为:voidfun(char*pstr[6]){inti,j;char*p;for(i=0;i<5;i++){/**************found**************/for(j=i+1,j<6,j++)改为:for(j=i+l;jく6;j++)

840/**************found**************/改为:改为:*(pstr+i)if(strcmp(*(pstr+i),(pstr+j))>0)if(strcmp(*(pstr+i),*(pstr+j))>0){P=*(pstr+i);/**************found**************/*(pstr+i)=pstr+j;=*(pstr+j);*(pstr+j)=p;}main(){inti;char*pstr[6],str[6][MAXLINE];for(i=0;i<6;i++)pstr[i]=str[i];printfl

841Enter6string(lstringateachline):

842);for(i=0;i<6;i++)scanf("%s”,pstr[i]);fun(pstr);printf("Thestringsaftersorting:

843");for(i=0;i<6;i++)printf("%s

844”,pstr[i]);}54、给定程序中fun函数的功能是:将m(K=m<=10)个字符串连接起来,组成ー个新串,放入Pt所指存储区中。例如,把3个串“abc”,“CD”,“EF”连接起来,结果是“abcCDEF”。ttinclude^include/************found************/intfun(charstr[][10],intm,char*pt)改为:voidfun(charstr[][10],intm,char*pt)/************fotind************/改为:intk,q,i;改为:pt[i]=str[k][i];Intk,q,i;for(k=0;k

845Pleaseenterm:")

846scanf("%d",&m);gets(s[〇]);printf("

847Pleaseenter%dstring:

848",m);for(h=0;h

849Theresultis:%s

850”,p);}55、已知一个数列从第0项开始的前三项分别为〇、0、1,以后各项都是其相邻前三项之和。给定程序中fun函数的功能是:计算并输出该数列前n项的平方根之和,n的值通过形参传入。例如,当n=10时,输出结果为23.197745〇#include^include/************found************/fun(intn)改为:doublefun(intn){doublesum,sO,si,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;sO=0.0;si=0.0;s2=1.0;for(k=4;k<=n;k++){s=sO+si+s2;sum+=sqrt(s);sO=si;si=s2;s2=s;}/************found************/returnsum改为:returnsum;}main(){intn;printf("InputN=");scanf("%d",&n);printf("%f

851",fun(n));}56、给定程序中fun函数的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,numl和num2分别输入49和21,则输出最大公约数为7;若给numl和num2分别输入27和81,则输出最大公约数为27。^includeintfun(inta,intb){intr,t;if(a

852{intnuml,num2,a;printf("Inputnumlnum2:");scanf("%d%d",&numl,&num2);printf("numl=%dnum2=%d

853

854",numl,num2);a=fun(numl,num2);printf("Themaximuncommondivisoris%d

855

856",a);}57、给定程序中creatlink函数的功能是:创建带头节点的单向链表,并为各节点数值域赋〇到m-1的值。#include^includetypedefstructaa{intdata;structaa*next;}NODE;NODE*Creatlink(intn,intm){NODE*h=NULL,*p,*s;inti;/**********found***********/p=(NODE)malloc(sizeof(NODE));改为:p=(NODE*)malloc(sizeof(NODE));h=p;/**********found***********/p->next=NULL;改为:p=s;for(i=l;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));/**********found***********/s->data=rand()%m;改为:s->data=rand()%(m-1);sー〉next二p->next;p->next=s;p=p->next;}/**********found***********/returnp;改为:returnh;}outlink(NODE*h){NODE*p;p=h->next;printf("

857

858THELIST:

859

860HEAD");while(p){printf("->%d",p->data);p=p->next;}printf("

861");}main(){NODE*head;head=Crea11ink(8,22);outlink(head);}58、给定程序中fun函数的功能是:计算整数n的阶乘。^includedoublefun(intn){doubleresult=l.0;

862while(n>l&&n<170)/*********found*********/result*=―n;改为:result*=n-;/*********found*********/return;改为:returnresult;}main(){intn;printf("Enteraninteger:");scanf("%d",&n);printf("

863

864%d!=%lg

865

866”,n,fun(n));}59、给定程序中fun函数的功能是:删除p所指字符串中的所有空白字符(包括Tab、回车符及换行符)。输入字符串时用’#,结束输入。ttinclude^includettincludefun(char*p){inti,t;charc[80];/************found************/For(i=0,t=0;p[i];i++)改为:for(i=0,t=0;p[i]:i++)if(!isspace(♦(p+i)))c[t++]=p[i];/************found************/c[t]="、〇”;改为: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]=’、〇';fun(s);puts(s);}

86760、数列中,第一项值为3,后ー项都比前ー项的值增5;给定程序中fun函数的功能是:计算前n项(4くnく50)项的累加和,在累加过程中把那些被4除后余2的当前累加值放入数组中,符合条件的累加值的个数作为函数值返回主函数。例如,当n的值为20时,该数列为3,8,13,18,23,28-93,98〇符合此条件的累加值应为42,126,366,570,1010ottinclude#defineN20intfun(intn,int*a){inti,j,k,sum;/**************found**************/sum=j==0;改为:sum=j=0;for(k=3,i=0;i

868Entern(4

869

870Theresult:

871");for(i=0:i

872

873");}61、给定程序中fun函数的功能是:计算S=f(-n)+f(-n+l)+…+f(0)+f(l)+f(2)+…f(n)的值。例如,当n为5时,函数值应为:10.407143。f(x)函数定义如下:且或〇〇〇>一一くXXX2r(x+l)/(x-2)f(x)=-j0L(xT)/(x-2)ttincludettinclude/************fourid************/f(doublex)改为:doublef(doublex){if(x=0.0||x==2.0)return0.0;elseif(x<0.0)return(x-1)/(x-2);elsereturn(x+1)/(x-2);}doublefun(intn){inti;doubles=0.0,y;for(i=-n;i<=n;i++){y=f(1.0*i);s+=y;}

874改为:returns;/************found************/returns)main(){printf("%f

875”,fun(5));}62、给定程序中fun函数的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调,次最大数和中的数对调。ttinclude#defineN20改为:voidfun(int改为:m=i+l;改为:if(a[k]>a[m])/**********found**********/intfun(int*a,intn)*a,intn){inti,m,t,k;for(i=0;i<2;i++){/**********found**********/m=0;for(k=i+l;ka[m])k=m;m=k;t=a[i];a[i]=a[m];a[m]=t;}main(){intx,b[N]={ll,5,12,0,3,6,9,7,10,8},n=10,i;for(i=0;i

876");fun(b,n);for(i=0;iintfun(intm){inti,k;for(i=m+1;;i++){for(k=2;k=i)return(i);}

877}main(){intn;clrscr();printf("

878pleaseentern:;scanf(“%d",&n);printf(a%d

879w,fun(n));}64、给定程序中fun函数的功能是:将p所指字符串中的所有字符复制到b中,要求复制三个字符之后插入一个空格。例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK,调用函数之后,字符数组b中的内容则为:ABCDEFGHIJKo#includevoidfun(char*p,char*b){inti,k=0;while(*p)/**********found**********/i二1;/**********found**********/while(i<=3||*p)*P){/**********found**********/b[k]=p;k++;p++;i++;}if(*p){/**********found**********/b[k++]="改为:i=0;改为:while(i<3&&改为:b[k]=*p;改为:b[k++]=,,;b[k]='、O';)main(){chara[80],b[80];printf(*Enterastring:つ;gets(a);printf(*Theoriginalstring:");puts(a);fun(a,b);printf(*

880Thestringafterinsertspace:");puts(b);printf('

881

882");}65、给定程序中fun函数的功能是:计算小于形参k的最大的10个能被!3或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622〇ttincludeintfun(intk){intm=0,mc=O,j;while((k>=2)&&(me<10))(/************found************/if((k%13=0)II(k%17=0))改为:if((k%13=0)||(k%17==0))

883{m=m+k;mc++;}k一;1returnm;/************found************/改为:}main(){printf("%d

884”,fun(500));}66、给定程序中fun函数的功能是:将长整形数中每一位上为奇数的数依次取出,构成一个新书放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531〇^includevoidfun(longs,long*t){intd;longsl=l;/************fotind************/t=0J改为:*t=0;while(s>0){d=s%10;/************fotind************/if(d%2=0)改为:if(d%2!=0){*t=d*si+*t;si*=10;}s/=10;}}main(){longs,t;clrscr();printf("

885Pleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld

886",t);}67、给定程序中fun函数的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的值为3〇程序运行后a中的值为3,b中的值为8〇#include/*********found**********/intfun(intx,inty)改为:intfun(int*x,int*y){intt;/*********found**********/t=x;x=y;y=t;改为:t=*x;*x=*y;*y=t;}main(){inta,b;a=8;b=3;fun(&a,&b);printf(z,%d,%d

887”,a,b);}

88868、给定程序中fun函数的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。ttinclude#includettdefineN80voidinsert(char*aa){inti,j,n;charch;/**********found**********/n=strlen[aa];改为:n=strlen(aa);for(i=l;i=0)&&(ch

889",a);insert(a);printf("Thestringaftersorting:%s

890

891",a);}69、给定程序中fun函数的功能是:为ー个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。^include^includevoidfun(inta,int*b,int*c){inti,j,d,y;for(i=3;i<=a/2;i=i+2){/**************found**************/Y=l:改为:y=l;for(j=2;j<=sqrt((double)i);j++)if(i%j==0)y=0;if(y==l){/**************found**************/d==a-i;改为:d=a-i;for(j=2;j<=sqrt((double)d);j++)

892if(d%j=O)y=0;if(y=l){*b=i;*c=d;})}}main(){inta,b,c;do{printf("

893lnputa:");scanf("%d",&a);}while(a%2);fun(a,&b,&c);printf("

894

895%d=%d+%d

896”,a,b,c);)70、给定程序中fun函数的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。ttinclude/**********fotind**********/charfun(char*s,char*t)改为:char*fun(char*s,char*t){intsl=0,tl=0;char*ss,*tt;ss=s;tt=t;while(*ss){sl++;/**********found**********/(*ss)++;改为:ss++;}while(*tt){tl++;/**********found**********/(*tt)++;改为:tt++;)if(tl>sl)returnt;elsereturns;main()

897{chara[80],b[80],*p,*q;inti;printf("

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

899Enterastringagain:");gets(b);printf('

900Thelongeris:

901

902ヽ"%s\"

903”,fun(a,b));}71、给定程序中fun函数的功能是:读入ー个英文文本行,将其中每个单词的第一个字符改为大写,然后输出次文本行。(这里的“单词”是指由空格隔开的字符串)。例如,若输入"Iamastudenttotaketheexamination.w,则应输出“IAmAStudentToTakeTheExamination.^include#include/************found************/include(stdio.a)改为:#include“stdio.h"/************found************/upfst(charp)改为:upfst(char*p){intk=0;for(;*p;p++)if(k){if(*p='')k=0;}elseif(*p!=''){k=1;*p=toupper(*p);}}main(){charchrstr[81];printf("

904PleaseenteranEnglishtextline:");gets(chrstr);printf(

905

906Beforechanging:

907%s",chrstr);upfst(chrstr);printf(

908Afterchanging:

909%s

910",chrstr);)72、给定程序中fun函数的功能是:根据形参m的值(2<=m<=9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。例如,若输入2,则输出1224若输入4,则输出1234246836912481216^include#defineM10inta[M][M]={0};改为:voidfun(int/**************found**************/fun(int**a,intm)(♦a)[M],intm){intj,k;for(j=0;j

911(k+1)*(j+1);)main(){inti,j,n;printf("Entern:*);scanf("%d",&n);fun(a,n);for(i=0;i

912");}73、给定程序中fun函数的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m<=10)名学生来,并将这些学生数据存放在ー个动态分配的连续存储区中,此存储区的首地址作为函数值返回。ttincludettinclude^include#defineN10typedefstructss{charnum[10];ints;}STU;STU*fun(STUa[],intm){STUb[N],*t;inti,j,k;/**********found**********/t=(STU*)calloc(sizeof(STU),m)改为:t=(STU*)malloc(sizeof(STU));for(i=0;ib[j].s)j=i;/**********found**********/t(k)=b(j):改为:t[k]=b[j];b[j].s=O;}returnt;)outresult(STUa[],FILE*pf){inti;for(i=0;i

913",a[i].num,a[i].s);fprintf(pf,"

914

915");}

916main(){STUa[N]={{"A01”,81},{〃A02”,89},{"A03”,66},{“A04",87},{〃A05”,77},{"A06",90},{〃A07〃,79},{“A08”,61},{"A09",80},{"A10",71});STU*p0rder;inti,m;printf("*****TheOriginaldata*****

917");outresult(a,stdout);printf("

918Givethenumberofthestudentswhohavebetterscore:");scanf("%d",&m);while(m>10){printf(z,

919Givethenumberofthestudentswhohavebetterscore:つ;scanf("%d",&m);}pOrder=fun(a,m);printf("*****THERESULT*****

920");printf("Thetop:

921");for(i=0;i〈m;i++)printf("%s%d

922",pOrder[i].num,pOrder[i].s);free(pOrder);}74、给定程序中fun函数的功能是:从低位开始取出长整形变量s中奇数为上的数,依次构成一个新书放在t中。高位仍在高位,地位仍在低位。例如,当s中的数为:7654321时,t中的数为7531。^include/************f()und************/voidfun(longs,longt)改为:voidfun(long5,long*t){longsl=10;*t=s%10;while(s>0){s=s/100;*t=s%10*si+*t;/************f()und************/si=sl*100;改为:si=sl*10;}}main(){longs,t;printf(*

923Pleaseenters:");scanf&s);fun(s,&t);printf("Theresultis:%ld

924",t);}75、给定程序中fun函数的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数有函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:80.5607290.59851.58864,则低于平均分的学生人数为4(平均分为75.5625)。#include^defineN20intfun(float*s,intn,float*aver){floatave,t=0.0;intcount=0,k,i;

925for(k=0;k

926Pleaseenterm:");scanf("%d",&m);printf("

927Pleaseenter%dmark:

928",m);for(i=0;i

929Thenumberofstudents:%d

930",fun(s,m,&aver));printf("Ave=%f

931",aver);}76、给定程序中fun函数的功能是:根据整形形参m,计算如下公式的值。1111y=++++100*100200*200300*300ホm例如,若m=200〇,则应输出0.000160。^include/************found************/fun(intm)改为:doublefun(intm){doubley=0,d;inti;/************found************/for(i=100,i<=m,i+=100)改为:for(i=100;i<=m;i+=100){d=(double)i*(double)i;y+=1.0/d;}return(y);}main(){intn=2000;printf("

932Theresultis%lf

933,fun(n));}77、给定程序中fun函数的功能是:读入ー个整数k(2Ckく=10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2、3、5、7、IE#include/************found************/IsPrime(intn):改为:IsPrime(int

934n){inti,m;m=1;for(i=2;i

935Pleaseenteranintegernumberbetween2and10000:つ;scanf("%d",&k);printf('

936

937Theprimefactor(s)of%dis(are):",k);for(j=2;j<=k;j++)if((!(k%j))&&(IsPrime(j)))printf("

938%4d”,j);printf("

939");}78、给定程序中fun函数的功能是:根据以下公式求冗值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。兀1121231234—=1+—+-X-+-X-X—+-X-X—X—+23353573579^includettincludedoublefun(doubleeps){doubles,t;intn=l;s=0.0;/************fourid************/t=0I改为:t=l.0;/************found************/while(t>eps)改为:while(t>=eps){s+=t;t=t*n/(2*n+l);n++;}/************found************/return(s);改为:return(s*2);}main(){doublex;printf("

940Pleaseenteraprecision:つ;scanf("%lf",&x);printf("

941eps=%lf,Pi二%If

942

943”,x,fun(x));}79、给定程序中fun函数的功能是:分别统计字符串中大些字母和小写字母的个数。例如,给字符串s输入:AAaaBBbl23CCccccd,则应输出结果:upper-6,lower-8。ttinclude

944/**********found**********/voidfun(char*s,inta,intb)改为:voidfun(char*s,int*a,int*b){while(*s){if(*s>='A'&&*sくニ'Z')/**********found**********/*a=a+l;改为:(*a)++;if(*s>='a'&&*sく='z')/**********found**********/*b二b+1;改为:(*b)++;s++;})main(){chars[100];intupper=0,lower=0;printf(z,

945Pleaseastring:);gets(s);fun(s,&upper,&lower);printf("

946upper二%dlower=%d

947”,upper,lower);}80、给定程序中fun函数的功能是:找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。^include^defineN100intfun(int*s,intn){inti,j,k,a,b,c;j=0;for(i=100;i

948k=i;b=k%10;c=k/10;scanf("%d",&n);k=n:改为:a=k%10;k/=10;/**************found**************/b=k%10;k/=10;改为:/**************found**************/c=k%10改为:if(a=b&&a=c)s[j++]=i;}returnj;}main(){inta[N],n,num=O,i;do{printf("

949Entern(<=1000):");while(n>1000);num=fun(a,n);printfi'

950

951Theresult:

952");for(i=0;i

953");}81、由N个有序整数组成的数列已放在ー维数组中,给定程序中fun函数的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回ー1。折半査找的基本算法是:每次査找前先确定数组中待査的范围:low和high(lowhigh,査找结束。^include#defineN10/************fotind************/voidfun(inta[],intm)改为:intfun(intaロ,intm){intlow=0,high=N-l,mid;while(low<=high){mid=(low+high)/2;if(mくa[mid])high=midT;/************found************/elseIf(m>a[mid])改为:elseif(m>a[mid])low=mid+l;elsereturn(mid);)return(-1);}main(){inti,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m;

954printfCa数组中的数据如下:〃);for(i=0;i=0)printf("m=%d,index=%d

955",m,k);elseprintf("Notbefound!

956");}82、给定程序中fun函数的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为ー组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。^includeintfun(){inti,j,k,sum=0;printf("

957Theresult:

958

959");/**************found**************/for(i=0;i<=3;i++)改为:for(i=l;i<=3;i++){for(j=l;j<=5;j++){k=8-i-j;/**************found**************/if(K>=0&&K<=6)改为:if((k>=l&&k<=6)&&(i!=0&&j!=0)I|k==0){sum=sum+l;printf("red:%4dwhite:%4dblack:%4d

960",i,j,k);})}returnsum;}main(){intsum;sum=fun();printf("sum=%4d

961

962",sum);}83、给定程序中fun函数的功能是:根据整型形参m,计算如下公式的值。11123m例如,若主函数中输入5,则应输出ー0.283333。^includedoublefun(intm){doublet=1.0;inti;for(i=2;i<=m;i++)/**********found**********/

963t=1.0-1/i:改为:t一二L0/i;/**********found**********/;改为:returnt;main(){intm;printfl

964Pleaseenter1integernumbers:

965");scanf("%d",&m);printf('

966

967Theresultis%lf

968”,fun(m));}84、给定程序中fun函数的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。^include^includettdefineN80intfun(char*s,char*t){intn;char*p,*r;n=0;while(*s){P=S;/*********found**********/r=p;改为:r=t;while(*r)if(*r==*p){r++;p++;}elsebreak;/*********found**********/if(*r=0)改为:if(*r=‘、〇’)n++;/*********found**********/:改为:s++;}returnn;)main(){chara[N],b[N];intm;printf<

969Pleaseenterstringa:);gets(a);printf("

970Pleaseentersubstringb:;gets(b);m=fun(a,b);printf("

971Theresultis:m=%d

972”,m);}85、给定程序中fun函数的功能是:首先将大写字母转换为对应小写字母,若小写字母为a~u,则将其装换位其后的第5个字母;若小写字母为v~z,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f,若形参是字母W,则转换为小写字母b。^include

973^includecharfun(charc){if(c>='A'&&c<='Z')/**************found**************/C二C+32;改为:c=c+32;if(c>=,a&&c<='u')/**************found**************/c=c-5J改为:c=c+5;elseif(c>='v'&&c<='z')c=c-21;returnc;}main(){charcl,c2;printf('

974Enteraletter(A-Z):");cl=getchar();if(isupper(cl)){c2=fun(cl);printf("

975

976Theletterヽ'%c\'changetoヽ'%c\'

977",cl,c2);}elseprintf("

978Enter(A-Z)!

979");}86、给定程序中fun函数的功能是:将s所指字符串中出现的与tl所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求tl与t2所指字符串的长度相同。例如,当c所指字符串中的内容为“abcdabfab”,tl所指子串中的内容为:“ab”,t2所指子串中的内容为:“99”时,结果在w所指的数组中的内容应为:“99cd99f99”。ttinclude^include/************f()und************/intfun(char*s,char*tl,char*t2,char*w)/・改为:voidfun(char*s,char*tl,char*t2,char*w)*/{inti;char*p,*r,*a;strcpy(w,s);while(*w){p=w;r=tl;/************found************/while(r)改为:while(*r)if(*r==*p){r++;p++;}elsebreak;if(*r=’、〇'){a=w;r=t2;while(*r){/************found************/*a=*r;a++;r++改为:*a=*r;a++;r++;

980w+=strlen(t2);}elsew++;}}main(){chars[100],tl[100],t2[100],w[100];printf(^XnPleaseenterstringS:");scanf("%s”,s);printf("

981Pleaseentersubstringtl:");scanf("%s”,tl);printf("

982Pleaseentersubstringt2:");scanf('%s”,t2);if(strlen(t1)==strlen(t2)){fun(s,tl,t2,w);printf("

983Theresultis:%s

984',w);}elseprintf("Error:strlen(tl)!=strlen(t2)

985");}87、给定程序中fun函数的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCH值大或相等的字符依次放到c所指数组中,形成一个新的字符串。例如,若主函数中a字符串为:aBCDeFgH,主函数中b字符串为:ABcd,则c中的字符串应为:aBcdeFgHo#include^includevoidfun(char*p,char*q,char*c)(/************found************/intk=1;改为:intk=0;/************found************/while(*p!=*q)改为:while(*p||*q){if(*p<*q)c[k]=*q;elsec[k]=*p;if(*p)p++;if(*q)q++;k++;}}main(){chara[10]="aBCDeFgH",b[10]="ABcd",c[80]={‘、〇'};fun(a,b,c);printf("Thestringa:");puts(a);printf("Thestringb:");puts(b);printf("Theresult:");puts(c);)88、给定程序中fun函数的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。例如,输入的数为:551234,输出结果应当是:a-55・0,b-34・0,c~12.〇〇ttincludevoidfun(float*p,float*q,float*s)

986/**********found**********/float*k:改为:floatk;if(*p<*q){k=*p;*p=*q;*q=k;}/**********found**********/if(*p>*s)改为:if(*p<*s){k=*s;*s=*p;*p=k;}if(*q<*s){k=*q;*q=*s;*s=k;})main(){floata,b,c;printf("Inputabc:");scanf("%f%f%f",&a,&b,&c);printf("a=%4.If,b=%4.If,c=%4.lf

987

988",a,b,c);fun(&a,&b,&c);printf("a=%4.If,b=%4.If,c=%4.lf

989

990",a,b,c);}89、给定程序中fun函数的功能是:利用夏明的公式求”的近似值,直到最后ー项的绝对值小于指定的数(参数num)为止:兀111-+---4357例如,程序运行后,输入0.0001,则程序输出3.1414。^include^includefloatfun(floatnum){ints;floatn,t,pi;t=l;pi=0;n=l;s=1;/**************found**************/while(t>=num)改为:while(fabs(t)>=num){pi=pi+t;n=n+2;s=-s;/**************found**************/t=s%n;改为:t=s/n;)pi=pi*4;returnpi;)main(){floatnl,n2;printf("Enterafloatnumber:");scanf("%f",&nl);n2=fun(nl);printf("%6,4f

991”,n2):}90、给定程序中fun函数的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。若high的值为100,则函数的值为732〇ttinclude

992ttincludeintfun(inthigh){intsum=0,n=0,j,yes;/************found************/while((high>=2)&&(n<10)改为:while((high>=2)&&(n<10)){yes=1;for(j=2;j<=high/2;j++)if(high%j==0){/************fotind************/yes=0;break改为:yes=0;break;}if(yes){sum+=high;n++;}high—;}returnsum;}main(){printf("%d

993”,fun(100));}91、给定程序中fun函数的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abed,则应输出deba。^include/************f()und************/fun(chara)改为:voidfun(char*a){if(*a){fun(a+1);/************found************/printf("%c”*a);改为:printf('%c",*a);)}main(){chars[10]="abcd";printf("处理前字符串二%s

994处理后字符串=",s);fun(s);printf('

995");}92、给定程序中fun函数的功能是:求出以下分述序列的前n项之和。和值通

996过函数值返回到main函数。2_3_5^8^13_211'2'3'5'8'13例如,若n=5,则应输出8.391667。#include改为:doublefun改为:s=s+/************found************/fun(intn)(intn){inta,b,c,k;doubles;s=0.0;a=2;b=1;for(k=1;k<=n;k++){/************found************/s=s+(Double)a/b;(double)a/b;c=a;a=a+b;b=c;returns;}main(){intn=5;printf(

997Thevalueoffunctionis:%lf

998,fun(n));}93、给定程序中fun函数的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为642。ttinclude/************foiind************/voidfun(longs,longt)改为:voidfun(longs,long*t){longsl=10;s/=10;*t=s%10;/************found************/while(s<0)改为:while(s>0){s=s/100;*t=s%10*sl+*t;si=si*10;}}main(){longs,t;printf("

999Pleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld

1000",t);94、给定程序中fun函数的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s

1001中的数为:87653142时,t中的数为8642。^includevoidfun(longs,long*t){/************found************/intd;改为:longd;longsl=l;*t=0;while(s>0){d=s%10;/************found************/if(d%2=0)改为:if(d%2=0){*t=d*sl+*t;si♦=10;}/************found************/s\=10;改为:s/=10;}}main(){longs,t;printf("

1002Pleaseenters:");scanf("%ld",&s);fun(s,&t);printf("Theresultis:%ld

1003",t);}95、给定程序中fun函数的功能是:将s所指字符串中最后一次出现的与tl所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求tl与t2所指字符串的长度相同。例如,当c所指字符串中的内容为“abcdabfabc”,tl所指子串中的内容为:“ab”,t2所指子串中的内容为:“99”时,结果在w所指的数组中的内容应为:“abcdabf99c”。ttinclude^include/************found************/intfun(char*s,char*tl,char*t2,char*w)/*改为:voidfun(char*s,char*tl,char*t2,char*w)*/{inti;char*p,*r,*a;strcpy(w,s);/************found************/while(w)改为:while(*w){p=w;r=tl;while(*r)/************found************/IF(*r==*p)改为:if(*r=*p){r++;p++;}elsebreak;if(如='、〇')a=w;w++;}

1004r=t2;while(*r){*a=*r;a++;r++;})main(){chars[100],tl[100],t2[100],w[100];printf("

1005PleaseenterstringS:");scanf("%s",s);printf("

1006Pleaseentersubstringtl:");scanf1’%s,tl);printfi'

1007Pleaseentersubstringt2:");scanf1'%s”,t2);if(strlen(t1)=strlen(t2)){fun(s,tl,t2,w);printf("

1008Theresultis:%s

1009”,w);}elseprintf("

1010Error:strlen(tl)!=strlen(t2)

1011");}96、给定程序中fun函数的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:1axl=—(xO+-)2xO例如,a为2时,平方根为1.414214。ttinclude#include/**********found**********/doublefun(doublea,dounlexO)改为:doublefun(doublea,doublexO){doublexl,y;xl=(xO+a/x0)/2.0;/**********foiind**********/if(fabs(xl-xo)>0.00001)改为:if(fabs(xl-x0)>=0.00001)y=fun(a,xl);elsey=xl;returny;}main(){doublex;printf("Enterx:");scanf("%lf",&x);printf("Thesquarerootof%lfis%lf

1012”,x,fun(x,1.•〇));}97、给定程序中fun函数的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaasIkaaas,子字符串为as,则应输出2。#include

1013/**********found**********/fun(char*str,char*substr)改为:intfun(char*str,char*substr){inti,j,k,num=0;/**********found**********/for(i=0,str[i],i++)改为:for(i=0;str[i];i++)for(j=i,k=0;substr[k]==str[j];k++,j++)if(substr[k+l]=‘、〇'){num++;break;}returnnum;)main(){charstr[80],substr[80];printf("Inputastring:");gets(str);printf("Inputasubstring:");gets(substr);printf("%d

1014",fun(str,substr));}98、给定程序中fun函数的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入ー个字符串数组中。#includettincludettdefineN5#defineM81/**********found**********/fun(char(*sq)[N])改为:char*fun(char(*sq)[M]){inti;char*sp;sp=sq[0];for(i=0;i

1015",N);for(i=0;i

1016Thestring:

1017",N);for(i=0;i

1018Thelongeststring:

1019");

1020puts(longest);}99、下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。给定程序中fun函数的功能是将单向链表结点(不包括头结点)数据域中的最大值,并作为函数值返回。^includettincludetypedefstructaa{intdata;structaa*next;}NODE;/***********found**********/fun(NODE*h)改为:intfun(NODE*h){intmax=-1;NODE*p;P=h;while(p){if(p->data>max)max二p->data;/***********found**********/p=h->next;改为:p=p->next;}returnmax;}outresult(ints,FILE*pf){fprintf(pf,"

1021Themaxinlink:%s

1022”,s);}NODE*creatlink(intn){NODE*h,*p,*s,*q;inti,x;h=p=(NODE*)malloc(sizeof(NODE));for(i=l;i<=n;i++){s=(NODE*)malloc(sizeof(NODE));s->data=rand()%16;sー)next二p->next;p->next=s;p=p->next;}p->next=NULL;returnh;)outlink(NODE*h,FILE*pf){NODE*p;p=h->next;fprintf(pf,"

1023

1024THELIST:

1025

1026HEAD");while(p){fprintf(pf,“ー〉%d",p->data);p=p->next;}fprintf(pf,"

1027");}outresult(ints,FILE*pf){fprintf(pf,”

1028Thesumofevennumbers:%d

1029",s);}main()

1030{NODE*head;inteven;head=creatlink(12);head->data=9000;outlink(head,stdout);even=fun(head);printf("

1031Theresult:

1032");outresult(even,stdout);}100、给定程序中fun函数的功能是:通过某种方式是相两个变量值的交换,规定不允许增加语句和表达式。例如:若变量a中的值原为8,b中的值为3。程序运行后a中的值为3,b中的值为8。ttincludeintfun(int*x,inty){intt;/*********found**********/t=x;x=y;改为:t=*x;*x=y;/*********found**********/return(y);改为:return(t);}main(){inta=3,b=8;clrscr();printf("%d,%d

1033”,a,b);b=fun(&a,b);printf("%d,%d

1034”,a,b);第三部分编程题Lm个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40〇^includettincludettinclude/*第一个for()循环用来计算score数组中分数的总和,然后用aver/二m求出平均值,第二个循环用来找出小于平均分的元素,并放到数组below中,这里要注意j的递增方式。*/intfun(intscore[],intm,intbelow[]){inti,j=0,aver=0;for(i=0;iく叫i++)aver+=score[i];aver/=m;for(i=0;i

1035returnj;main(){inti,n,below[9];intscore[9]={10,20,30,40,50,60,70,80,90);clrscr();n=fun(score,9,below);printf("

1036Belowtheaveragescoreare:);for(i二〇;iくn;i++)printf("%4d”,below[i]);2.请编写函数fun,它的功能是:求出1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。ttincludettinclude/*该题关键就是如何表示能被7或11整除,但不能同时被7和1I整除。用(i%7=0)〃(i%ll=0)来表示能被7或11整除,用!((i%7==0)&&(i%U==0))来表示不能同时被7和11整除。voidfun(int*a,int*n){inti,m=0;for(i=l;i<1000;i++)if(((i%7==0)//(i%ll==0))&&!((i%7==0)&&(i%ll==0))){a[m]=i;m+=l;}*n=m;)main(){intaa[1000],n,k;clrscr();fun(aa,&n);for(k=0;k#include/・由于要求的数不能是偶数故编程时从1开始循环而步长为2这样正好保正i

1037永远的奇数。这里也要注意存放结果的数组PP的下标变化方式。*/voidfun(intx,intpp[],int*n){inti,j=0;for(i=l;i<=x;i=i+2)if(x%i==0)pp[j++]=i;*n=j;)main(){intx,aa[1000],n,i;printf(z,

1038pleaseenteranintegernumber:

1039,z);scanf("%d",&x);fun(x,aa,&n);for(i=0;i

1040");3.请编写ー个函数voidfun(char*tt,intppロ),统计在字符串中‘a‘到’z'26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000・・皐皐暴皐暴暴皐枭・・皐・豪豪皐皐*皐・・皐・暴豪暴皐皐・皐枭暴皐め皐皐臺皐皐*#include#include/*34题:本题采用的是字母的ASCII码值与数组pp下标的对应转换关系分别求出对应字母的个数。第一个for()是给pp赋初值〇,第二个for()用于控制在字符串内从头到尾移动。由于字母‘a'的ASCII码值为97而它的个数要放在pp[〇]中,而‘a'-97的值正好为〇,其它的依此类推。・/voidfun(char*tt,intpp[]){inti;for(i=0;i<26;i++)pp[i]=o;for(;*tt;tt++)if(*tt<=,z'&&*tt>=,a*)pp[*tt-97]++;main(){charaa[1000];intbb[26],k;clrscr();printf(/z

1041Pleaseenteracharstring:/Z丿;scanf(〃/s,aa)fun(aa,bb);for(k=0;k<26;k++)printf('%d”,bb[k]);printf('

1042");

10435.请编写ー个函数voidfun(intm,intk,intxxロ),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入:17,5,则应输出:19,23,29,31,37〇鼻$事事事**品*皐・*專*****事事&*希*斎希・事事る事斎****事事事事ttinclude#include/*本题中的for()循环用来判断ー个数是否为素数,由于个数只能是k个所以用do-while循环来控制。*/voidfun(intm,intk,intxx口){inti,j=0,p=m+l;do{for(i=2;i=p)xx[j++]=p;p++;}while(j

1044pleaseentertwointegers:");scanf("%d%d”,&m,&n);fun(m,n,zz);for(m=0;m

1045");)6.请编写ー个函数voidfun(chara[],charb[],intn),其功能是:删除一・个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个字符串World,然后输入3,则调用该函数后的结果为Wordo

1046Sincludettinclude#definevoidfun皐星皐峯圣・希斎斎皐・圣・專・***皐帯LEN20],intn)(chara[],charb[inti,k=0;for(i=0;a[i]!=,\Q9;i++)if(i!=n)b[k++]=a[i];b[k]ハ0';main()FILE*wf;charstrl[LEN],intn;printf("Entergets(strl);printf("Enterstr2[LEN];thestring:theposition

1047〃);ofthestringdeleted:〃);scanf("%d,z,&n);fun(strl,str2,n);printf("Thenewstringis:%s

1048,str2);wf=fopen("out.dat","w");fun("world",str2,3);fprintf(wf,"%s",str2);fclose(wf);5.请编写ー个函数intfun(int*s,intt,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。例如,输入如下整数:876675896101301401980431451777则输出结果为:6,980。#includettincludeintfun(int*s,intt,int*k){inti,max;max=s[0];for(i=0;imax){max=s[i];*k=i;}main()

1049{inta[10]={876,675,896,101,301,401,980,431,451,777},k;clrscr();fun(a,10,&k);printf(,z%d,%d

1050,z,k,a[k]);5.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。s=l+l/(1+2)+1/(1+2+3)++1/(1+2+3+4++n)例如:若n的值为11时,函数的值为!.833333c事斗・希皐希・希・圣皐・・皐・・希希・事事事品皐******事事・****皐皐**ttincludefloatfun(intn){inti,s;s=0;for(i=0,i<=n,i++){s=s+l/chsdc(i);)return(s);}longchsdc(intn){inti,s;s=0;for(i=0,i

1051PleaseenterN:");scanf("%d",&n);s=fun(n);printf("theresultis:%f

1052",s);NONO();NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n;

1053floats;fp=fopen(〃K:\\kl\\24000322\\in.dat〃,〃r〃);wf=fopen('K:\\kl\\24000322\\out.dat","w");for(i=0;i<10;i++){fscanf(fp,"%d",&n);s=fun(n);fprintf(wf,〃%f

1054〃,s);)fclose(fp);fclose(wf);5.编写函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数且要求m>nop=m!/n!(m-n)!〇例如:!n=12,n=8时,运行结果为495.000000〇皐楽あ皐・・皐・・皐皐・皐皐・皐皐争名生#includelongintfloatq;for(i=l;for(j=l;for(k=l;t=l,s=l,p=l;#includefloatfun(intm,intn){inti,j,k;i<=m;i++)t*=i;j<=n;j++)s*=j;k<=m-n;k++)p*=k;q=(float)t/s/p;returnq;main(){printf("

1055p=%lf

1056”,fun(12,8));6.编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的ー个实根。Xn+l=cos(Xn)迭代步骤如下:⑴取xl初值为0.0;⑵x0=xl,把xl的值赋给x0;⑶xl=cos(x0),求出ー个新的xl;⑷若X0-X1的绝对值小于0.000001«则执行步骤(5),否则执行步骤(2);⑸所求x!就是方程cos(x)-x=0的一个实根,作为函数值返回。程序将输出结果Root=0.739085»

1057ttincludeSincludettincludefloatfun(){floatxO,xl=0;do{xO=xl;xl=cos(xO);}while(fabs(x0-xl)>le-006);returnxl;)main(){printfCroot=%f

1058,z,fun());)IL下列程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如:a数组中的值为,则返回主程序后a数组中的值应为0()0#include#include#include#defineN5/*29题:该题的关键是如何表示出左下半角的元素,当从上往下到第i行时只有左边的i个元素要置为〇(每行总是如此)。用外层for()来控制行而内嵌的for()来控制每行的左边元素,故而在内嵌for()中j最大只能循环到i(即表示出第i行左边的i个元素)。・/intfun(inta[][N]){inti,j;for(i=0;i

1059");for(i=0;i

1060{for(j=0;j

1061〃);)fun(a);printf(zzTheresult

1062zz);for(i=0;i

1063");12.下列程序定义了NXN的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的so例如:若a数组中的值为01279197452383145682则返回主程序后S的值应为3.375〇59141皐峯・希・め・希・希・圣斎・希・・圣あ皐事事・峯枭・希・專・圣皐希・豪・梨梨事・圣ttincludettincludettinclude#defineN5/*注意不能重复计算,第一个for()循环求出第一列与最后一列的和,第二个for()循环求出第一行与最后一行(已除去两头元素),要注意第二个for()中起始为1,最后为N-2。*/doublefun(intw[][N]){inti,t=0;doubles=0;for(i=0;i

1064printf("*****Thearray*****

1065");for(i=0;i

1066");s=fun(a);printf("*****Theresult*****

1067");printf(/zThesumis%lf

1068,z,s);13.请编ー个函数voidfun(inttt[M][N],intpp[N]),tt指向ー个M行N列的二维数组,求出ニ维数组每列中最小元素,并依次放入PP所指ー维数组中。二维数组中的数已在主函数中赋予。あ・あ皐め暴皐・・・專皐皐皐/名事Sinclude"conio.h"Sinclude"stdio.h"#defineM3#defineN4/・注:该题用for(i=0;iくN;i++)来控制ー一列ー一列地找,而内嵌循环for(j=0;j

1069");for(i=0;i

1070printf(w

1071theresultis:

1072");for(k=O;kくN;k++)printf(*%4d*,p[k]);printf('

1073");14.请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:若二维数组中的值为13579则函数值为61。299946999813570・・皐・・皐皐皐*楽臺皐皐專皐皐*皐枭皐楽*暴皐・皐皐專皐皐・皐皐事・め皐・皐・・Sinclude#include#defineM4#defineN5/・注:该题的第一个for()循环是计算矩阵的最上一行和最下一行的总和,第二个for()是计算除两头元素以外的最左一列和最右一列的元素的和,最后sun就是周边元素的和。・/intfun(inta[M][N]){intsum=0,i;for(i=0;i

1074");for(i=0;i

1075");y=fun(aa);printf(,z

1076Thesum:%d

1077〃,y);printf("

1078〃);

107915.请编写ー个函数unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n22)位的整数,则函数求出w的后n-!位的数作为函数值返回。例如:w值为5923,则函数返回9235若w值为923,则函数返回23〇あ皐事・事事あ・***皐********Sincludettinclude/・注:由于unsigned型整数在0-65535这间,只要它大于10000则对10000求余即得出后面4位,否则如果大于1000则对1000求余得出后3位数,这样ー层ー层往小的判断。由于return的作用除了返回值以外,还有当执行到retum时就跳出该程序,所以可以连续的用if()语句。*/unsignedfun(unsignedw){if(w>=10000)returnw%10000;if(w>=1000)returnw%1000;if(w>=100)returnw%100;returnw%10;)main(){unsignedx;printf(/zenteraunsignedintegernumber:〃);scanf("%u〃,&x);if(x<10)printf(,zdataerror!zz);elseprintf(z,theresult:%u

1080zz,fun(x));16.请编ー个函数floatfun(doubleh),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。例如:若h值为8.32433,则函数返回8.32;若h值为8.32533,则函数返回8.33〇ttincludettinclude/・注:h乘以1000后正好是原小数点后第三位做了新数的个位数,然后再进行加5运算时。如原小数点后第三位为4及以下则加5后还是不能进一位(即四舍),如是5及以上则加5后该位就要向前进一位数(即五入)。进行加5运算后除10再赋给ー个整型变量此时就只有原小数点第二位及以前各位保留在整型变量中,最后再对整型变量除100,这样又出现了两位小数。该题中,进行四舍五入后ー定要赋给ー个整型变量才能将不用部分彻底变成〇〇・/floatfun(floath){longt;h=h*lOOO;t=(h+5)/10;return(float)t/100;

1081main()floata;clrscr();printf("Entera:");scanf("%f",&a);printf("Theoriginaldatais:");printf("%f

1082

1083",a);printf("Theresult:%6.2f

1084",fun(a));15.请编ー个函数fun(char*s),该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcbaofun(char*s)皐峯・・事事*希・皐梨專斎・希・あ希・專ttincludettincludettinclude#defineN81/・注:该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次都进行两字符的位置对换,直到中间字符(用s+iくs+n-1-i来控制)。由于s+i中一个地址,因此要注意把它的内容取出再进行换位。即先进行取内容运算・)*/fun(char*s){inti=0,t,n=strlen(s);for(;s+i

1085");printf("Thestringaftermodified:");puts(a);

108618.编写程序,实现矩阵(3行3歹!])的转置(即行列互换)〇例如,若输入下面的矩阵:100200300则程序输出100400700400500600700800900200500800300600900皐・臺皐・・豪暴暴あ皐皐・・皐皐楽・豪皐あ皐*專あ皐・臺・皐皐あ暴暴・あ皐・臺・皐#include#include/・这题的关键在于进行行列下标转换的算法,由矩阵的对称性我们不难看出在进行行列互换时a[j]在好是与a[j][i]互换,因而只要我位让程序走完矩阵的左上角即可(用for(i=0;i<2;i++)M$れ「。ズ+1ゴく3ゴ++)来完成左上角的走动。*/intfun(intarray[3][3]){inti,j,t;for(i=0;i<2;i++)for(j=i+l;j<3;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}main(){inti,j;intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};clrscr();for(i=0;i<3;i++){for(j=0;j<3;j++)printf("/7d”,array[i][j]);printf("

1087");fun(array);printf(z/Convertedarray:

1088,z);for(i=0;i<3;i++){for(j=0;j<3;j++)printf(*%7d*,array[i][j]);printf("

1089");19.编写函数fun»该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。例如:若程序执行时输入字符串为:turbocandborlandc++从键盘上输入字符n,则输出后变为:turbocadborladc++如果输入的字符在字符串中不存在,则字符串照原样输出。・・・皐あ*暴皐皐・・・事・皐皐暴・皐・臺・豪・皐皐皐皐皐あ皐皐皐皐事皐皐・・皐皐・楽・皐あ・豪皐皐・皐・事・皐皐・号号る#includeSinclude/・注:该题的算法是让i控制一个ー个字符往后走,在移动过程中如果s[i]不

1090是要删的字符,则将其按顺序放到新串中(新串亦是用S来做,只是用k来控制新串的下标,由于要删除ー些元素,因此新串的下标总是比原下标i要慢。因而可用此法即同一字符串变量的方法。*/intfun(chars[],intc){inti,k=0;for(i=O;s[i];i++)if(s[i]!=c)s[k++]=s[i];s[k]=‘、0';)main(){staticcharstr口=“turbocandborlandc++〃;charch;clrscr();printf(":%s

1091〃,str);printf(":");scanf("%c",&ch);fun(str,ch);printf("str口二%s

1092〃,str);20.编写函数intfun(intlim,intaa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。あ皐事・事事あ・***皐********SincludettincludettdefineMAX100/*注:循环for(i=2;iくk;i++)用于判断k是否为素数,原理是当用2到k-l这间的数去对k求余,如余数为0(即被整除)则表示k不是ー个素数。语句if(i>=k)用于判断在上一个for()循环中i能否走到k,如果能则表示在2到k-l的数都不能整除k,即k为素数。*/intfun(intlim,intaa[MAX]){inti,j=0,k;for(k=2;k二k)aa[j++]二k;)returnj;main(){intlimit,i,sum;intaa[MAX];printf(,z

1093inputaintegernumber:;scanf("%d,z,&limit);

1094sum=fun(limit,aa);for(i=0;i

1095");printf(〃%5d”,aa[i]);21.编写函数fun,对长度为?个字符的字符串,除首、尾字符外,将其余5个字符按ASCH码降序排列。例如,若原来的字符串为CEAedca,则排序后输出为CedcEAa。希希争・事事・希*專・圣・皐・豪・希・希Sincludettinclude#include/・该题采用的排序法是选择法进行降序排序,算法是用外for()循环从字符串的前端往后端走动,每走动ー个字符都用内嵌的for()循环在该字符后找出最小的字符与该字符进行换位。直到外for()循环走到最后一个字符。此外,此题还要注意把首尾字符除开,即在最外层for()循环中从1开始,只到num-2即可。*/intfun(char*s,intnum){inti,j,t;for(i=l;i

1096%s",s);22.N名学生的成绩已在主函数中放入ー个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。事・辜事・豪豪豪・・事・豪臺・布る暴・事暴暴暴暴駅*呆・辜**專****臺臺臺事專事事專事臺事品・豪・豪生豪暴・豪豪・豪号Sinclude^includettdefineN8structslist{doubles;structslist*next;);typedefstructslistSTREC;doublefun(STREC*h){doublemax;inti;

1097max二hー〉s;for(i=0;is>max)max=(h+i)->s;returnmax;)STREC*creat(double*s){STREC*h,*p,*q;inti=0;h二p二(STREC*)malloc(sizeof(STREC));p->s=0;while(is=s[i];i++;p->next=q;p=q;)p->next=0;returnh;)outlist(STREC*h){STREC*p;p=h->next;printf("head");do{printf(“ー〉%2.Of",pー〉s);p=p-〉next;}while(p!=0);printf(〃、n

1098");)main(){doubles[N]={85,76,69,85,91,72,64,87},max;STREC*h;h二creat(s);outlist(h);max=fun(h);printf("max=%6.lf

1099",max);NONO();)NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,j;doubles[N],max;STREC*h;in=fopen("K:\\k01\\24001514\\in.dat","r");out=fopen(〃K:\\kOl\\24001514\\out.dat〃,"w");for(i=0;i<10;i++){for(j=0;j

1100fprintf(out,"%6.llf

1101,max);)fclose(in);fclose(out);23.请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NOo回文是指顺读和倒读都一样的字符串。例如,字符串しEVEL是回文,而字符串123312就不是回文。斗事事事事*******暴・*希・希・事事事格皐・・皐・・專・******臺臺*專ttincludettdefineN80intfun(char*str){inti,n=0,fg=l;char*p=str;while(*p){n++;p++;}for(i=0;i

1102");puts(s);if(fun(s))printf(,zYES

1103〃);elseprintfCNO

1104");NONO();)NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti;chars[N];rf=fopen(〃K:\\kl\\24000214\\in.dat〃,"r");wf=fopen("K:\\kl\\24000214\\out.dat〃,〃w");for(i=0;i<10;i++){fscanf(rf,〃%s〃,s);if(fun(s))fprintf(wf,YES

1105',s);elsefprintf(wf,"%sN0

1106〃,s);}fclose(rf);fclose(wf);

110723.请编写ー个函数fun,它的功能是:将一个数字字符串转换为ー个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串“T234”,则函数把它转换为整数值ー1234。あ皐事・事事あ・***皐********Sincludettincludelongfun(char*p){longs=0,t;inti=0,j,n=strlen(p),k,si;if(p[01--)i++;for(j=i;j<=n-l;j++){t=p[j]-O,;sl=10;for(k=j;k

1108z,);gets(s);n=fun(s);printf(zz%ld

1109z,,n);24.请编写ー个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入:beijingshanghaiくCR>(くCR>为回车键),函数将返回shanghai〇事事斗・事斎呆呆・矗鼻$界・**希希・事事事******$$$事・****$$$$ttincludechar*fun(char*s,char*t){char*ss=s,*tt=t;while((*ss)&&(*tt)){ss++;tt++;}if(*tt)return(t);elsereturn(s);)main(){chara[20],b[10],*p,*q;inti;printf(z,Input1thstring:zz);gets(a);printf(z,Input2thstring:");gets(b);printf("%s

1110",fun(a,b));

1111NONO();)NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti;chara[20],b[20];fp=fopen("bc03.in","r");if(fp==NULL){printf("数据文件bc03.in不存在!");return;wf=fopen("bc03.out","w");for(i=0;i<10;i++){fscanf(fp,"%s%s",a,b);fprintf(wf,〃%s

1112〃,fun(a,b)))fclose(fp);fclose(wf);23.请编写ー个函数fun,它的功能是:根据以下公式求n的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):X/2=l+l/3+lX2/3X5+lX2X3/3X5X7+lX2X3X4/3X5X7X9+...+1X2X3X...Xn/3X5X7X(2n+l)程序运行后,如果输入精度0.0005,则程序输出为3.14-0希希争・事事・希*專・圣・皐・豪・希・希#includettincludedoublefun(doubleeps){doubles;floatn,t,pi;t=l;pi=0;n=l.0;s=l.0;while((fabs(s))>=eps){pi+=s;t=n/(2*n+l);s*=t;n++;}pi=pi*2;returnpi;main(){doublex;printf(""Inputeps:");scanf("%lf",&x);printf("

1113eps=%lf,PI=%lf

1114",x,fun(x));27.请编写ー个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出:711142122283335424449事事事量事・希・斎め・・あ呆・希・希・事事・事希・希*希・事・斎矗斎“事$$$

1115ttincludettinclude#defineM100voidfun(intm,int*a,int*n){inti,k;♦n=0;for(i=l,k=0;i<=m;i++)if((i%7=0)II(i%ll==0)){a[k++]=i;(*n)++;})main(){intaa[M],n,k;clrscr();fun(50,aa,&n);for(k=0;k

1116");N0N0();)NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf;inti,n,j,k,aa[M],sum;fp=fopen(〃bc05.in",〃r");if(fp==NULL){printf(〃数据文件bc05.in不存在!");return;}wf=fopen(〃bc05.out","w");for(i=0;i<10;i++){fscanf(fp,"%d,",&j);fun(j,aa,&n);sum=0;for(k=0;k

1117",sum);}fclose(fp);fclose(wf);)27.请编写ー个函数fun,它的功能是:找出ー维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。斗事事事事*******暴・*希・希・事事事格皐・・皐・・專・******臺臺*專Sincludettincludevoidfun(inta[],intn,int*max,int*d){inti;*max=a[0];*d=0;for(i=0;i*max){*max=a[i];*d=i;}

1118main(){inti,x[20],max,index,n=10;randomize();for(i=0;i

1119”,max,index);29.请编写ー个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4Efg,则应输出aBc4EFgoあ皐事・事事あ・***皐********#include#include#includeくstring.h>voidfun(char*ss)(inti;for(i=0;ss[i]!=,\0J;i++)if(i%2==l&&ss[i]>=a&&ss[i]<=z')ss[i]=ss[i]-32;)main()(FILE*wf;chartt[81],s[10]=〃abc4Efg〃;printf(〃、nPIeaseenteranstringwithin80characters:

1120,z);gets(tt);printf(〃、n'nAfterchanging,thestring

1121%s”,tt);fun(tt);printf(zz

1122becomes

1123%s

1124z/,tt);wf=fopen(zzout.dat〃,〃w〃);fun(s);fprintf(wf,zz%s,z,s);fclose(wf);30.请编写ー个函数fun,它的功能是:求出ー个2XM整型二维数组中最大元素的值,并将此值返回调用函数。事事事当事******る暴事****呆・斗・格皐・・皐・事事$專****め$$キ專ttdefineM4Sincludefun(inta[][M])(inti,j,max=a[〇][〇];for(i=0;i<2;i++)for(j=0;j

1125returnmax;main()(FILE*wf;intarr[2][M]={5,8,3,45,76,-4,12,82);printf("max=%d

1126”,fun(arr));wf=fopen("out.dat,w);fprintf(wf,"%d”,fun(arr));fclose(wf);29.请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCH值也为偶数的字符外,其余的全都删除:串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG123456,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCI!码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCI!码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是246〇・楽・皐あ・豪皐皐・皐・事・皐皐・号号る#include#include

1127#includevoidfun(charts,chart[])inti,j=0;for(i=0;s[i]!=’、〇’;i++)if(i%2==0&&s[i]%2==0)t[j++]=s[i];t[ホ‘、〇';)main()(FILE*wf;chars[100],t[100];printf(〃、nPleaseenterstringS:〃);scanfs);fun(s,t);printfCAnTheresultis:%s

1128',t);wf=fopen(z,out.dat〃,〃w〃);fun(〃ABCDEFG123456〃,t);fprintf(wf,〃%s",t);fclose(wf);29.请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ASCH值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345«其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCI!码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是!35〇#includettincludeSincludevoidfunあ・あ皐め暴・め皐皐專皐皐皐皐皐皐(char*s,chart[]){inti,j=0,n;n=strlen(s);for(i=0;i

1129printf(z,

1130pleaseenterstringS:");scanfs);fun(s,t);printf(z/

1131theresultis:%s

1132〃,t);29.假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:使字符串中尾部的・号不得多于n个;若多于n个,则删除多余的・号;若少于或等于n个,则什么也不做,字符串中间和前面的・号不删除。例如,字符串中的内容为・***A*BC*DEF*C*******,若n的值为4,删除后,字符串中的内容则应当是・***A*BC*DEF*G****,若n的值7,则字符串中的内容仍为****A*BC*DEF*C*******。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。鼻$事事事**品*皐・*專*****事事&*希*斎希・事事る事斎****事事事事ttinclude#includevoidfun(char*a,intn){inti=0,k=0;char*p,*t;p=t=a;while(*t)t++;t一;while(*t==,*'){k++;t-;}t++;if(k>n){while(*p&&p

1133〃);gets(s);fun(s);printf(z,Thestringafterdeleted:

1134zz);puts(s);wr=ropen(out.dat,w);fun(t);fprintf(wf,,z%s,z,t);fclose(wf);

113529.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高的学生的人数。あ皐事・事事あ・***皐********Sinclude#defineN16typedefstruct{charnum[10];ints;}STRUC;intfun(STRUC*a,STRUC*b)(inti,j=0,max=a[0].s;for(i=0;i

1136,n);for(i=0;i

1137,z,h[i].num,h[i].s);printf('

1138");out=fopeniout45.dat","w");fprintf(out,"%d

1139",n);for(i=0;i

1140”,h[i].s);fclose(out);35.请编写ー个函数,用来删除字符串中的所有空格。例如,输入asdafaaz67,则输出为asdafaaz67。皐峯・・事事*希・皐梨專斎・希・あ希・專ttincludettincludettincludeintfun(char*str){char*p=str;for(;*str;str++)if(*str!='')*p++=*str;*p=’、0';)main()(charstr[81];intn;clrscr()printf("'Inputastring:")gets(str);

1141puts(str);fun(str);printf(〃***str:%s

1142,str);NONO();)NONO()(/・请在此函数内打开文件,输入调试数据,调用fun函数,输出数据,关闭文件。*/charstr[81];intn=0;FILE*rf,*wfrf=fopen("b0803.in,z,"r")wf=fopen("b0803.out","w")while(n<10){fgets(str,80,rf);fun(str);fprintf(wf,"%s",str)n++)fclose(rf)fclose(wf)35.假定输入的字符串中只包含字母和・号。请编写函数fun»它的功能是:将字符串中的前导・号全部移到字符串的尾部。例如,若字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是A*BC*DEF*G*********・。在编写函数时,不得使用C语言提供的字符串函数。品“臺あ暴楽豪め暴・豪・暴事・争争//事Sinclude#includevoidfun(char*a){inti=0,n=0;char*p;P=a;while(*p==,**){n++;p++;}while(*p){a[i]=*p;i++;p++;}while(n!=0){a[i]=,ギ!i++;n-;}a[i]=1\0*;)main()

1143(FILE*wf;chars[81],*t=,z****A*BC*DEF*G*******w;printf(""Enterastring:

1144"");gets(s);fun(s);printf(""Thestringafterdeleted:

1145"");puts(s);wf=fopen("out.dat,w);fun(t);fprintf(wf,"%s"',t);fclose(wf);35.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875〇ttinclude#defineN8typedefstruct{charnum[10];doubles[N];doubleave;}STRUC;voidfun(){inti;p->ave=0.0;for(i=0;iave=p->ave+p->s[i];p->ave=p->ave/N;)main()(FILE*wf;STRUCs={"GA005〃,85.5,76,69.5,85,91,72,64.5,87.5};inti;fun(&s);printf(z,The%s*sstudentdata:

1146〃,s.num);for(i=0;i

1147”,s.s[i]);printf(〃、nave=%7.3f

1148〃,s.ave);wf=fopen("out.dat〃,〃w〃);fprintf(wf,ave=%7.3f〃,s.ave);

1149fclose(wf);38.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3〇皐峯・・事事*希・皐梨專斎・希・あ希・專#include#include#defineM81/・注:本题用while。循环来控制字符的移动,每移动ー个字符都要进行判断(if(*ss==c))是否为指定的字母,若是则个数加!o这里要注意如何让ss指针向下走动(ss++)。*/intfun(char*ss,charc){intnum=O;while(*ss!=,\0J){if(*ss==c)num++;ss++;)return(num);)main(){chara[M],ch;clrscr();printf('

1150Pleaseenterastrint:,z);gets(a);printf(〃、nPleaseenterachar:〃);ch二getchar();printf('

1151Thenumberofthecharis:%d

1152,z,fun(a,ch));39.请编写函数fun,该函数的功能是:移动ー维数组中的内容;若数组中有n个整数,要求把下标从〇到p(p小于等于n-1)的数组元素平移到数组的最后。例如,ー维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3〇移动后,ー维数组中的内容应为:5,6,7,8,9,10,1,2,3,4。皐峯・・事事*希・皐梨專斎・希・あ希・專ttinclude#defineN80voidfun(int*w,intp,intn){inti,k=0,b[N];for(i=p+l;i

1153main(){inta[N]={l,2,3,4,5,6,7,8,9,10,11,12,13,14,15};inti,p,n=15;printf(zzTheoriginaldata:

1154,z);for(i=0;iprintf("ヽn'nEnterp:");scanf(〃%d”,&p);fun(a,p,n);printf(zz

1155Thedataaftermoving:

1156zz);for(i=0;iprintf("

1157

1158〃);NONO();NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wfinta[N],i,j,p,n=ropen(be.in,r)wf=fopen(〃bc.out","w")for(i=0i<5i++){fscanf(rf,〃%d%d〃,&n,&p)for(j=0j#include#defineN80voidfun(char*w,intm)inti,j;chart;for(i=l;i<=m;i++){t=w[0];for(j=l;w[j]!=\0*;j++)w[j-l]=w[j];w[j-l]=t;main()FILE*wf;

1159chara[N]="ABCDEFGHIJK";intm;printf(,zTheoriginastring:

1160〃)puts(a);printf("

1161

1162Enterm:);scanf("%d",&m);fun(a,m);printf(/z

1163Thestringaftermoving:

1164");puts(a);printf('

1165

1166");wf=fopen("out.dat","w");fun(b,3);fprintf(wf,"%s",b);fclose(wf);40.请编写函数fun.该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到ー个字符串中。例如,若二维数组中的数据为:WWWW则字符串中的内容应是WSHWSHWSH。SSSSHHHH#・・・圣豪事皐事皐・皐・專皐皐*皐枭皐楽*暴皐・皐皐專皐皐・皐皐事皐・皐・專皐皐#includeくstdio.h>#defineM3#defineN4voidfun(char(*s)[N],char*b)(inti,j,k=0;for(i=0;i\0>;)main(){FILE*wf;chara[100],w[M][N]={{"W','W','W','W'},{'S','S','S','S'},{'H','H','H','H')}:inti,j;printf("Thematrix:

1167");for(i=0;i

1168printf("%3c",w[i][j]);printf("

1169");)fun(w,a);printf("TheAstring:

1170");puts(a);printfC

1171

1172");wf=fopen(z/out.dat","w");fprintf(wf,"%s”,a);fclose(wf);42.下列程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],intn),该函数的功能是:使数组右上半三角元素中的值乘以mo例如:若!D的值为2,a数组中的值为456,则返回主程序后a数组中的值应为45あ事事・・・・呆・・皐号亲****皐・皐圣事・皐・・希皐め・・圣斎・・・峯皐事事あttincludeSincludettinclude#defineN5/*该题的关键也是在如何表示右上半角,本题采用的是在一行内从最后一列的元素开始往前乘,只有j>=i时オ改变。*/intfun(inta[][N],intm){inti,j;for(i=0;i=i;j—)a[i][j]*=m;)main(){inta[N][N],m,i,j;printf(〃****thearray****

1173");for(i=0;iくN;i++){for(j=0;j

1174");)dom=rand()%10;while(m>=3);printf(〃m二%4d

1175〃,m);

1176fun(a,m);printf("theresult

1177〃);for(i=0;i

1178");43.编写ー个函数,从传入的num个字符串中找出最长的ー个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)〇ttinclude"stdio.h"ttinclude"string,h"ttinclude"conio.h"/・函数strlenO用于求出字符串的长度,这个题中主要是・max二p;不能换成max=&p;如果用maz二&p;则只改变了max的指向,它不能传回给实参。因此我们要改变max指向地址中的内容,这才能使得实参ps有正确的值。・/fun(char(*a)[81],intnum,char**max){char*p=a[0];inti;for(i=l;iくnum;i++)if(strlen(a[i])>strlen(p))P=a[i];*max二p;main(){charss[10][81],*ps;intn,i=O;clrscr();printf("enterstring:

1179");gets(ss[i]);puts(ss[i]);while(!strcmp(ss[i],〃****〃)==0)i++;gets(ss[i]);puts(ss[i]);n=i;fun(ss,n,&ps);printf("

1180max=%s

1181",ps);44.编写ー个函数,该函数可以统计ー个长度为2的字符串在另ー个字符串中出现的次数。例如,假定输入的字符串为:asdasasdfgasdaszx67asdmklo,子字符串为as,则应输出6。峯皐事品事事豪希梨皐・圣梨・・呆・希希圣#include"stdio.h"ttinclude"string.h〃Sinclude"conio.h"/・注:由于小串中只有2个字符所以可用str[i]==sbustr[0]&&str[i+1]

1182==substr[1]来判断小串是否与长串当前位置(str[i])相同(即出现一次)。因而只要让长串当前位置逐一向后移即可(用for()循环来完成)。*/intfun(char*str,char*substr){inti,n=0,s=strlen(str);for(i=0;i

1183",n);44.假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:只删除字符串前导和尾部的・号,串中字母之间的・号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导・号的个数,形参e给出了字符串中最后・号的个数。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为・***A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。希希争・事事・希*專・圣・皐・豪・希・希#includettincludevoidfun(char*a,intn,inth,inte)(inti,j=0;for(i=h;i

1184char*p="****A*BC*DEF*G*******”;intm=0,tn=O,fn=O;printf("Enterastring:

1185〃);gets(s);t=f=s;while(*t){t++;m++;}t—;while(*t==,ギ){t--;tn++;}while(*f==,*,){f++;fn++;}fun(s,m,fn,tn);printfC'Thestringafterdeleted:

1186,z);puts(s);wf二fopen(“〇ut・dat","w");fun(p,21,4,7);fprintf(wf,"%s,p);fclose(wf);44.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。・楽木“泰豪朱豪«・柴柴泰泰木«未希楽・・«・・・ネ希希楽豪・・朱豪豪豪泰朱楽楽Sinclude#defineN16typedefstruct{charnum[10];ints;}STRUC;voidfun(STRUCaロ)(inti,j;STRUCt;for(i=l;i

1187fun(s);printf(,zThedataaftersorted:

1188〃);for(i=0;i

1189");printf("%s%4d”,s[i].num,s[i].s);)printf('

1190");out=fopen〈out65.dat",〃w");for(i=0;i

1191〃);fprintf(out,“%4d”,s[i].s);)fprintf(out,〃、n");fclose(out);wf=fopen(z,out.dat",〃w〃);for(i=0;i

1192〃);fprintf(wf,z,%s%4d〃,s[i].num,s[i].s);)'fclose(wf);44.请编写ー个函数voidfun(char*ss),其功能是:将字符串ss中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。例如,若输入abc4EFg,则应输出aBc4EFgo#include#includevoidfun(char*ss){inti;for(i=0;ss[i]!=,、0';i++)if(i%2==l&&ss[i]>='a'&&ss[i]<='z')ss[i]=ss[i]-32;main()FILE*wf;chartt[51],*s=,,abc4Efgz,;printf(,zPleaseenterancharacterstringwithin50characters:

1193zz);gets(tt);printf(zz

1194

1195Afterchanging,thestring

1196%s〃,tt);

1197fun(tt);printf(zz

1198becomes

1199%szz,tt);wf=fopen(,zout.dat",〃w〃);fun(s);fprintf(wf,zz%s,z,s);fclose(wf);44.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=4152o事事事量事・希・斎め・・あ呆・希・希・事事・事希・希*希・事・斎矗斎“事$$$ttincludeSinclude/・本题的关键在于如何表示出个、十、百、千位数。对于ー个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。・/voidfun(inta,intb,long*c){*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10;}main(){inta,b;longc;printf(zzinputa,b:);scanf(〃%d%d”,&a,&b);fun(a,b,&c);printf(,ztheresultis:%ld

1200〃,c);45.请编写函数fun,其功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345J其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCI!码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是BDF12345。め事事事事*******暴・**・皐品臺量事豪****め*臺*臺*******事事ttinclude#includettincludevoidfun(char*s,chart[]){inti,j=0,n=strlen(s);for(i=0;i

1201j++;)t[j]=>\O,;)main(){chars[100],t[100];printf(/z

1202pleaseenterstringS:〃);scanf("%s”,s);fun(s,t);printf(,z

1203theresultis:%s

1204,t);44.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。ののののののののののののののののののののSincludettinclude#includettdefineN10typedefstructss{charnum[10];ints;}STU;/・只是采用的赋值方式不同。采用的是结构体元素对结构体元素赋值。*/fun(STUa[],STU*s){inti;*s=a[0];for(i=l;i(*s).s)*s=a[i];main(){STUa[N]={{"AOI”,81},{"A02",89},{"A03”,66},{"A04”,87},{“A05",77},{〃A06〃,90},{“A07”,79},{"A08〃,61},{〃;A09〃,80},{"A10",71}},m;inti;printf(〃****theoriginaldata****

1205");for(i=0;i

1206”,a[i].num,a[i].s);fun(a,&m);printf(〃****theresult****

1207");printf(z,thetop:%s,%d

1208z,,m.num,m.s);45.请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入17,则应输出:9和46891012141516〇鼻$事事事**品*皐・*專*****事事&*希*斎希・事事る事斎****事事事事ttinclude#include/・注:内嵌的for()循环用于判断是否是素数,在jくi的情况下,只要j对i求余,余数为0则表示i不是素数,则将i存入xx数组中。break;语句只是让

1209它提前结束循环。不用亦可。*/voidfun(intm,int*k,intxx[]){inti,j;♦k=0;for(i二2;iくm;i++)for(j=2;j

1210pleaseenteranintegernumberbetween10and100:");scanf("%d〃,&n);fun(n,&m,zz);printf(zz

1211

1212thereare%dnon-primenumberslessthan%d:',m,n);for(n=0;n

1213%4d",zz[n]);)44.编写ー个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到pl所指的字符串后。例如,分别输入下面两个字符串:FirstString—SecondString

1214则程序输出:FirstString—SecondString皐・皐・・豪皐・皐皐皐・皐皐・皐暴・皐・皐・專・皐品め・皐皐・皐・・皐皐圣・皐・・#include#include/・注:第一个for。循环用于让i成为第一个字符串的结束符的下标,要注意在这个for()后要有一个分号否则出错。第二个for()的作用是将第二个字符串ー个ー个字符依次放到第一个字符串的未尾。此外,还要注意最后一定要有pl[i]='、0’:来给字符串加上结束符。・/voidfun(charpl[],charp2[]){inti,j;for(i=0;pl[i];i++);for(j=0;p2[j];j++)pl[i++]=p2[j];pl[i]='、0';)main(){charsi[80],s2[80];clrscr();printf(z,Entersiands2:'n");scanf(*%s%s*,si,s2);printf("sl=%s'n”,si);printf("s2=%s'n”,s2);printf(,zInvokefun(si,s2):

1215zz);fun(sl,s2);printf(zzAfterinvoking:

1216zz);printf("%s

1217",si);44.请编写函数fun,该函数的功能是:实现B=A+A',即把矩阵A加上矩阵A的转置,存放在矩阵B中。计算结果在main函数中输出。例如,输入下面的矩阵:1231456+27893其转置矩阵为:则程序输出:47261058=6101469101418#include#include/・本题没有先求出A的转置,而是直接利用转置的性质(即第一行作为转置后的第一列,第二行作为转置后的第二列,的行列互换的性质)。而且最后要求出两矩阵的相加后得出的新矩阵,由转置性质可知原a[j][i]转置后位置为a[i][j],在表达式:b[i][j]=a[i][j]+a[j][i]第一个a为A的元素,第二个a为A'的元素。*/voidfun(inta[3][3],intb[3][3])

1218{inti,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];)main(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;clrscr();fun(a,t);for(i=0;i<3;i++){for(j=0;j<3;j++)printf(*%7d*,t[i][j]);printf("

1219");44.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。皐・臺皐・・豪暴暴あ皐皐・・皐皐楽・豪皐あ皐暴臺豪暴暴臺・皐・あ豪豪・あ皐・臺・皐#include#defineN8typedefstruct{charnum[10];doubles;}STRUC;doublefun(STRUC*a,STRUC*b,int*n)(inti,j=0;doubleav=0.0;for(i=0;i

1220STRUCs[N]={{*GA05”,85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};STRUCh[N],t;FILE*out;inti,j,n;doubleave;ave=fun(s,h,&n);printf("The%dstudentdatawhichislowerthan%7.3f:

1221",n,ave);for(i=0;i

1222",h[i].num,h[i].s);printf("

1223");out=fopen("out71.dat","w");fprintf(out,"%d

1224%7.3f

1225",n,ave);for(i=0;ih[j].s){t=h[i];h[i]=h[j];h[j]=t;}for(i=0;i

1226",h[i].s);fclose(out);wf=fopen("out.dat","w");fprintf(wf,"%d%7.3f

1227",n,ave);for(i=0;ivoidfun(int(*s)[10],int*b,int*n,intmm,intnn)(inti,j,k=0;for(i=0;i

1228(FILE*wf;intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;inta[100]={0},n=O;printf(z,Thematrix:

1229,z);for(i二〇;i<3;i++){for(j=0;j<4;j++)printf(〃%3d”,w[i][j]);printf("

1230〃);}fun(w,a,&n,3,4);printf(,zTheAarray:

1231〃);for(i=0;i

1232

1233,z);wf=fopen(zzout.dat〃,〃w〃);for(i=0;i#includevoidfun(char*a,char*p)(char*t=a;for(;t<=p;t++)if(*t!=’*')*(a++)=*t;for(;*t!=\0';t++)*(a++)=*t;*a='\0';main()

1234FILE*wf;charh[81],*t,p[81]=*****A*BC*DEF*G******/Z;printf("Enterastring:

1235");gets(h);t=h;while(*t)t++;t—;while(*t==,*')t—;fun(h,t);printf("Thestringafterdeleted:

1236");puts(h);wf=fopen("out.dat","w");t=p;while(*t)t++;t一;while(*t==,*')t—;fun(p,t);fprintf(wf,"/s”,p);fclose(wf);57.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。例如,输入的分数是60和69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在high中。あ・ネネ泰豪朱ネネ豪・«泰楽・楽め泰・朱ttinclude#defineN16typedefstruct{charnum[10];ints;}STRUC;intfun(STRUC*a,STRUC*b,int1,inth)(inti,j=0;for(i=0;i=l&&a[i].s<=h)b[j++]=a[i];returnj;)

1237main()(FILE*wf;STRUCs[N]={{〃GA005”,85},{〃GA003〃,76},{〃GA002〃,69},{〃GA004〃,85},{〃GA001〃,96},{〃GA007〃,72},{“GA008”,64},{〃GA006〃,87},{“GA015”,85},{〃GA013〃,94},{"GA012”,64},{〃GA014〃,91},{“GA011〃,90},{〃GA017〃,64},{〃GA018〃,64},{〃GA016〃,72}};STRUCh[N],tt;FILE*out;inti,j,n,low,heigh,t;printf("Enter2integernumberlow&heigh:");scanf(〃%d%cT,&low,&heigh);if(heigh

1238",low,heigh);for(i=0;i

1239",h[i].num,h[i].s);printf("

1240");out=fopen("out74.dat","w");fprintf(out,"%d

1241”,n);n=fun(s,h,80,98);for(i=0;ih[j].s){tt=h[i];h[i]=h[j];h[j]=tt;}for(i二〇;iくn;i++)fprintf(out,"%4d

1242",h[i].s);fprintf(out,"

1243");fclose(out);wf=fopen("out.dat〃,〃w");for(i=0;i

1244ttinclude#includettincludedoublefun(intn){intsum,i;sum=0;for(i=0;i

1245”,fun(1000));58.请编写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N)»按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为:AAAABBBBBBBCC则合并后的字符串的内容应是AAAABBBBBBBCCoめ$鼻$專****あ当事|?Iめ・希*亭・臺事事品峯皐*事*****臺・$鼻ttincludettinclude#defineM3#defineN20voidfun(chara[M][N],char*b)inti,j,k=0;for(i=0;i\0';FILEcharcharmain()*wf;w[M][N]={〃AAAA〃,〃BBBBBBB〃,"CC〃},i;a[100]={"##############################〃};printf(wThestring:

1246つ;for(i=0;i

1247*);fun(w,a);printf(z,TheAstring:

1248つ;printf(,z%s”,a);printf("

1249

1250〃);wf=fopen("out.dat","w,z);fprintf(wf,"%sz,,a);fclose(wf);

125160.请编写函数fun,该函数的功能是:删去ー维数组中所有相同的数,使之只剩ー个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2223445666677899101010o删除后,数组中的内容应该是:2345678910。当事事事事**品*皐・$亲事******事・格吊・斎希・斗め*/斎****事事事事ttinclude#defineN80intfun(inta[],intn)(inti,j=l;for(i=l;i

1252zz);for(i=0;i

1253

1254Thedataafterdeleted:

1255,z);for(i=0;i

1256

1257");wf=fopen(zzout.dat〃,〃wzz);for(i=0;i#defineN50

1258#defineM11voidfun(int*a,int*b)(inti,j;for(j=0;j=100)b[10]++;elseb[a[i]/10]++;)doublernd()(statict=29,c=217,m=1024,r=0;r=(r*t+c)%m;return((double)r/m);)main(){FILE*wf;intage[N],i,d[M];intb[N]={32,45,15,12,86,49,97,3,44,52,17,95,63);for(i=0;i

1259");for(i=0;i

1260":"%4d”,age[i]);printf("

1261

1262");fun(age,d);for(i=0;i<10;i++)printfC%4d一一%4d:%4d

1263”,i*10,i*10+9,d[i]);printf(/z0ver100:%4d

1264zz,d[10]);wf=fopen("out.dat,w);fun(b,d);for(i=0;i<10;i++)fprintf(wf,,z%4d一一%4d:%4d

1265〃,i*10,i*10+9,d[i]);fprintf(wf,zz0ver100:%4dzid[10]);fclose(wf);62.请编写函数fun,该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。

1266柴争希品事事・格斎峯斎希・希・希・希第希#include#include#defineN80intfun(char*s)inti,j=0;for(i=0;s[i]!=,\Q9;i++)if(s[i]!='''IIs[i+l]=‘、〇'))j++;returnj;main()FILE*wf;charline[N];intnum=0;printf(zzEnterastring:

1267〃);gets(line);num=fun(line);printf(z,Thenumberofwordis:%d

1268

1269,num);wf二fopen("out.dat","w");fprintf(wf,"%d〃,funiabigcar"));fclose(wf);63.请编写ー个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。例如,若主函数从键盘给n输入的值为856,则输出为sum=763oあ皐事・事事あ・***皐********ttincludeintfun(intn)ints=0,i;for(i=2;i<=n-l;i++)if(n%i==0)s+=i;returns;)main(){intn,sum;printf(""Inputn:〃);scanf("%d〃,&n);sum=fun(n);printf(z,sum=%d

1270z,,sum);NONO();)

1271NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,n,sum;rf=fopen(〃K:\\kl\\24000318\\in.dat〃,"r");wf=fopen(〃K:\\kl\\24000318\\out.dat",〃w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);sum=fun(n);fprintf(wf,〃%d二%d

1272〃,n,sum);}fclose(rf);fclose(wf);63.请编写函数fun,其功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值为奇数、…字符1的ASCII码值也为奇数、…都应当删除,其他依次类推。最后t所指的数组中的内容应是BDF24o皐星墓・事事豪品・圣・圣・圣・***皐帯Sinclude#includeくstring.h>#includevoidfun(char*s,chart[]){inti,j=0,n;n=strlen(s);for(i=0;i

1273PleaseenterstringS:〃);scanf('%s”,s);fun(s,t);printf(,z

1274Theresultis:%s

1275,t);wf=fopen(“〇ut.dat〃,"w");fun(〃ABCDEFG12345”,t);fprintf(wf,〃%s",t);fclose(wf);

127663.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后c=2415o皐峯・・事事*希・皐梨專斎・希・あ希・專ttincludettinclude/・本题的关键在于如何表示出个、十、百、千位数。对于ー个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。・/voidfun(inta,intb,long*c){*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;}main(){inta,b;longc;printf("inputa,b:');scanf("%d%d”,&a,&b);fun(a,b,&c);printf(z,theresultis:%ld

1277,c);64.假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:删除字符串中所有的・号。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容的****A*BC*DEF*G*******,删除后,字符串中的内容则应当是ABCDEFGo#include#includevoidfun(char*a)inti,j=0;for(i=0;a[i]!=,、〇’;i++)if(a[i]!='*')a[j++]=a[i];a[ホ’\0';)main()(FILE*wf;chars[81],*pニ〃****A*BC*DEF*G*******”;printf(Z/Enterastring:

1278z,);gets(s);fun(s);printf(zzThestringafterdeleted:

1279zz);puts(s);wf=fopen(zzout.dat〃,〃wzz);

1280fun(p);fprintf(wf,zz%szz,p);fclose(wf);63.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)〇る事$$*斎斎矗斎暴・*希・圣・臺る堇******$$事事**矗希“斗鼻$鼻#include#include#includeくstring.h>#defineN16typedefstruct{charnum[10];ints;}STRUC;STRUCfun(STRUC*a,char*b)(inti;STRUCst尸{"、〇”,-1};for(i=0;i

1281,z);for(i二〇;iくN;i++){if(i%4==0)printf("

1282'z);printf(zz%s%3dzz,s[i].num,s[i].s);

1283printf(,z

1284

1285Enterthenumber:");gets(m);h=fun(s,m);printf(zzThedata:");printf(zz

1286%s%4d

1287”,h.num,h.s);printf(zz

1288zz);out=fopen(z,out80.dat","w");h=fun(s,"GA013");fprintf(out,zz%s%4d

1289”,h.num,h.s);fclose(out);wf=fopen(z,out.dat〃,〃w〃);fprintf(wf,zz%s%4dzz,h.num,h.s);fclose(wf);63.请编写函数fun,其功能是:计算并输出下列多项式值:Sn=l+1/1!+1/2!+1/3!+1/4!+-+l/n!例如,若主函数从键盘给n输入15,则输出为s=2.718282o注意:n的值要求大于1但不大于100o峯皐事品事事豪希梨皐・圣梨・・呆・希希圣ttincludedoublefun(intn)doublet,sn=l.0;inti,j;for(i=l;iくn;i++){t=l.0;for(j=l;j<=i;j++)t*=j;sn+=l.0/t;}returnsn;)returnsn;)main(){intn;doubles;printf("Inputn:");scanf("%d",&n);s=fun(n);printf("s=%f

1290",s);NONO();)NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/

1291FILE*rf,*wf;intn,i;doubles;rf=fopen("K:\\k01\\24001619\\in.dat","r");wf=fopen("K:\\k01\\24001619\\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf

1292",s);)fclose(rf);fclose(wf);63.请编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的ー个数,结果由函数返回。其中Fibonacci数列F(n)定义为:F(0)=0,F(l)=l,F(n)=F(n-1)+F(n-2)例如:当t=1000时,函数值为1597〇ttinclude"math,h"#includestdio.hintfun(intt){inti,s二〇;for(i=0;s<=t;i++)s=f(i);returns;f(intn){ints=0;if(n==0)return0;elseif(n==l)return1;elses=f(nT)+f(n-2);returns;main(){intn;clrscr();n=1000;printf("n=%d,f二%d

1293〃,n,fun(n));64.编写函数fun,它的功能是:计算并输出下列级数和:S=l/l*2+l/2*3+...+l/n(n+l)例如,当n=10时,函数值为0.909091c皐星墓・事事豪品・圣・圣・圣・***皐帯#include#includedoublefun(intn)(inti;doubles=0.0;

1294for(i=l;i<=n;i++)s=s+1.0/(i*(i+D);returns;)main()(FILE*wf;printf("%f

1295”,fun(10));wf二fopen("out,dat","w");fprintf(wf,z,%f/z,fun(10));fclose(wf);63.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。例如,当a=45,b=12,调用该函数后c=5142o圣皐圣圣・呆・希・專・皐・・梨・布專*****專・・梨事皐*專*****皐皐&**Sinclude#include/・本题的关键在于如何表示出个、十、百、千位数。对于ー个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/voidfun(inta,intb,long*c){*c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10;}main(){inta,b;longc;printf(z,inputa,b:);scanf(线d%d”,&a,&b);fun(a,b,&c);printf(,ztheresultis:%ld

1296”,c);64.请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为ABCDEFGHIJK,则在t所指数组中的内容应是BDFHJo臺斗・事事*****•臺・希・希・事量事事***斎*斗る*臺*******$$#include#include#includeくstring.h>voidfun(char*s,chart[])

1297inti,j=0,k=strlen(s);for(i=l;i

1298PleaseenterstringS:〃);scanf(〃%s〃,s);fun(s,t);printf(〃

1299Theresultis:%s

1300',t);wf=fopen("out.dat","w");fun("ABCDEFGHIJK",t);fprintf(wf,"%s",t);fclose(wf);63.假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:除了字符串前导和尾部的・号之外,将串中其他・号全部删除。形参h已指向字符串中第ー个字母,形参p已指向字符串中最后ー个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G********,删除后,字符串中的内容则应当是****ABCDEFC********〇め・品号・豪矗希矗事あき豪争豪あ豪・导号号事斗争・豪豪おる・号号*41414k事品あ事・めるめるのののののののののののののののの#includeSincludevoidfun(char*a,char*h,char*p){inti=0;char*q=a;while(q

1301a[i]='、0';)main()(FILE*wf;chars[81],*t=*****A*BC*DEF*G*******〃;printf(z/Enterastring:

1302");gets(s);fun(s);printf("Thestringafterdeleted:

1303");puts(s);wf=fopen("out.dat〃,"w");fun(t);fprintf(wf,"%s",t);fclose(wf);)63.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数

1304组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止ー个,函数返回分数最低的学生的人数。る暴暴め暴暴暴暴暴る事暴暴格暴布布暴暴辜事事暴・る駅暴事暴臺る矗・豪景・事事暴る暴号・吊・事事品豪・臺・め・4»挙事事***#include#include^includettdefineN10typedefstructss{charnum[10];intintfun(STREC*a,{inti,j=0,min=a[0].sfor(i=0;s;}STREC;STREC*b)n=0,min;i

1305");i++)printf("NO=%sMark=%d

1306",a[i].num,a[i].stheresult****

1307〃);top:%s,%d

1308,m.num,m.s);75.请编写函数fun.该函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到ー维数组中。例如,若二维数组中的数据为:334444555544553333334455则ー维数组中的内容应是:3344553344553344553344

1309ttincludevoidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j;for(j=0;j

1310,z);for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%3d",w[i][j]);printf("

1311〃);}fun(w,a,&n,3,4);printf(z,TheAarray:

1312,z);for(i=0;i

1313

1314zz);wf=fopen(zzout.dat","w");for(i二〇;ittincludedoublefun(doublex)doublesl=l.0,p=l.0,sum=0.0,sO,t=l.0;intn=l;do{s0=sl;

1315sum+=s0;t*=n;p*=(0.5-n+l)*x;sl=p/t;n++;}while(fabs(s1-sO)>le-6);returnsum;)main(){doublex,s;printf(z,Inputx:");scanf(,z%lf,z,&x);s=fun(x);printf(〃s=%f

1316',s);N0N0();)N0N0(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti;doubles,x;rf=fopen(〃K:\\kl\\24000317\\in.datM〃J);wf=fopen('K:\\kl\\24000317\\out.dat","w");for(i=0;i<10;i++){fscanf(rf,"%lf”,&x);s=fun(x);fprintf(wf,〃%lf

1317”,s);)fclose(rf);fclose(wf);76.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如,当a=45,b=12,调用该函数后c=2514o皐峯・・事事*希・皐梨專斎・希・あ希・專ttincludettinclude/・本题的关键在于如何表示出个、十、百、千位数。对于ー个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。・/voidfun(inta,intb,long*c){*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10;}main(){inta,b;longc;printf(z/inputa,b:〃);scanf("%d%d”,&a,&b);

1318fun(a,b,&c);printf(zztheresultis:%ld

1319〃,c);76.请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345,其中字符B的ASCI!码值为偶数、…、字符2的ASCII码值为偶数、…都应当删除,其他依此类推。最后t所指的数组中的内容应是ACEG135oネネ朱ネ泰泰泰豪泰あ泰あ鼻ネ*«ネ・・ネttinclude#includeくstring.h>#includevoidfun(char*s,chart[])(inti=0;for(;*s!=’ゝ〇';s++)if(*s%2==l)t[i++]=*s;t[i]='、0';)main(){FILE*wf;chars[100],t[100];printf('

1320PleaseenterstringS:つ;scanf("%s”,s);fun(s,t);printf(z,

1321Theresultis:%s

1322zz,t);wf=fopen(“〇ut.dat,w);fun("ABCDEFG12345”,t);fprintf(wf,"%s”,t);fclose(wf);)77.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)〇已给出函数的首部,请完成该函数。

1323ttincludeSincludettinclude#defineN10typedefstructss{charnum[10];ints;}STU;/・这个题目中有一结构组数,要找的是数组元素中整型成员的值最小的元素。要注意本题中的赋值方式(分两部分,对于字符型成员只能用strcpyO函数,而不能用等号“二”进行赋(即不能用(*s).num=a[k].num),这与字符串的赋值相同(切记)。*/fun(STUa[],STU*s){intk,i;(*s).s=a[0].s;for(i=0;i

1324〃);for(i=0;i

1325〃,a[i].num,a[i].stheresult****

1326〃);lowest:%s,%d

1327〃,m.num,m.s);76.程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],intn),该函数的功能是:使数组左下半三角元素中的值乘以n。例如:若n的值为3,a数组中的值为,则返回主程序后a数组中的值应为361297981518事事事4・矗希・星品・・帯布・希・圣事事事・事希・希*希・事・斎矗斎“事$$$ttincludettincludeSinclude#defineN5/・只要能表示出左下半角的元素即可。*/intfun(inta[][N],intn){inti,j;for(i=0;i

1328main(){inta[N][N],n,i,j;printf(〃****thearray****

1329");for(i=0;i

1330〃);don=rand()%10;while(n>=3);printf(,zn=%4d

1331”,n);fun(a,n);printf("****theresult****

1332");for(i=0;i

1333");76.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后c=1425o事事斗・事斎呆呆・矗鼻$界・**希希・事事事******$$$事・****$$$$ttinclude#include/・本题的关键在于如何表示出个、十、百、千位数。对于ー个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/voidfun(inta,intb,long*c){*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;}main(){inta,b;longc;printf(zzinputa,b:');scanf(zz%d%dzz,&a,&b);fun(a,b,&c);printf(,ztheresultis:%ld

1334”,c);77.请编写ー个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80〇鼻$專$專*******矗***・*品事事事品峯皐・希・臺・・め希・豪・・事$$臺ttincludefloatfun(float*a,intn){floatav=0.0;inti;for(i=0;i

1335floatscore[30]={90.5,72,80,61.5,55},aver;aver=fun(score,5);printf(,z

1336Averagescoreis:%5.2f

1337,aver);wf=fopen(,zout.dat","w");fprintf(wf,〃%5.2f〃,aver);fclose(wf);76.假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:将字符串尾部的・号全部删除,前面和中间的・号不删除。例如,若字符串中的内容为・***A*BC*DEF*G*******,删除后,字符串中的内容则应当是・***A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。当事事事事**品*皐・$亲事******事・格吊・斎希・斗め*/斎****事事事事ttinclude#includevoidfun(char*a)(while(*a!二’\0')a++;a——;while(*a='*,)a—;*(a+l)=>\0';main()FILE*wf;chars[81],*t="****A*BC*DEF*G*******";printf("Enterastring:

1338");gets(s);fun(s);printf("Thestringafterdeleted:

1339");puts(s);wf=fopen("out.dat","w");fun(t);fprintf(wf,"%s",t);fclose(wf);77.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。例如,当a=45,b=12,调用该函数后c=1524o臺斗・事事*****•臺・希・希・事量事事***斎*斗る*臺*******$$ttinclude#include

1340/・本题的关键在于如何表示出个、十、百、千位数。对于ー个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。・/voidfun(inta,intb,long*c){*c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;}main(){inta,b;longc;printf("inputa,b:");scanf("%d%d”,&a,&b);fun(a,b,&c);printf("theresultis:%ld

1341”,c);76.N名学生的成绩已在主函数中放入ー个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。例如,若学生的成绩是85,76,69,85,91,72,64,87;则平均分应当是78.625〇め$鼻$專****あ当事|?Iめ・希*亭・臺事事品峯皐*事*****臺・事の#include#include#defineN8structslist{doubles;structslist*next;);typedefstructslistSTRUC;doublefun(STRUC*h)(doubleav=0.0;STRUC*p=h->next;while(p!=NULL){av=av+p->s;p=pー〉next;}returnav/N;)STRUC*creat(double*s)(STRUC*h,*p,*q;inti=0;h=p=(STRUC*)malloc(sizeof(STRUC));p->s=0;while(is=s[i];i++;p->next=q;p=q;)p->next=0;

1342returnh;)outlist(STRUC*h){STRUC*p;p=h->next;printf(〃head〃);do{printf(z,->%4.If”,pー>s);p=p->next;)while(p!=0);)main()(FILE*wf;doubles[N]={85,76,69,85,91,72,64,87),ave;STRUC*h;h=creat(s);outlist(h);

1343ave=fun(h);printf("ave=%6.3f

1344”,ave);wf=fopen("out.dat〃,〃w");fprintf(wf,"%6.3f",ave);fclose(wf);76.请编写函数fun,其功能是:计算并输出给定10个数的方差:0.5X例如,给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,则输出为S=ll.730729。当事・豪格****皐*$暴号斎斎**奈・事・格吊・斎希・斗め*/斎****事事事事#include#includedoublefun(doublex[10])(doublexl=0.0,s=0.0;inti;for(i=0;i<10;i++)xl=xl+x[i];xl=xl/10;for(i=0;i<10;i++)s=s+(x[i]-xl)*(x[i]-xl);returnsqrt(s/10);)main(){FILE*wf;doubles,x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0};inti;printf("

1345Theoriginaldatais:

1346");for(i=0;i<10;i++)printf("%6.If",x[i]);printf("

1347

1348");s=fun(x);printf("s=%f

1349

1350",s);wf=fopen("out.dat","w");fprintf(wf,"%f",s);fclose(wf);

135176.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12,调用该函数后c=4251o峯皐事品事事豪希梨皐・圣梨・・呆・希希圣ttincludettinclude/・本题的关键在于如何表示出个、十、百、千位数。对于ー个两位的整数,用1O对它求余得到个位数上的数,将它除10得到十位数上的数。・/voidfun(inta,intb,long*c){inti,j,k,n;i=a%10;j=a/10;k=b%10;n=b/10;*c=j*l000+k*100+i*l0+n;)main(){inta,b;longc;printf(z,inputa,b:);scanf(〃%d%d”,&a,&b);fun(a,b,&c);printf(z/theresultis:%ld

1352,c);88.假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:除了字符串前导的・号之外,将串中其他・号全部删除。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为・***A*BC*DEF*G*******,删除后,字符串中的内容则应当是・***ABCDEFG。希希争・事事・希*專・圣・皐・豪・希・希#includettincludevoidfun(char*a){inti=0;char*p=a;while(*p&&*p=,*'){a[i]=*p;i++;p++;}while(*p){if(*p!=,){a[i]=*p;i++;}p++;}a[i]='、0';)

1353main()(FILE*wf;chars[81],*t="****A*BC*DEF*G*******”;printf(''Enterastring:

1354");gets(s);fun(s);printf(,zThestringafterdeleted:

1355");puts(s);wf=fopen("out.dat",〃w〃);fun(t);fprintf(wf,z,%s",t);fclose(wf);88.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把髙于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。峯皐事品事事豪希梨皐・圣梨・・呆・希希圣ttinclude#defineN12typedefstruct{charnum[10];doubles;}STRUC;doublefun(STRUC*a,STRUC*b,int*n){inti;doubleav=0.0;*n=0;for(i=0;i

1356,z,n,ave);for(i=0;i

1357〃,h[i].num,h[i].s);

1358printf('

1359");out=fopen("out90.dat","w");fprintf(out,〃%d

1360%7.3f

1361”,n,ave);for(i=0;iくn-].;i++)for(j=i+l;j

1362”,h[i].s);fclose(out);wf=fopen(z,out.dat",〃w〃);fprintf(wf,"%d%7.3f

1363”,n,ave);for(i=0;il&&n<=100){for(i=l;i<=n;i++)sum+=l.0/(2*i-l)-l.0/(2*i);returnsum;)main(){intn;doubles;printf("Wnlnputn:〃);scanf(〃%d”,&n);s=fun(n);printf('\

1364s二%f\

1365〃,s);NONO();)NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;=ropen(be.in,r);wf=fopen("bc.out","w");for(i=0;i<10;i++){

1366fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\

1367",s);)fclose(rf);fclose(wf);90.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。例如,当a=45,b=12,调用该函数后c=5241oる事$$*斎斎矗斎暴・*希・圣・臺る堇******$$事事**矗希“斗鼻$鼻ttinclude#includevoidfun(inta,intb,long*c)(*c=a/10*10+a%10*1000+b/10+b%10*100;)main(){inta,b;longc;clrscr();printf("'Inputa,b:");scanf(〃%d%d",&a,&b);fun(a,b,&c);printf(,zTheresultis:%ld

1368,c);NONO();NONO(){/・本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*rf,*wfinti,a,blongcrf=fopen(〃inl.dat","r")wf=fopen("bc08.dat”,〃w")for(i=0i<10i++){fscanf(rf,%d〃,&a,&b)fun(a,b,&c)fprintf(wf,〃a二%d,b二%d,c二%ld

1369”,a,b,c))fclose(rf)fclose(wf)92.请编写函数fun,它的功能是计算:s=(ln(l)+ln(2)+ln(3)+…+ln(m))0.5s作为函数值返回。在C语言中可调用log(n)函数求ln(n)olog函数的引用说明是:doublelog(doublex)〇例如,若m的值为20,则fun函数值为6.506583。皐峯・・事事*希・皐梨專斎・希・あ希・專ttincludettinclude

1370ttincludedoublefun(intm){doublei;doubler,s;doublelog(doublei);for(i=l;i<=m;i++){r=r+log(i);}return(sqrt(r));)main(){clrscr();printf("%f

1371”,fun(20));)92.请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。例如,当n=10,x=0.3时,函数值为1.349859cX2X3S=l+x+2!+3!+・・・・・・+n!あ皐*梨*******皐・*皐****專ttincludeSincludeSincludedoublefun(doublex,intn){inti;floatp=l;longq=l;doublet,s=l.0;for(i=l;i<=n;i++){p*=x;q*=i;t=p/q;s+=t;returns;main(){printf("%f

1372”,fun(0.3,10));93.规定输入的字符串中只包含字母和・号。请编写函数fun»它的功能是:将字符串中的前导・号全部删除,中间和尾部的・号不删除。例如,若字符串中的内容为*******A*BC*DEF*G****,删除后,字符串中的内容则应当是A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。皐峯・・事事*希・皐梨專斎・希・あ希・專ttincludettincludevoidfun(char*a){char*p=a;while(*p==,*')p++;

1373for(;*p!=‘、〇';p++,a++)*a二*p;*a二‘、〇';)main()(FILE*wf;chars[81],*t="****A*BC*DEF*G*******〃;printf(""Enterastring:'n〃);gets(s);fun(s);printf(Thestringafterdeleted:

1374z,);puts(s);wf=fopen("out.dat","w");fun(t);fprintf(wf,,z%s",t);fclose(wf);

137595.假定输入的字符串中只包含字母和・号。请编写函数fun,它的功能是:使字符串的前导・号不得多于n个;若多于n个,则删除多余的・号;若少于或等于n个,则什么也不做,字符串中间和尾部的・号不删除。例如,若字符串中的内容为*******A*BC*DEF*G****,假设n的值为4,删除后,字符串中的内容则应当是・***A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。斗事事事事*******暴・*希・希・事事事格皐・・皐・・專・******臺臺*專ttincludeSincludevoidfun(char*a,intn)inti=0,k=0;char*p,*t;p=t=a;while(*t=,*'){k++;t++;}if(k>n){while(*p){a[i]=*(p+k-n);i++;p++;a[i]=>\Q9;FILEcharintmain()*wf;s[81],*t="****A*BC*DEF*G*******";n;printf("Enterastring:

1376");gets(s);printf("Entern:");scanf("%d",&n);fun(s,n);printf("Thestringafterdeleted:

1377");puts(s);wf=fopen("out.dat","w");fun(t,2);fprintf(wf,"%s",t);fclose(wf);

137895.请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。例如,若给定数组中的9个元素依次为12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.〇、11.0,则输出应为s=35.951014。あ皐事・事事あ・***皐********Sincludedoublefun(doublex[9])inti;doubleavg=0.0,sum=0.0;for(i=0;i<8;i++){avg=(x[i]+x[i+l])/2;sum+=sqrt(avg);returnsum;)main(){doubles,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0);inti;printf("\

1379Theoriginaldatais:\

1380〃);for(i=0;i<9;i++)printf("%6.If",a[i]);printf("\

1381\

1382");s=fun(a);printf("s=%f\

1383\

1384",s);N0N0();)N0N0(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;inti,j;doubles,a[9];rf=fopen(be.in,r);wf=fopen("be.out","w");for(i=0;i<5;i++){for(j=0;j<9;j++)fscanf(rf,"%lf",&a[j]);s=fun(a);fprintf(wf,"%lf\

1385",s);)fclose(rf);fclose(wf);97.请编写函数fun,其功能是:计算并输出下列多项式值:例如,若主函数从键盘给n输入50后,则输出为S=l.960784cs=l+l/(l+2)+1/(1+2+3)+..1/(1+2+3...+50)ttinclude

1386doublefun(intn)inti;doubles=0.0,sl=0.0;for(i=l;i<=n;i++){sl=sl+i;s=s+l.0/sl;returns;)main()(FILE*wf;intn;doubles;printf(〃'nlnputn:");scanf("%d",&n);s=fun(n);printf(z,

1387

1388s=%f

1389

1390,z,s);wf二fopen("out・dat","w");fprintf(wf,"%f”,fun(50));fclose(wf);97.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。例如,若主函数从键盘给n输入20后,则输出为s=0.583333〇皐星墓・事事豪品・圣・圣・圣・***皐帯#includedoublefun(intn)inti;doublesum=0.0;if(n>0&&n<=100){for(i=l;i<=n;i++)if(i%5==0||i%9==0)sum+=l.0/i;returnsum;main(){intn;doubles;printf("\

1391lnputn:");scanf("%d",&n);s=fun(n);printf("\

1392\

1393s=%f\

1394",s);N0N0();

1395NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;=ropen(be.in,r);wf=fopen("bc.out","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\

1396",s);fclose(rf);fclose(wf);97.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。例如,若主函数从键盘给n输入100后,则输出为sum=148.87427〇。あ皐事・事事あ・***皐********Sincludedoublefun(intn)inti,j=0;doubles=0;for(i=3;i<=n;i++){for(j=2;jif(i%j==0)break;if(j==i)s=s+sqrt(i);returns;)main(){intn;doublesum;printf(z,\

1397\

1398lnputn:〃);scanf(〃刎〃,&n);sum=fun(n);printfC\

1399\

1400sum二%f\

1401\

1402〃,sum);NONO();NONO(){/・请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*wf;intn,i;doubles;rf=fopen(be.in,r);wf=fopen("bc.out","w");for(i=0;i<10;i++){fscanf(rf,"%d",&n);s=fun(n);fprintf(wf,"%lf\

1403",s);)fclose(rf);fclose(wf);

140497.请编写函数fun,其功能是:计算并输出S=l+(l+2へ〇.5)+(1+2へ〇.5+3C〇.5)++(1+2へ〇.5+3C〇.5++ガ0.5)例如,若主函数从键盘给n输入20后,则输出为s=534.188884。臺斗・事事*****•臺・希・希・事量事事***斎*斗る*臺*******$$#include#includedoublefun(intn)inti;doubles=0.0,sl=0.0;for(i=l;i<=n;i++){sl=sl+pow(i,0.5);s=s+sl;returns;main()FILE*wf;intn;doubles;printf(〃'n

1405lnputn:〃);scanf("%d",&n);s=fun(n);printfC

1406

1407s=%f

1408

1409",s);wf二fopen("out・dat","w");fprintf(wf,"%f",fun(20));fclose(wf);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭