程序设计.docx
- 文档编号:13651818
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:182
- 大小:67.82KB
程序设计.docx
《程序设计.docx》由会员分享,可在线阅读,更多相关《程序设计.docx(182页珍藏版)》请在冰点文库上搜索。
程序设计
1.假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:
除了字符串前导和尾部的*号之外,将串中其它*号全部删除。
形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G********,删除后,字符串中的内容应当是:
****ABCDEFG********。
在编写函数时,不得使用C语言提供的字符串函数。
注意:
部分源程序存在文件prog.c中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include
#include
voidfun(char*a,char*h,char*p)
{charb[81],*x;
inti=0,j=0;
x=a;
while(x while(h<=p) if(*h! ='*'){b[j]=*h;j++;h++;} elseh++; p++; while(*p){b[j]=*p;j++;p++;} b[j]='\0';j=0; while(b[j]) {a[i]=b[j];i++;j++;} a[i]='\0'; } voidNONO() {/*请在此函数内打开文件,输入测试数据,调用fun函数, 输出数据,关闭文件。 */ chars[81],*t,*f; inti; FILE*rf,*wf; rf=fopen("b37.in","r"); wf=fopen("a37.out","w"); for(i=0;i<4;i++) {fscanf(rf,"%s",s); t=f=s; while(*t)t++; t--; while(*t=='*')t--; while(*f=='*')f++; fun(s,f,t); fprintf(wf,"%s\n",s); } fclose(rf); fclose(wf); } main() {chars[81],*t,*f; printf("Enterastring: \n");gets(s); t=f=s; while(*t)t++; t--; while(*t=='*')t--; while(*f=='*')f++; fun(s,f,t); printf("Thestringafterdeleted: \n");puts(s); NONO(); } 2.请编写一个函数fun,它的功能是: 根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代): 程序运行后,如果输入精度0.0005,则程序输出为3.140578。 注意: 部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include doublefun(doubleeps) { intn=0; doubledown=1,up=1; doubleone,pi=0; one=(double)up/(double)down; while(one>=eps){ pi+=one; n++; up=up*n; down=down*(2*n+1); one=(double)up/(double)down; } returnpi*2; } voidNONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE*fp,*wf; inti; doublex; fp=fopen("bc04.in","r"); if(fp==NULL){ printf("数据文件bc04.in不存在! "); return; } wf=fopen("bc04.out","w"); for(i=0;i<10;i++){ fscanf(fp,"%lf",&x); fprintf(wf,"%lf\n",fun(x)); } fclose(fp); fclose(wf); } main() {doublex; printf("Inputeps: "); scanf("%lf",&x);printf("\neps=%lf,PI=%lf\n",x,fun(x)); NONO(); } 3.请编写一个函数fun,它的功能是: 比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。 若两个字符串长度相同,则返回第一个字符串。 例如,输入beijing 函数将返回shanghai。 注意: 部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include char*fun(char*s,char*t) { intfirst=0,second=0; char*p,*q; p=s; q=t; while(*p++! ='\0') first++; while(*q++! ='\0') second++; if(first==second) returns; elseif(first>second) returns; else returnt; } voidNONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ 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\n",fun(a,b)); } fclose(fp); fclose(wf); } main() {chara[20],b[10]; printf("Input1thstring: "); gets(a); printf("Input2thstring: "); gets(b); printf("%s\n",fun(a,b)); NONO(); } 4.规定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是: 使字符串最前面连续的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。 例如,字符串中的内容为: *******A*BC*DEF*G****,若n的值为4,删除后,字符串中的内容应当是: ****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为: *******A*BC*DEF*G****。 n的值在主函数中输入。 在编写函数时,不得使用C语言提供的字符串函数。 注意: 部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #include voidfun(char*a,intn) {charb[81]; inti=0,j=0,s=0,k; while(a[i]=='*'){s++;i++;} if(s>n) {for(k=0;k {b[j]='*';j++;} while(a[i]) {b[j]=a[i];j++;i++;} b[j]='\0';i=0;j=0; while(b[j]) {a[i]=b[j];i++;j++;} a[i]='\0'; } } voidNONO() {/*请在此函数内打开文件,输入测试数据,调用fun函数, 输出数据,关闭文件。 */ chars[81]; inti,n; FILE*rf,*wf; rf=fopen("b40.in","r"); wf=fopen("a40.out","w"); for(i=0;i<4;i++) {fscanf(rf,"%s",s); fscanf(rf,"%d",&n); fun(s,n); fprintf(wf,"%s\n",s); } fclose(rf); fclose(wf); } main() {chars[81];intn; printf("Enterastring: \n");gets(s); printf("Entern: ");scanf("%d",&n); fun(s,n); printf("Thestringafterdeleted: \n");puts(s); NONO(); } 5.请编写一个函数fun,它的功能是: 计算n门课程的平均分,计算结果作为函数值返回。 例如: 若有5门课程的成绩是: 90.5,72,80,61.5,55,则函数的值为: 71.80。 注意: 部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include floatfun(float*a,intn) { inti; floataverage; doublesum=0; for(i=0;i sum+=a[i]; average=(float)sum/n; returnaverage; } voidNONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE*fp,*wf; inti,j; floataver,score[5]; fp=fopen("bc01.in","r"); if(fp==NULL){ printf("数据文件bc01.in不存在! "); return; } wf=fopen("bc01.out","w"); for(i=0;i<10;i++){ for(j=0;j<5;j++)fscanf(fp,"%f,",&score[j]); aver=fun(score,5); fprintf(wf,"%5.2f\n",aver); } fclose(fp); fclose(wf); } main() {floatscore[30]={90.5,72,80,61.5,55},aver; aver=fun(score,5); printf("\nAveragescoreis: %5.2f\n",aver); NONO(); } 6.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。 请编写函数fun,它的功能是: 求出该学生的平均分放在记录的ave成员中。 请自己定义正确的形参。 例如,学生的成绩是: 85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是: 78.875。 注意: 部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #defineN8 typedefstruct {charnum[10]; doubles[N]; doubleave; }STREC; voidfun(STREC*p) {inti; doubleaver=0; for(i=0;i {aver=aver+(*p).s[i];} (*p).ave=aver/N; } voidNONO() {/*请在此函数内打开文件,输入测试数据,调用fun函数, 输出数据,关闭文件。 */ STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5}; inti; FILE*wf; wf=fopen("a43.out","w"); fun(&s); fprintf(wf,"The%s'sstudentdata: \n",s.num); for(i=0;i fprintf(wf,"%4.1f\n",s.s[i]); fprintf(wf,"ave=%7.3f\n",s.ave); fclose(wf); } main() {STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5}; inti; fun(&s); printf("The%s'sstudentdata: \n",s.num); for(i=0;i printf("%4.1f\n",s.s[i]); printf("\nave=%7.3f\n",s.ave); NONO(); } 7.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分的学生人数通过形参传回,平均分通过函数值返回。 注意: 部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #defineN12 typedefstruct {charnum[10]; doubles; }STREC; doublefun(STREC*a,STREC*b,int*n) {inti,j; doubleaver=0; *n=0; for(i=0;i aver=aver+a[i].s; aver=aver/N; for(i=0;i if(a[i].s>=aver) {b[*n].s=a[i].s; for(j=0;j<10;j++) b[*n].num[j]=a[i].num[j]; *n=*n+1; } return(aver); } main() {STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}}; STRECh[N];FILE*out; inti,n;doubleave; ave=fun(s,h,&n); printf("The%dstudentdatawhichishigherthan%7.3f: \n",n,ave); for(i=0;i printf("%s%4.1f\n",h[i].num,h[i].s); printf("\n"); out=fopen("out12.dat","w"); fprintf(out,"%d\n%7.3f\n",n,ave); for(i=0;i fprintf(out,"%s%4.1f\n",h[i].num,h[i].s); fclose(out); } 8.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是: 按分数的高低排列学生的记录,高分在前。 注意: 部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #include #defineN16 typedefstruct {charnum[10]; ints; }STREC; voidfun(STRECa[]) {inti,j,p,t,k; charh;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计