程序设计.doc

上传人:本田雅阁 文档编号:2110430 上传时间:2019-02-14 格式:DOC 页数:71 大小:622.52KB
返回 下载 相关 举报
程序设计.doc_第1页
第1页 / 共71页
程序设计.doc_第2页
第2页 / 共71页
程序设计.doc_第3页
第3页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《程序设计.doc》由会员分享,可在线阅读,更多相关《程序设计.doc(71页珍藏版)》请在三一文库上搜索。

1、1假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其它*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:*ABCDEFG*。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include void fun(char *a,char

2、*h,char *p)char b81,*x; int i=0,j=0; x=a; while (xh) bj=*x;x+;j+; while (h=p) if (*h!=*) bj=*h;j+;h+; else h+; p+; while (*p) bj=*p;j+;p+; bj=0;j=0; while (bj) ai=bj;i+;j+; ai=0;void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s81,*t,*f; int i; FILE *rf,*wf; rf = fopen(b37.in,r); wf =

3、fopen(a37.out, w) ; for (i=0;i4;i+) fscanf(rf,%s,s); t=f=s; while(*t) t+; t-; while (*t=*) t-; while (*f=*) f+; fun(s,f,t); fprintf(wf,%sn,s); fclose(rf); fclose(wf) ; main() char s81,*t,*f; printf(Enter a string:n);gets(s); t=f=s; while(*t) t+; t-; while (*t=*) t-; while (*f=*) f+; fun(s,f,t); prin

4、tf(The string after deleted:n);puts(s); NONO();2. 请编写一个函数fun,它的功能是:根据以下公式求的值(要求满足精度0.0005, 即某项小于0.0005时停止迭代): 程序运行后,如果输入精度0.0005,则程序输出为3.140578。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include double fun ( double eps) int n=0; double down=1,up=1; double one ,pi=0

5、; one = (double)up/(double)down; while(one=eps) pi+=one; n+; up=up*n; down=down*(2*n+1); one=(double)up/(double)down; return pi*2;void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; double x ; fp = fopen(bc04.in,r) ; if(fp = NULL) printf(数据文件bc04.in不存在!) ; return ; wf = fopen(b

6、c04.out,w) ; for(i = 0 ; i 10 ; i+) fscanf(fp, %lf, &x) ; fprintf(wf, %lfn, fun(x) ; fclose(fp) ; fclose(wf) ;main( ) double x; printf(Input eps:) ; scanf(%lf,&x); printf(neps = %lf, PI=%lfn, x, fun(x); NONO();3. 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。 例如,输

7、入beijing shanghai (为回车键) 函数将返回shanghai。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include char *fun ( char *s, char *t) int first=0,second=0; char *p,*q; p=s; q=t; while(*p+!=0) first+; while(*q+!=0) second+; if(first=second) return s; else if (firstsecond) return s; else r

8、eturn t; void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; char a20, b20 ; 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, %sn, fun(a, b) ; fclose(fp) ; fclose(wf) ;

9、main( ) char a20,b10; printf(Input 1th string:) ; gets( a); printf(Input 2th string:) ; gets( b); printf(%sn,fun (a, b ); NONO ();4. 规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串最前面连续的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。 例如,字符串中的内容为:*A*BC*DEF*G*,若n的值为4,删除后,字符串中的内容应当是:*A*BC*DEF*G*;若n的值为8,则

10、字符串中的内容仍为:*A*BC*DEF*G*。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include void fun(char *a,int n) char b81; int i=0,j=0,s=0,k; while (ai=*) s+;i+; if (sn) for (k=0;kn;k+) bj=*;j+; while (ai)bj=ai;j+;i+; bj=0; i=0;j=0; while (bj) ai

11、=bj;i+;j+; ai=0; void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ char s81; int i,n; FILE *rf,*wf; rf = fopen(b40.in,r); wf = fopen(a40.out, w) ; for (i=0;i4;i+) fscanf(rf,%s,s); fscanf(rf,%d,&n); fun(s,n); fprintf(wf,%sn,s); fclose(rf); fclose(wf) ; main() char s81;int n; printf(Enter a st

12、ring:n);gets(s); printf(Enter n: );scanf(%d,&n); fun(s,n); printf(The string after deleted:n);puts(s); NONO();5. 请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。 例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为:71.80。 注意:部分源程序存在文件prog.c中。请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include float fun ( float *a , i

13、nt n ) int i; float average; double sum=0; for(i=0;in;i+) sum+=ai; average=(float)sum/n; return average;void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, j ; float aver, score5 ; fp = fopen(bc01.in,r) ; if(fp = NULL) printf(数据文件bc01.in不存在!) ; return ; wf = fopen(bc01.out,w) ;

14、for(i = 0 ; i 10 ; i+) for(j = 0 ; j 5 ; j+) fscanf(fp,%f,&scorej) ; aver = fun(score, 5) ; fprintf(wf, %5.2fn, aver) ; fclose(fp) ; fclose(wf) ;main() float score30=90.5, 72, 80, 61.5, 55, aver; aver = fun( score, 5 ); printf( nAverage score is: %5.2fn, aver); NONO ( );6. 某学生的记录由学号、8门课程成绩和平均分组成,学号和

15、8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 例如,学生的成绩是:85.5,76,69.5,85,91,72,64.5,87.5,他的平均分应当是:78.875。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #define N 8typedef struct char num10; double sN; double ave;STREC;void fun(STREC *p) int i; double av

16、er=0; for (i=0;iN;i+) aver=aver+(*p).si; (*p).ave=aver/N;void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ STREC s=GA005,85.5,76,69.5,85,91,72,64.5,87.5; int i; FILE *wf; wf = fopen(a43.out, w) ; fun(&s); fprintf(wf,The %ss student data:n,s.num); for(i=0;iN;i+) fprintf(wf,%4.1fn,s.si); fprin

17、tf(wf,ave=%7.3fn,s.ave); fclose(wf) ;main() STREC s=GA005,85.5,76,69.5,85,91,72,64.5,87.5; int i; fun(&s); printf(The %ss student data:n,s.num); for(i=0;iN;i+) printf(%4.1fn,s.si); printf(nave=%7.3fn,s.ave); NONO();7. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在h所指的数组中,高于等于平均分

18、的学生人数通过形参传回,平均分通过函数值返回。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #define N 12typedef struct char num10; double s; STREC;double fun(STREC *a,STREC *b,int *n) int i,j; double aver=0; *n=0; for (i=0;iN;i+) aver=aver+ai.s; aver=aver/N; for (i=0;i=aver) b*n.s=ai.s; for

19、(j=0;j10;j+) b*n.numj=ai.numj; *n=*n+1; return (aver);main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85,GA01,91,GA07,72,GA08,64,GA06,87,GA09,60,GA11,79,GA12,73,GA10,90; STREC hN;FILE *out; int i,n;double ave; ave=fun(s,h,&n); printf(The %d student data which is higher than %7.3f:n,n,ave); for(i=0;in;i

20、+) printf(%s %4.1fn,hi.num,hi.s); printf(n); out=fopen(out12.dat,w); fprintf(out,%dn%7.3fn,n,ave); for (i=0;in;i+) fprintf(out,%s %4.1fn,hi.num,hi.s); fclose(out);8. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的

21、若干语句。#include #define N 16typedef struct char num10; int s; STREC;void fun(STREC a)int i,j,p,t,k; char h; for (i=0;iN;i+) p=i; for (j=i+1;jN;j+) if (ap.saj.s) p=j; if (p!=i) t=ap.s;ap.s=ai.s;ai.s=t; for (k=0;k10;k+) h=ap.numk; ap.numk=ai.numk; ai.numk=h; main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,

22、85,GA01,91,GA07,72,GA08,64,GA06,87,GA015,85,GA013,91,GA012,64,GA014,91,GA011,91,GA017,64,GA018,64,GA016,72; int i;FILE *out; fun(s); printf(The data after sorted:n); for(i=0;iN;i+) if(i)%4=0)printf(n); printf(%s %4d,si.num,si.s); printf(n); out=fopen(out16.dat,w); for (i=0;iN;i+) if(i)%4=0 & i) fpri

23、ntf(out,n); fprintf(out,%s %4d,si.num,si.s); fprintf(out,n); fclose(out);9. 函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。 例如,当a=45,b=12。调用该函数后,c=2415。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include #include void fun(i

24、nt a, int b, long *c) int a_up,a_low,b_up,b_low; a_up=a/10; a_low=a%10; b_up=b/10; b_low=b%10; *c=b_low*1000+a_up*100+b_up*10+a_low;void NONO ( )/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, a,b ; long c ; rf = fopen(in1.dat, r) ; wf = fopen(bc04.dat,w) ; for(i = 0 ; i 10 ; i+) fscanf(

25、rf, %d,%d, &a, &b) ; fun(a, b, &c) ; fprintf(wf, a=%d,b=%d,c=%ldn, a, b, c) ; fclose(rf) ; fclose(wf) ;main() int a,b; long c; system(cls); printf(Input a, b:); scanf(%d%d, &a, &b); fun(a, b, &c); printf(The result is: %ldn, c); NONO();10.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的

26、学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include #define N 16typedef struct char num10; int s; STREC;STREC fun(STREC *a,char *b) int i,f=0; STREC p; p=a0; for (i=0;iN;i+) if (strcmp(ai.nu

27、m,b)=0) p=ai;f=1; if (f=0) p.num0=0; p.s=-1; return p;main() STREC sN=GA05,85,GA03,76,GA02,69,GA04,85,GA01,91,GA07,72,GA08,64,GA06,87,GA015,85,GA013,91,GA012,64,GA014,91,GA011,91,GA017,64,GA018,64,GA016,72; STREC h; char m10; int i;FILE *out; printf(The original data:n); for(i=0;iN;i+) if(i)%4=0)pri

28、ntf(n); printf(%s %3d,si.num,si.s); printf(nnEnter the number: );gets(m); h=fun(s,m); printf(The data: ); printf(n%s %4dn,h.num,h.s); printf(n); out=fopen(out17.dat,w); h=fun(s,GA013); fprintf(out,%s %4dn,h.num,h.s); fclose(out);11. 例如,输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,

29、把69放在heigh中。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #define N 16typedef struct char num10; int s; STREC;int fun(STREC *a,STREC *b,int l,int h) int i,j=0,k,f=0; for (i=0;i=l) & (ai.s=h) for (k=0;k10;k+) bj.numk=ai.numk; bj.s=ai.s; j+; f+; return(f);main() STREC sN

30、=GA05,85,GA03,76,GA02,69,GA04,85,GA01,91,GA07,72,GA08,64,GA06,87,GA015,85,GA013,91,GA012,64,GA014,91,GA011,91,GA017,64,GA018,64,GA016,72; STREC hN;FILE *out; int i,n,low,heigh,t; printf(Enter 2 interger number low & heigh:); scanf(%d%d,&low,&heigh); if (heighlow) t=heigh;heigh=low;low=t; n=fun(s,h,l

31、ow,heigh); printf(The students data between %d-%d:n,low,heigh); for(i=0;in;i+) printf(%s %4dn,hi.num,hi.s); printf(n); out=fopen(out18.dat,w); n=fun(s,h,80,98); fprintf(out,%dn,n);for(i=0;in;i+) fprintf(out,%s %4dn,hi.num,hi.s); fclose(out);12. N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出

32、平均分,由函数值返回。 例如,若学生的成绩是:85,76,69,85,91,72,64,87;则平均分应当是:78.625。 注意:部分源程序存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include #define N 8struct slist double s; struct slist *next;typedef struct slist STREC;double fun(STREC *h) STREC *p; double aver=0; p=h-next; while (p!=0) ave

33、r=aver+p-s; p=p-next; aver=aver/N; return aver;STREC *creat(double *s) STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC);p-s=0; while(is=si;i+;p-next=q;p=q; p-next=0; return h;outlist(STREC *h) STREC *p; p=h-next;printf(head); do printf(-%4.1f,p-s);p=p-next; while(p!=0); printf(nn);void NONO

34、( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ double sN=85,76,69,85,91,72,64,87,ave; STREC *h; FILE *wf; h=creat(s); outlist(h); ave=fun(h); wf = fopen(a44.out, w) ; fprintf(wf,ave=%6.3fn,ave); fclose(wf) ;main() double sN=85,76,69,85,91,72,64,87,ave; STREC *h; h=creat(s); outlist(h); ave=fun(h);

35、 printf(ave=%6.3fn,ave); NONO();13. 请编写一个函数unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n2)位的整数,函数求出w的低n-1位的数作为函数值返回。 例如:w值为5923,则函数返回923;w值为923,则函数返回23。 注意:部分源程序保存在文件prog.c中。 请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #include #include unsigned fun ( unsigned w )int i, j, sqr = 1;unsign

36、ed result;char * str,ch5;str=ch;for (i = 1; (i = 1); i+) stri - 1 = 0 + w % 10; w /= 10;stri - 1 = 0;result = str0 - 0;for (j = 1; j i - 2; j+ ) sqr *= 10; result += (strj - 0) * sqr;return result;void NONO( )/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ unsigned x ; int i ; FILE *rf, *wf ; rf = fop

37、en(bc5.in, r) ; wf = fopen(bc5.out, w) ; for(i = 0 ; i 20 ; i+) fscanf(rf, %u, &x) ; fprintf(wf, %un, fun(x) ) ; fclose(rf) ; fclose(wf) ;main( ) unsigned x; system(cls); printf ( Enter a unsigned integer number : ); scanf ( %u, &x ); printf ( The original data is : %un, x ); if ( x 10 ) printf (Data error !); else printf ( The result : %un, fun ( x ) ); NONO( );14. 请编写一个函数 int fun(int *s, int t, int *k),用来求出数组的最大元素在数组中的下标, 用k返回。 例如, 输入如下整数: 876 675 896

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1