首页资源分类嵌入式处理器51内核 > c语言国考二级题库

c语言国考二级题库

已有 445023个资源

下载专区

文档信息举报收藏

标    签:全国计算二级C语言

分    享:

文档简介

对于全国计算机二级考试的帮助很大,稳过的题库,每年二级考试的题库都在里面

文档预览

 你好,计算机二级考试上机考试的题目出于这100道题,改变的只是某些数据。题型是不会改变的。建议考试过程中一定要仔细,希望你能考过二级。 上 机 题 库 第一部分 填空题 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ 注意:源程序存放在考生文件夹下的BLANK1.C中。 1. 不得增行或删行,也不得更改程序的结构! 2. 请在程序下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ 1. 给定程序中,函数FUN的功能是:计算出带有头接点的单向链表中各结点数据域之和作为函数值返回。 #include #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; SLIST *creatlist(int *); void outlist(SLIST *); int fun( SLIST *h) { SLIST *p; int s=0; p=h->next; while(p) { /**********************************found*********************************/ s+= p->___1___; data /**********************************found*********************************/ p=p->___2___; next } return s; } main( ) { SLIST *head; int a[N]={12,87,45,32,91,16,20,48}; head=creatlist(a); outlist(head); /**********************************found*********************************/ printf("\nsum=%d\n", fun(___3___)); head } SLIST *creatlist(int a[ ]) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; idata=a[i]; p->next=q; p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d", p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } 2. 给定程序中,函数FUN的功能是:求出形参SS所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中工有M个字符串,且串长 #include #define M 5 #define N 20 void fun(char (*ss)[N]) { int i, j, k=0, n, m, len; for(i=0; in) { /**********************************found*********************************/ n=len; k=___1___; i } } for(i=0; i=0; j--) len ss[i][m--]=ss[i][j]; for(j=0; j #include #define N 8 typedef struct { char num[10]; int year,month,day ; }STU; /**********************************found*********************************/ ___1___fun(STU *std, char *num) STU { int i; STU a={"",9999,99,99}; for (i=0; i #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; void fun( SLIST *h) { SLIST *p, *q; p=h->next; if (p!=NULL) { q=p->next; while(q!=NULL) { if (p->data==q->data) { p->next=q->next; /**********************************found*********************************/ free(___1___); q /**********************************found*********************************/ q=p->___2___; next } else { p=q; /**********************************found*********************************/ q=q->___3___; next } } } } SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; idata=a[i]; p->next=q; p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("\nThe list is NULL!\n"); else { printf("\nHead"); do { printf("->%d",p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } main( ) { SLIST *head; int a[N]={1,2,2,3,4,4,4,5}; head=creatlist(a); printf("\nThe list before deleting :\n"); outlist(head); fun(head); printf("\nThe list after deleting :\n"); outlist(head); 5. 函数fun 的功能是进行数字字符转换。若形参ch中是数字字符'0 ~ 9',则'0'转换成'9', '1'转换成'8', '2'转换成'7' … '9'转换成'0';若是其他字符则保持不变;并将转换后的结果作为函数值返回. #include /**********************************found*********************************/ ___1___fun(char ch) char { /**********************************found*********************************/ if (ch>='0' &&___2____) ch<='9' /**********************************found*********************************/ return '9'- (ch-___3___); '0' return ch ; } main( ) { char c1, c2; printf("\nThe result :\n"); c1='2'; c2 = fun(c1); printf("c1=%c c2=%c\n", c1, c2); c1='8'; c2 = fun(c1); printf("c1=%c c2=%c\n", c1, c2); c1='a'; c2 = fun(c1); printf("c1=%c c2=%c\n", c1, c2); } 6. 给定程序中,函数fun的功能是:对形参ss所指字符串数组中的M字符串按长度由短到长进行排序。SS所指字符串数组中共有M个字符串,且串长 #include #define M 5 #define N 20 void fun(char (*ss)[N]) { int i, j, k, n[M]; char t[N]; for(i=0; in[j]) k=___2___; j if(k!=i) { strcpy(t,ss[i]); strcpy(ss[i],ss[k]); /**********************************found*********************************/ strcpy(ss[k],___3___); t n[k]=n[i]; } } } main( ) { char s[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"}; int i; printf("\nThe original strings are :\n"); for(i=0; i int fun(int a, int b, int c) { int t; /**********************************found*********************************/ t = (a>b) ? (b>c? b :(a>c?c:___1___)) : ((a>c)?___2___ : ((b>c)?c:___3___)); return t; } 1. a 2. a 3.b main( ) { int a1=3, a2=5, a3=4, r; r = fun(a1, a2, a3); printf("\nThe middle number is : %d\n", r); } 8. 给定程序中,函数FUN的功能是:统计出带有头结点的单向链表中接点的个数,存放在形参N所指的存储单元中。 #include #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; SLIST *creatlist(int *a); void outlist(SLIST *); void fun( SLIST *h, int *n) { SLIST *p; /**********************************found*********************************/ *n=____1_____; 0 p=h->next; while(p) { (*n)++; /**********************************found*********************************/ p=____2____; p->next } } main( ) { SLIST *head; int a[N]={12,87,45,32,91,16,20,48}, num; head=creatlist(a); outlist(head); /**********************************found*********************************/ fun(head,____3____); &num printf("\nnumber=%d\n",num); } SLIST *creatlist(int a[ ]) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; idata=a[i]; p->next=q; p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d",p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } 9. 给定程序的功能是:调用函数FUN将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名房子变量sfname中,目标文件名放在变量tfname中。 #include #include int fun(char *source, char *target) { FILE *fs,*ft; char ch; /**********************************found*********************************/ if((fs=fopen(source,___1___))==NULL) "r" return 0; if((ft=fopen(target, "w"))==NULL) return 0; printf("\nThe data in file :\n"); ch=fgetc(fs); /**********************************found*********************************/ while(!feof(___2___)) fs { putchar( ch ); /**********************************found*********************************/ fputc(ch,___3___); ft ch=fgetc(fs); } fclose(fs); fclose(ft); printf("\n\n"); return 1; } main( ) { char sfname[20] ="myfile1",tfname[20]="myfile2"; FILE *myf; int i; char c; myf=fopen(sfname,"w"); printf("\nThe original data :\n"); for(i=1; i<30; i++){ c='A'+rand( )%25;fprintf(myf,"%c",c); printf("%c",c); } fclose(myf);printf("\n\n"); if (fun(sfname, tfname)) printf("Succeed!"); else printf("Fail!"); } 10. 给定 程序中,函数FUN的功能是:在形参S所指字符串中的每个数字字符之后插入一个*。例如,形参S所指字符串为:def35adh3kjsdf7.执行结果为:def3*5*adh3*kjsdf7* #include void fun(char *s) { int i, j, n; for(i=0; s[i]!='\0'; i++) /**********************************found*********************************/ if(s[i]>='0' ___1___ s[i]<='9') && { n=0; /**********************************found*********************************/ while(s[i+1+n]!=___2___) n++; 0 for(j=i+n+1; j>i; j--) /**********************************found*********************************/ s[j+1]= ___3___; s[j] s[j+1]='*'; i=i+1; } } main( ) { char s[80]="ba3a54cd23a"; printf("\nThe original string is : %s\n",s); fun(s); printf("\nThe result is : %s\n",s); } 11. 给定程序中,函数FUN的功能是:将形参STD所指结构体数组中年龄最大者的数据作为函数值返回,并将 main函数输出。 #include typedef struct { char name[10]; int age; }STD; STD fun(STD std[], int n) { STD max; int i; /**********************************found*********************************/ max=____1____; std[0] for(i=1; i #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; SLIST *creatlist(char *); void outlist(SLIST *); int fun( SLIST *h, char ch) { SLIST *p; int n=0; p=h->next; /**********************************found*********************************/ while(p!=___1___) NULL { n++; /**********************************found*********************************/ if (p->data==ch) return ___2___; n else p=p->next; } return 0; } main( ) { SLIST *head; int k; char ch; char a[N]={'m','p','g','a','w','x','r','d'}; head=creatlist(a); outlist(head); printf("Enter a letter:"); scanf("%c",&ch); /**********************************found*********************************/ k=fun(___3___); head,ch if (k==0) printf("\nNot found!\n"); else printf("The sequence number is : %d\n",k); } SLIST *creatlist(char *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; idata=a[i]; p->next=q; p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("\nThe list is NULL!\n"); else { printf("\nHead"); do { printf("->%c",p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } 13. 给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt 中,用-1作为字符串输入结素的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数read Text 和 write Text实现. #include #include #include void WriteText(FILE *); void ReadText(FILE *); main( ) { FILE *fp; if((fp=fopen("myfile4.txt","w"))==NULL) { printf(" open fail!!\n"); exit(0); } WriteText(fp); fclose(fp); if((fp=fopen("myfile4.txt","r"))==NULL) { printf(" open fail!!\n"); exit(0); } ReadText(fp); fclose(fp); } /**********************************found*********************************/ void WriteText(FILE ___1___ ) *fw { char str[81]; printf("\nEnter string with -1 to end :\n"); gets(str); while(strcmp(str,"-1")!=0) { /**********************************found*********************************/ fputs(___2___,fw); fputs("\n",fw); str gets(str); } } void ReadText(FILE *fr) { char str[81]; printf("\nRead file and output to screen :\n"); fgets(str,81,fr); while( !feof(fr) ) { /**********************************found*********************************/ printf("%s",___3___); str fgets(str,81,fr); } } 14. 给定程序中,函数FUN的功能是:有N X N矩阵,根据给定的m(m<=N)值,将每个元素中的值均右移m个位置,左边置为0。例如,N=3,m=2,有下列矩阵 1 2 3 0 0 1 4 5 6 程序执行结果为 0 0 4 7 8 9 0 0 7 #include #define N 4 void fun(int (*t)[N], int m) { int i, j; /**********************************found*********************************/ for(i=0; i=0; j--) /**********************************found*********************************/ t[i][j+___2___ ]=t[i][j]; m /**********************************found*********************************/ for(j=0; j<___3___; j++) m t[i][j]=0; } } main( ) { int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j, m; printf("\nThe original array:\n"); for(i=0; i #define N 9 /**********************************found*********************************/ void fun(int ___1___ , int n) *a { int i, j, max, min, px, pn, t; /**********************************found*********************************/ for (i=0; i a[j]) { min = a[j]; pn = j; } } if (px != i) { t = a[i]; a[i] = max; a[px] = t; if (pn == i) pn= px; } if (pn != i+1) { t = a[i+1]; a[i+1] = min; a[pn] = t; } } } main( ) { int b[N]={1,4,2,3,9,6,5,8,7}, i; printf("\nThe original data :\n"); for (i=0; i #define M 5 #define N 20 /**********************************found*********************************/ int fun(char (*ss) [___1___], int *n) N { int i, k=0, len=0; for(i=0; i*n) { /**********************************found*********************************/ *n=____3____; len k=i; } } return(k); } main( ) { char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"}; int n,k,i; printf("\nThe original strings are :\n"); for(i=0;i void fun(int a[], int n) { int i,t; /**********************************found*********************************/ for (i=0; i<___1___; i++) n/2 { t=a[i]; /**********************************found*********************************/ a[i] = ___2___ a[n-1-i]; /**********************************found*********************************/ a[n-1-i]= ___3___; t } } main( ) { int b[9]={1,2,3,4,5,6,7,8,9}, i; printf("\nThe original data :\n"); for (i=0; i<9; i++) printf("%4d ", b[i]); printf("\n"); fun(b, 9); printf("\nThe data after invert :\n"); for (i=0; i<9; i++) printf("%4d ", b[i]); printf("\n"); } 18. 给定程序中,函数FUN的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。 例如,S所指字符串:baacda,c中的字符为:a, 执行后S所指字符串为:baaaacdaa #include void fun(char *s, char c) { int i, j, n; /**********found**********/ for(i=0; s[i]!=___1___; i++) '\0' if(s[i]==c) { /**********found**********/ n=____2____; 0 while(s[i+1+n]!='\0') n++; for(j=i+n+1; j>i; j--) s[j+1]=s[j]; /**********found**********/ s[j+1]=s[___3___] ; i i=i+1; } } main() { char s[80]="baacda", c; printf("\nThe string: %s\n",s); printf("\nInput a character: "); scanf("%c",&c); fun(s,c); printf("\nThe result is: %s\n",s); } 19. 函数FUN的功能是:把形参a所指数组总的奇数原顺序依次存放到a[0],a[1],a[2].……中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为: 9、1、4、2、3、6、5、8、7,删除偶数后,a所指数组中数据为:9、1、3、5、7,返回值为5。 #include #define N 9 int fun(int a[], int n) { int i,j; j = 0; for (i=0; i #include int fun(char *source, char *target) { FILE *fs,*ft; char ch; /**********************************found*********************************/ if((fs=fopen(source, ___1___))==NULL) "r" return 0; if((ft=fopen(target, "w"))==NULL) return 0; printf("\nThe data in file :\n"); ch=fgetc(fs); /**********************************found*********************************/ while(!feof(___2___)) fs { putchar( ch ); /**********************************found*********************************/ fputc(ch,___3___); ft ch=fgetc(fs); } fclose(fs); fclose(ft); printf("\n\n"); return 1; } main( ) { char sfname[20] ="myfile1",tfname[20]="myfile2"; FILE *myf; int i; char c; myf=fopen(sfname,"w"); printf("\nThe original data :\n"); for(i=1; i<30; i++){ c='A'+rand( )%25;fprintf(myf,"%c",c); printf("%c",c); } fclose(myf);printf("\n\n"); if (fun(sfname, tfname)) printf("Succeed!"); else printf("Fail!"); } 21. 函数FUN的功能是:计算 #include #include double fun(double x) { double f, t; int n; /**********************************found*********************************/ f = 1.0+___1___; x t = x; n = 1; do { n++; /**********************************found*********************************/ t *= x/___2___; n /**********************************found*********************************/ f += ___1___; t } while (fabs(t) >= 1e-6); return f; } main( ) { double x, y; x=2.5; y = fun(x); printf("\nThe result is :\n"); printf("x=%-12.6f y=%-12.6f \n", x, y); } 22. 给定程序中,函数FUN的功能是:统计形参S所指字符串中数字字符出现的次数,并存放在形参t所指的变量中最后在函数中输出。例如,形参所指的字符串为:abcdef35adgh3kjsdf7.输出结果为:4 #include void fun(char *s, int *t) { int i, n; n=0; /**********************************found*********************************/ for(i=0; ___1___ !=NULL; i++) s[i] /**********************************found*********************************/ if(s[i]>='0'&&s[i]<=___2___) n++; '9' /**********************************found*********************************/ *t=___3___; n } main( ) { char s[80]="abcdef35adgh3kjsdf7"; int t; printf("\nThe original string is : %s\n",s); fun(s,&t); printf("\nThe result is : %d\n",t); } 23. 用筛选法可得到2—n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0)接着从数表中找下一个非0数,并从数表中找下一个非0数,并从数表中删去该书的所有倍数:依次类推,直到所找的下一个数等于n为止。这样会得到一个序列:2,3,5,7,11,13,17,19,23,…… 函数FUN用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。 #include int fun(int n) { int a[10000], i,j, count=0; for (i=2; i<=n; i++) a[i] = i; i = 2; while (i #define N 4 /**********************************found*********************************/ void fun(int ___1___, int n) t[N][N] { int i,s; /**********************************found*********************************/ for(___2___; i++) i=0;i void fun(char *s, char c) { int i, j, n; /**********************************found*********************************/ for(i=0; s[i]!=___1___ ; i++) if(s[i]==c) { /**********************************found*********************************/ n=___2___ ; while(s[i+1+n]!='\0') n++; for(j=i+n+1; j>i; j--) s[j+1]=s[j]; /**********************************found*********************************/ s[j+1]=___3___ ; i=i+1; } } main( ) { char s[80]="baacda", c; printf("\nThe string: %s\n",s); printf("\nInput a character: "); scanf("%c",&c); fun(s,c); printf("\nThe result is: %s\n",s); } 26. 函数FUN的功能是:把形参a所指数组中的最小值防在元素a[0]中,接着把形参a 所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以次类推。例如:若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7;则按规则移动后,数据排列为:1,9,2,8,3,7,4,6,5。形参n中存放a所指数组中数据的个数。 注意:规定FUN函数中的MAX存放当前所找的最大值,PX存放当前所找最大值的下标。 # include #define N 9 void fun(int a[], int n) { int i,j, max, min, px, pn, t; for (i=0; i___3___) 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+1]; a[i+1] = max; a[px] = t; } } } main( ) { int b[N]={9,1,4,2,3,6,5,8,7}, i; printf("\nThe original data :\n"); for (i=0; i /**********************************found*********************************/ #define OK(i, t, n) ((___1___%t==0) && (i/t #include #define N 5 typedef struct { int num; char name[10]; char tel[10]; }STYPE; void check( ); /**********************************found*********************************/ int fun(___1____*std) STYPE { /**********************************found*********************************/ ___2___ *fp; int i; FILE if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i #define N 9 void fun(int a[], int n) { int i, t, p; /**********************************found*********************************/ p = (n%2==0)?n/2:n/___1____; 2+1 for (i=0; i #define N 4 /**********************************found*********************************/ void fun(int (*t)___1___ ) { int i, j; for(i=1; i #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; void fun( SLIST *p) { SLIST *t, *s; t=p->next; s=p; while(t->next != NULL) { s=t; /**********************************found*********************************/ t=____1_____; t->next } /**********************************found*********************************/ printf(" %d ",___2___); s->data s->next=NULL; /**********************************found*********************************/ free(___3___); t } SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; idata=a[i]; p->next=q; p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("\nThe list is NULL!\n"); else { printf("\nHead"); do { printf("->%d",p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } main( ) { SLIST *head; int a[N]={11,12,15,18,19,22,25,29}; head=creatlist(a); printf("\nOutput from head:\n"); outlist(head); printf("\nOutput from tail: \n"); while (head->next != NULL){ fun(head); printf("\n\n"); printf("\nOutput from head again :\n"); outlist(head); } } 32. 函数FUN的功能是:计算 的前n项。若X=2.5,N=15时,函数值为:1.142857。 #include #include double fun(double x, int n) { double f, t; int i; /**********************************found*********************************/ f =___1___; 1.0 t = -1; for (i=1; i #define N 4 fun(int t[][N], int n) { int i, sum; /**********************************found*********************************/ ___1___; sum=0 for(i=0; i void fun(char *s) { int i, j=0, k=0; char t1[80], t2[80]; for(i=0; s[i]!='\0'; i++) if(s[i]>='0' && s[i]<='9') { /**********************************found*********************************/ t2[j]=s[i];___1___; j++ } else t1[k++]=s[i]; t2[j]=0; t1[k]=0; /**********************************found*********************************/ for(i=0; i typedef struct { int num; char name[9]; char sex; struct { int year,month,day ;} birthday; float score[3]; }STU; /**********************************found*********************************/ void show(STU___1___) tt { int i; printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex, tt.birthday.year, tt.birthday.month, tt.birthday.day); for(i=0; i<3; i++) /**********************************found*********************************/ printf("%5.1f",___2___); tt.score[i] printf("\n"); } main( ) { STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 }; printf("\nA student data:\n"); /**********************************found*********************************/ show(___3___); std } 36. 给定程序中,函数FUN的功能是:求SS所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。SS所指字符串数组中共有M个字符串,且串长 #include #define M 5 #define N 20 int fun(char (*ss)[N], int *n) { int i, k=0, len= N; /**********************************found*********************************/ for(i=0; i<___1___; i++) M { len=strlen(ss[i]); if(i==0) *n=len; /**********************************found*********************************/ if(len ___2___ *n) < { *n=len; k=i; } } /**********************************found*********************************/ return(___3___); i } main( ) { char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","chongqing"}; int n,k,i; printf("\nThe original strings are :\n"); for(i=0;i #define N 9 int fun(int a[], int n) { int i,j; j = 0; for (i=0; i int c1,c2,c3; void fun(long n) { c1 = c2 = c3 = 0; while (n) { /**********************************found*********************************/ switch(___1___) n%10 { /**********************************found*********************************/ case 1: c1++;____2____; break /**********************************found*********************************/ case 2: c2++;___3___; break case 3: c3++; } n /= 10; } } main( ) { long n=123114350L; fun(n); printf("\nThe result :\n"); printf("n=%ld c1=%d c2=%d c3=%d\n",n,c1,c2,c3); } 39. 给定程序中,函数FUN的功能是:把形参S所指字符中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大雨等于2)。例如,形参S所指的字符串为:ahcbedgf. #include void fun(char *s) { int i, n, k; char c; n=0; for(i=0; s[i]!='\0'; i++) n++; /**********************************found*********************************/ if(n%2==0) k=___1___; n-1 else k=n-2; /**********************************found*********************************/ c=___2___; s[k] for(i=k-2; i>=1; i=i-2) s[i+2]=s[i]; /**********************************found*********************************/ s[1]=___3___; c } main( ) { char s[80]="abcdefgh"; printf("\nThe original string is : %s\n",s); fun(s); printf("\nThe result is : %s\n",s); } 40. 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序连接。函数FUN的功能是:把形参X的值放入一个新结点并插入到链表中,插入后各结点仍保持递增有序 #include #include #define N 8 typedef struct list { int data; struct list *next; } SLIST; void fun( SLIST *h, int x) { SLIST *p, *q, *s; s=(SLIST *)malloc(sizeof(SLIST)); /**********************************found*********************************/ s->data=___1___; x q=h; p=h->next; while(p!=NULL && x>p->data) { /**********************************found*********************************/ q=___2___; p p=p->next; } s->next=p; /**********************************found*********************************/ q->next=___3___; s } SLIST *creatlist(int *a) { SLIST *h,*p,*q; int i; h=p=(SLIST *)malloc(sizeof(SLIST)); for(i=0; idata=a[i]; p->next=q; p=q; } p->next=0; return h; } void outlist(SLIST *h) { SLIST *p; p=h->next; if (p==NULL) printf("\nThe list is NULL!\n"); else { printf("\nHead"); do { printf("->%d",p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } main( ) { SLIST *head; int x; int a[N]={11,12,15,18,19,22,25,29}; head=creatlist(a); printf("\nThe list before inserting:\n"); outlist(head); printf("\nEnter a number : "); sccnf("%d",&x); fun(head,x); printf("\nThe list after inserting:\n"); outlist(head); } 41. 函数FUN的功能是进行字母的转换,若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母;若是其它字符保持不变,并将转换后的结果作为函数值返回。 #include #include char fun(char ch) { /**********************************found*********************************/ if ((ch>='a') ___1___(ch<='z')) && return ch -'a' + 'A'; if ( isupper(ch) ) /**********************************found*********************************/ return ch +'a'-___2___ ; 'A' /**********************************found*********************************/ return___3___; ch } main( ) { char c1, c2; printf("\nThe result :\n"); c1='w'; c2 = fun(c1); printf("c1=%c c2=%c\n", c1, c2); c1='W'; c2 = fun(c1); printf("c1=%c c2=%c\n", c1, c2); c1='8'; c2 = fun(c1); printf("c1=%c c2=%c\n", c1, c2); } 42. 给定程序中,函数FUN的功能是:求形参SS所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长饿字符串等长。SS所指字符串数组中共有M个字符串,且串长 #include #define M 5 #define N 20 void fun(char (*ss)[N]) { int i, j, n, len=0; for(i=0; in)n=len; } for(i=0; i typedef struct { int num; char name[9]; float score[3]; }STU; void show(STU tt) { int i; printf("%d %s : ",tt.num,tt.name); for(i=0; i<3; i++) printf("%5.1f",tt.score[i]); printf("\n"); } /**********************************found*********************************/ void modify(*ss,float a) STU { int i; for(i=0; i<3; i++) /**********************************found*********************************/ ss->___2___ *=a; score[i] } main( ) { STU std={ 1,"Zhanghua",76.5,78.0,82.0 }; float a; printf("\nThe original number and name and scores :\n"); show(std); printf("\nInput a number : "); scanf("%f",&a); /**********************************found*********************************/ modify(___3___,a); &std printf("\nA result of modifying :\n"); show(std); } 44. 给定程序中,函数FUN的功能是:将形参指针所指结构体数组中的三个元素按NUM成员进行升序排列。 #include typedef struct { int num; char name[10]; }PERSON; /**********************************found*********************************/ void fun(PERSON ___1___) *std { /**********************************found*********************************/ ___2___ temp; PERSON if(std[0].num>std[1].num) { temp=std[0]; std[0]=std[1]; std[1]=temp; } if(std[0].num>std[2].num) { temp=std[0]; std[0]=std[2]; std[2]=temp; } if(std[1].num>std[2].num) { temp=std[1]; std[1]=std[2]; std[2]=temp; } } main( ) { PERSON std[ ]={ 5,"Zhanghu",2,"WangLi",6,"LinMin" }; int i; /**********************************found*********************************/ fun(___3___); std printf("\nThe result is :\n"); for(i=0; i<3; i++) printf("%d,%s\n",std[i].num,std[i].name); } 45. 给定程序中,函数FUN的功能是:将自然数1~10以及他们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。 #include #include int fun(char *fname ) { FILE *fp; int i,n; float x; if((fp=fopen(fname, "w"))==NULL) return 0; for(i=1;i<=10;i++) /**********************************found*********************************/ fprintf(___1___,"%d %f\n",i,sqrt((double)i)); fp printf("\nSucceed!!\n"); /**********************************found*********************************/ ___2___; fclose(fp) printf("\nThe data in file :\n"); /**********************************found*********************************/ if((fp=fopen(___3___,"r"))==NULL) fname return 0; fscanf(fp,"%d%f",&n,&x); while(!feof(fp)) { printf("%d %f\n",n,x); fscanf(fp,"%d%f",&n,&x); } fclose(fp); return 1; } main( ) { char fname[]="myfile3.txt"; fun(fname); } 46. 给定程序中,函数fun的功能是:将N X N矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。 例如,N=3,有下列矩阵 计算结果是 1 2 3 3 1 2 4 5 6 6 4 5 7 8 9 9 7 8 #include #define N 4 void fun(int (*t)[N]) { int i, j, x; /**********************************found*********************************/ for(i=0; i<___1___; i++) N { /**********************************found*********************************/ x=t[i][___2___] ; n-1 for(j=N-1; j>=0; j--) t[i][j]=t[i][j-1]; /**********************************found*********************************/ t[i][___3___]=x; 0 } } main( ) { int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf("The original array:\n"); for(i=0; i void fun(char *s, char *p) { int i, j, n, x, t; n=0; for(i=0; s[i]!='\0'; i++) n++; for(i=1; is[j]) t=j; if(t!=i) { x=s[i]; s[i]=s[t]; s[t]=x; } } for(i=1,j=0; i #include #include void WriteText(FILE *); void ReadText(FILE *); main( ) { FILE *fp; if((fp=fopen("myfile4.txt","w"))==NULL) { printf(" open fail!!\n"); exit(0); } WriteText(fp); fclose(fp); if((fp=fopen("myfile4.txt","r"))==NULL) { printf(" open fail!!\n"); exit(0); } ReadText(fp); fclose(fp); } /**********************************found*********************************/ void WriteText(FILE ___1___) *fw { char str[81]; printf("\nEnter string with -1 to end :\n"); gets(str); while(strcmp(str,"-1")!=0) { /**********************************found*********************************/ fputs(___2___,fw); fputs("\n",fw); str gets(str); } } void ReadText(FILE *fr) { char str[81]; printf("\nRead file and output to screen :\n"); fgets(str,81,fr); while( !feof(fr) ) { /**********************************found*********************************/ printf("%s",___3___); str fgets(str,81,fr); } } 49. 给定程序中,函数FUN的功能是:有N X N矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r,然后使第一列成为第一行,最后一行成为第一列,最后一列成为最后一行,临时数组中的元素成为最后一列。 例如,若N=3,有下列矩阵: 计算结果为 1 2 3 7 4 1 4 5 6 8 5 2 7 8 9 9 6 3 #include #define N 4 void fun(int (*t)[N]) { int j ,r[N]; for(j=0; j=0;___2___) j-- t[N-1][N-1-j]=t[j][N-1]; for(j=N-1; j>=0; j--) /**********************************found*********************************/ t[j][N-1]=r[___3___]; j } main( ) { int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j; printf("\nThe original array:\n"); for(i=0; i #include double fun(double x) { double f, t; int n; f = 1.0 + x; /**********************************found*********************************/ t = ___1___; x n = 1; do { n++; /**********************************found*********************************/ t *= (-1.0)*x/___2___; n f += t; } /**********************************found*********************************/ while (____3____>= 1e-6); fabs(t) return f; } main( ) { double x, y; x=2.5; y = fun(x); printf("\nThe result is :\n"); printf("x=%-12.6f y=%-12.6f\n", x, y); } 51. 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。 例如:传给形参a的数据中,学号、姓名、和三门课的成绩依次是:10001、“ZhangSan” 95、80、88,修改后的数据应为:10002、“LiSi”、96、81、89。 #include #include struct student { long sno; char name[10]; float score[3]; }; /*******************************found******************************/ ___1___ fun(struct student a) struct student { int i; a.sno = 10002; /*******************************found******************************/ strcpy(__2__, "LiSi"); a.name /*******************************found******************************/ for (i=0; i<3; i++) __3__+= 1; a.score[i] return a; } main() { struct student s={10001,"ZhangSan", 95, 80, 88}, t; int i; printf("\n\nThe original data :\n"); printf("\nNo: %ld Name: %s\nScores: ",s.sno, s.name); for (i=0; i<3; i++) printf("%6.2f ", s.score[i]); printf("\n"); t = fun(s); printf("\nThe data after modified :\n"); printf("\nNo: %ld Name: %s\nScores: ",t.sno, t.name); for (i=0; i<3; i++) printf("%6.2f ", t.score[i]); printf("\n"); } 52. 给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M 。 #include #include #define N 5 #define M 8 void fun(char (*ss)[M]) { char *ps[N],*tp; int i,j,k; for(i=0; i void fun(char *s, int a, double f) { /*******************************found******************************/ __1__ fp; FILE* char ch; fp = fopen("file1.txt", "w"); fprintf(fp, "%s %d %f\n", s, a, f); fclose(fp); fp = fopen("file1.txt", "r"); printf("\nThe result :\n\n"); ch = fgetc(fp); /*******************************found******************************/ while (!feof(__2__)) fp /*******************************found******************************/ { putchar(__3__); ch = fgetc(fp); } ch putchar('\n'); fclose(fp); } main( ) { char a[10]="Hello!"; int b=12345; double c= 98.76; fun(a,b,c); } 54. 给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。 例如,形参s所指的字符串为:abs5def126jkm8,程序执行后的输出结果为:22。 #include #include #include int fun(char *s) { int sum=0; while(*s) /*******************************found******************************/ { if( isdigit(*s) ) sum+= *s- __1__ ; '0' /*******************************found******************************/ __2__; } s++ /*******************************found******************************/ return __3__ ; sum } main( ) { char s[81]; int n; printf("\nEnter a string:\n\n"); gets(s); n=fun(s); printf("\nThe result is: %d\n\n",n); } 55. 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。 #include #include #define N 5 #define M 10 /*******************************found******************************/ void fun(char (*ss) __1__, int k) [M] { int i=0 ; /*******************************found******************************/ while(i< __2__) { N /*******************************found******************************/ ss[i][k]=__3__; i++; } '\0' } main( ) { char x[N][M]={"Create","Modify","Sort","skip","Delete"}; int i; printf("\nThe original string\n\n"); for(i=0;i #define N 10 double fun(double x[],double *av) { int i,j; double d,s; s=0; for(i=0; i double fun(int n) { int i, k; double s, t; s=0; /*******************************found******************************/ k=__1__; 1 for(i=1; i<=n; i++) { /*******************************found******************************/ t=__2__; 2*i s=s+k*(2*i-1)*(2*i+1)/(t*t); /*******************************found******************************/ k=k*__3__; -1 } return s; } main( ) { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); } printf("\nThe result is: %f\n",fun(n)); } 58. 程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。 #include #include struct student { long sno; char name[10]; float score[3]; }; void fun(struct student a[], int n) { /*******************************found******************************/ __1__ t; struct student int i, j; /*******************************found******************************/ for (i=0; i<__2__; i++) n-1 for (j=i+1; j 0) a[i].name,a[j].name { t = a[i]; a[i] = a[j]; a[j] = t; } } main() { struct student s[4]={ {10001,"ZhangSan", 95, 80, 88},{10002,"LiSi", 85, 70, 78}, {10003,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87}}; int i, j; printf("\n\nThe original data :\n\n"); for (j=0; j<4; j++) { printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); } fun(s, 4); printf("\n\nThe data after sorting :\n\n"); for (j=0; j<4; j++) { printf("\nNo: %ld Name: %-8s Scores: ",s[j].sno, s[j].name); for (i=0; i<3; i++) printf("%6.2f ", s[j].score[i]); printf("\n"); } } 59. 给定程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。 例如,s所指字符串为:asd123fgh5﹟﹟43df, 处理后新字符串为:12543asdfgh﹟﹟df。 #include #include #include #include char *fun(char *s) { int i, j, k, n; char *p, *t; n=strlen(s)+1; t=(char*)malloc(n*sizeof(char)); p=(char*)malloc(n*sizeof(char)); j=0; k=0; for(i=0; i #include #define N 6 typedef struct node { int data; struct node *next; } NODE; void fun(NODE *h) { NODE *p, *q; int t; p = h; while (p) { /*******************************found******************************/ q = __1__ ; p->next /*******************************found******************************/ while (__2__) q!=NULL { if (p->data > q->data) { t = p->data; p->data = q->data; q->data = t; } q = q->next; } /*******************************found******************************/ p = __3__ ; p->next } } NODE *creatlist(int a[]) { NODE *h,*p,*q; int i; h=NULL; for(i=0; idata=a[i]; q->next = NULL; if (h == NULL) h = p = q; else { p->next = q; p = q; } } return h; } void outlist(NODE *h) { NODE *p; p=h; if (p==NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d", p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } main( ) { NODE *head; int a[N]= {0, 10, 4, 2, 8, 6 }; head=creatlist(a); printf("\nThe original list:\n"); outlist(head); fun(head); printf("\nThe list after inverting :\n"); outlist(head); } 61. 给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。当调用正确时,程序输出: x1=5.000000. x2=3.000000. x1*x1+x1*x2=40.000000 #include double f1(double x) { return x*x; } double f2(double x, double y) { return x*y; } /*******************************found******************************/ __1__ fun(int i, double x, double y) double { if (i==1) /*******************************found******************************/ return __2__(x); f1 else /*******************************found******************************/ return __3__(x, y); f2 } main( ) { double x1=5, x2=3, r; r = fun(1, x1, x2); r += fun(2, x1, x2); printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r); } 62. 给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。 #include #include #define N 6 typedef struct node { int data; struct node *next; } NODE; void fun(NODE *h) { NODE *p, *q; int t; /*******************************found******************************/ p = __1__ ; h while (p) /*******************************found******************************/ { q = __2__ ; p->next while (q) /*******************************found******************************/ { if (p->data __3__ q->data) > { t = p->data; p->data = q->data; q->data = t; } q = q->next; } p = p->next; } } NODE *creatlist(int a[]) { NODE *h,*p,*q; int i; 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; } } return h; } void outlist(NODE *h) { NODE *p; p = h->next; if (p==NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d", p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } main( ) { NODE *head; int a[N]= {0, 10, 4, 2, 8, 6 }; head=creatlist(a); printf("\nThe original list:\n"); outlist(head); fun(head); printf("\nThe list after sorting :\n"); outlist(head); } 63. 给定程序中,函数fun的功能是:找出100至x(x≤999)之间各位上的数字之和为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个。 #include fun(int x) { int n, s1, s2, s3, t; /*******************************found******************************/ n=__1__; 0 t=100; /*******************************found******************************/ while(t<=__2__) x { s1=t%10; s2=(t/10)%10; s3=t/100; if(s1+s2+s3==15) { printf("%d ",t); n++; } /*******************************found******************************/ __3__; } t++ return n; } main( ) { int x=-1; while(x>999||x<0) { printf("Please input(0 #include #define N 5 typedef struct node { int data; struct node *next; } NODE; /*******************************found******************************/ __1__ fun(NODE *h) NODE* { NODE *p, *q, *r; p = h; if (p == NULL) return NULL; q = p->next; p->next = NULL; /*******************************found******************************/ while (__2__) q!=NULL { r = q->next; q->next = p; p = q; /*******************************found******************************/ q = __3__ ; r } return p; } NODE *creatlist(int a[]) { NODE *h,*p,*q; int i; h=NULL; for(i=0; idata=a[i]; q->next = NULL; if (h == NULL) h = p = q; else { p->next = q; p = q; } } return h; } void outlist(NODE *h) { NODE *p; p=h; if (p==NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do { printf("->%d", p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } main( ) { NODE *head; int a[N]={2,4,6,8,10}; head=creatlist(a); printf("\nThe original list:\n"); outlist(head); head=fun(head); printf("\nThe list after inverting :\n"); outlist(head); } 65. 给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在_2_处使f指向函数f1,在_3_处使f指向函数f2。当调用正确时,程序输出: x1=5.000000. x2=3.000000. x1*x1+x1*x2=40.000000 #include double f1(double x) { return x*x; } double f2(double x, double y) { return x*y; } double fun(double a, double b) { /*******************************found******************************/ __1__ (*f)(); double double r1, r2; /*******************************found******************************/ f = __2__ ; /* point fountion f1 */ f1 r1 = f(a); /*******************************found******************************/ f = __3__ ; /* point fountion f2 */ f2 r2 = (*f)(a, b); return r1 + r2; } main( ) { double x1=5, x2=3, r; r = fun(x1, x2); printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n",x1, x2, r); } 66. 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生的数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的新据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。 #include #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename, long sno) { FILE *fp; STU n; int i; fp = fopen(filename,"rb+"); /*******************************found******************************/ while (!__1__) feof(fp) { fread(&n, sizeof(STU), 1, fp); /*******************************found******************************/ if (n.sno__2__) break; } ==sno if (!feof(fp)) { for (i=0; i<3; i++) n.score[i] += 3; /*******************************found******************************/ fseek(fp, -1L*__3__, SEEK_CUR); sizeof(STU) fwrite(&n, sizeof(STU), 1, fp); } fclose(fp); } main( ) { STU t[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]; int i,j; FILE *fp; fp = fopen("student.dat", "wb"); fwrite(t, sizeof(STU), N, fp); fclose(fp); printf("\nThe original data :\n"); fp = fopen("student.dat", "rb"); fread(ss, sizeof(STU), N, fp); fclose(fp); for (j=0; j #include struct student { long sno; char name[10]; float score[3]; }; void fun(struct student a) { struct student b; int i; /*******************************found******************************/ b = __1__; a b.sno = 10002; /*******************************found******************************/ strcpy(__2__, "LiSi"); b.name printf("\nThe data after modified :\n"); printf("\nNo: %ld Name: %s\nScores: ",b.sno, b.name); /*******************************found******************************/ for (i=0; i<3; i++) printf("%6.2f ", b.__3__); score[i] printf("\n"); } main( ) { struct student s={10001,"ZhangSan", 95, 80, 88}; int i; printf("\n\nThe original data :\n"); printf("\nNo: %ld Name: %s\nScores: ",s.sno, s.name); for (i=0; i<3; i++) printf("%6.2f ", s.score[i]); printf("\n"); fun(s); } 68. 给定程序中,函数fun的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。ss所指字符串组中共有N个字符串,且串长小于M。 #include #include #define N 5 #define M 10 int fun(char (*ss)[M], int k) { int i,j=0,len; /*******************************found******************************/ for(i=0; i< __1__ ; i++) N { len=strlen(ss[i]); /*******************************found******************************/ if(len<= __2__) k-1 /*******************************found******************************/ strcpy(ss[j++],__3__); ss[i] } return j; } main( ) { char x[N][M]={"Beijing","Shanghai","Tianjing","Nanjing","Wuhan"}; int i,f; printf("\nThe original string\n\n"); for(i=0;i int fun(char *s, char *t) { int n=0; while(*s) { if(*s < 97) { /*******************************found******************************/ *(t+n)= __1__ ; n++; } *s /*******************************found******************************/ __2__ ; s++ } *(t+n)=0; /*******************************found******************************/ return __3__ ; n } main( ) { char s[81],t[81]; int n; printf("\nEnter a string:\n"); gets(s); n=fun(s,t); printf("\nThere are %d letter which ASCII code is less than 97: %s\n",n,t); } 70. 给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶然的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。 例如,输入一个数:27638496,新的数:为739。 #include void fun(unsigned long *n) { unsigned long x=0, i; int t; i=1; while(*n) /*******************************found******************************/ { t=*n % __1__; 10 /*******************************found******************************/ if(t%2!= __2__) 0 { x=x+t*i; i=i*10; } *n =*n /10; } /*******************************found******************************/ *n=__3__; x } main( ) { unsigned long n=-1; while(n>99999999||n<0) { printf("Please input(0 #include #define N 80 void fun(char *s, int n, char *t) { int len,i,j=0; len=strlen(s); /*******************************found******************************/ if(n>=len) strcpy(__1__); t,s else { /*******************************found******************************/ for(i=len-n; i<=len-1; i++) t[j++]= __2__ ; s[i] /*******************************found******************************/ t[j]= __3__ ; ‘\0’ } } main( ) { char s[N],t[N]; int n; printf("Enter a string: ");gets(s); printf( "Enter n:"); scanf("%d",&n); fun(s,n,t); printf("The string t : "); puts(t); } 72. 给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。 例如,有下列矩阵: 若k为2,程序执行结果为 1 2 3 4 5 3 4 5 1 2 1 2 3 4 5 3 4 5 1 2 1 2 3 4 5 3 4 5 1 2 #include #define M 3 #define N 5 void fun(int (*a)[N],int k) { int i,j,p,temp; /*******************************found******************************/ for(p=1; p<= __1__; p++) k for(i=0; i #define N 3 #define M 4 /*******************************found******************************/ void fun(int (*a)[N], int __1__) k { int i,j,temp ; /*******************************found******************************/ for(i = 0 ; i < __2__ ; i++) N { temp=a[0][i] ; /*******************************found******************************/ a[0][i] = __3__ ; a[k][i] a[k][i] = temp ; } } main( ) { int x[M][N]={ {1,2,3},{4,5,6},{7,8,9},{10,11,12} },i,j; printf("The array before moving:\n\n"); for(i=0; i #include #define N 10 double fun(double *x) { int i, j; double s, av, y[N]; s=0; for(i=0; iav ){ /*******************************found******************************/ y[__2__]=x[i]; x[i]=-1;} j++ for(i=0; i #define N 10 double fun(double x[],double *y) { int i,j; double av; /*******************************found******************************/ av=__1__; 0 /*******************************found******************************/ for(i=0; iav) y[__3__]= x[i]; j++ y[j]=-1; return av; } main( ) { int i; double x[N],y[N]; for(i=0; i=0; i++) printf("%5.1f ",y[i]); printf("\n"); } 76. 给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。 例如,s所指字符串为:asd123fgh543df,处理后新字符串为:asdfghdf12543。 #include #include #include char *fun(char *s) { int i, j, k, n; char *p, *t; n=strlen(s)+1; 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'))) { /*******************************found******************************/ t[j]=__1__; j++;} s[i] else { p[k]=s[i]; k++; } } /*******************************found******************************/ for(i=0; i<__2__; i++) t[j+i]=p[i]; k /*******************************found******************************/ t[j+k]= __3__; ‘\0’ return t; } main( ) { char s[80]; printf("Please input: "); scanf("%s",s); printf("\nThe result is: %s\n",fun(s)); } 77. 给定程序中,函数fun的功能是:找出100~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的整数是:999。只有1个。 #include fun(int x) { int n, s1, s2, s3, t; n=0; t=100; /*******************************found******************************/ while(t<=__1__) 999 /*******************************found******************************/ { s1=t%10; s2=(__2__)%10; s3=t/100; t/10 /*******************************found******************************/ if(s1+s2+s3==__3__) x { printf("%d ",t); n++; } t++; } return n; } main( ) { int x=-1; while(x<0) { printf("Please input(x>0): "); scanf("%d",&x); } printf("\nThe result is: %d\n",fun(x)); } 78. 给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将其显示在屏幕上。 #include #include void fun(char *s, int a, double f) { /*******************************found******************************/ __1__ fp; FILE* char str[100], str1[100], str2[100]; int a1; double f1; fp = fopen("file1.txt", "w"); fprintf(fp, "%s %d %f\n", s, a, f); /*******************************found******************************/ __2__ ; floes(fp) fp = fopen("file1.txt", "r"); /*******************************found******************************/ fscanf(__3__,"%s%s%s", str, str1, str2); fp fclose(fp); a1 = atoi(str1); f1 = atof(str2); printf("\nThe result :\n\n%s %d %f\n", str, a1, f1); } main( ) { char a[10]="Hello!"; int b=12345; double c= 98.76; fun(a,b,c); } 79. 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。 #include #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename, STU n) { FILE *fp; /*******************************found******************************/ fp = fopen(__1__, "rb+"); filename /*******************************found******************************/ fseek(fp, -1L*sizeof(STU), __2__); SEEK_END /*******************************found******************************/ fwrite(__3__, sizeof(STU), 1, fp); &n fclose(fp); } main() { STU t[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}}; STU n={10006,"ZhaoSi", 55, 70, 68}, ss[N]; int i,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); fclose(fp); printf("\nThe original data :\n\n"); for (j=0; j double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /*******************************found******************************/ x=__1__/4; 3.0 /*******************************found******************************/ while(x __2__ e) > { s=s+k*x; k=k* (-1); t=2*i; /*******************************found******************************/ x=__3__*(2*i+1)/(t*t); (2*i-1) i++; } return s; } main( ) { double e=1e-6; printf("\nThe result is: %f\n",fun(e)); } 81. 给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回-1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。 #include #include #define N 5 #define M 8 int fun(char (*ss)[M],char *t) { int i; /*******************************found******************************/ for(i=0; i< __1__ ; i++) N /*******************************found******************************/ if(strcmp(ss[i],t)==0 ) return __2__ ; i return -1; } main( ) { char ch[N][M]={"if","while","switch","int","for"},t[M]; int n,i; printf("\nThe original string\n\n"); for(i=0;i #include struct student { long sno; char name[10]; float score[3]; }; void fun( struct student *b) { int i; /*******************************found******************************/ b__1__ = 10004; ->sno /*******************************found******************************/ strcpy(b__2__, "LiJie"); ->name } main( ) { struct student t={10002,"ZhangQi", 93, 85, 87}; int i; printf("\n\nThe original data :\n"); printf("\nNo: %ld Name: %s\nScores: ",t.sno, t.name); for (i=0; i<3; i++) printf("%6.2f ", t.score[i]); printf("\n"); /*******************************found******************************/ fun(__3__); &t printf("\nThe data after modified :\n"); printf("\nNo: %ld Name: %s\nScores: ",t.sno, t.name); for (i=0; i<3; i++) printf("%6.2f ", t.score[i]); printf("\n"); } 83. 给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1;不是,函数返回值为0。“幻方”的判定条件是;矩阵每行、每列、主对角线及反对角线上元素之和都相等。 例如,以下3×3的矩阵就是一个“幻方”: 4 9 2 3 5 7 8 1 6 #include #define N 3 int fun(int (*a)[N]) { int i,j,m1,m2,row,colum; m1=m2=0; for(i=0; i #include struct student { long sno; char name[10]; float score[3]; }; /*******************************found******************************/ __1__ fun(struct student *a) struct student* { int i; a->sno = 10002; strcpy(a->name, "LiSi"); /*******************************found******************************/ for (i=0; i<3; i++) __2__ += 1; a->score[i] /*******************************found******************************/ return __3__ ; 1 } main( ) { struct student s={10001,"ZhangSan", 95, 80, 88}, *t; int i; printf("\n\nThe original data :\n"); printf("\nNo: %ld Name: %s\nScores: ",s.sno, s.name); for (i=0; i<3; i++) printf("%6.2f ", s.score[i]); printf("\n"); t = fun(&s); printf("\nThe data after modified :\n"); printf("\nNo: %ld Name: %s\nScores: ",t->sno, t->name); for (i=0; i<3; i++) printf("%6.2f ", t->score[i]); printf("\n"); } 85. 给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。 S=+++…+ 例如,当形参n的值为10时,函数返回:9.612558。 #include double fun(int n) { int i; double s, t; /*******************************found******************************/ s=__1__; 0 /*******************************found******************************/ for(i=1; i<=__2__; i++) n { t=2.0*i; /*******************************found******************************/ s=s+(2.0*i-1)*(2.0*i+1)/__3__; (t*t) } return s; } main( ) { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); } printf("\nThe result is: %f\n",fun(n)); } 86. 给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。 例如,形参s所指的字符串为:This is a C language program ,函数的返回值为6。 #include int fun(char *s) { int n=0, flag=0; while(*s!='\0') { if(*s!=' ' && flag==0) { /*******************************found******************************/ __1__ ; flag=1;} n++ /*******************************found******************************/ if (*s==' ') flag= __2__ ; 0 /*******************************found******************************/ __3__ ; s++ } return n; } main( ) { char str[81]; int n; printf("\nEnter a line text:\n"); gets(str); n=fun(str); printf("\nThere are %d words in this text.\n\n",n); } 87. 程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。 #include #define N 5 typedef struct student { long sno; char name[10]; float score[3]; } STU; void fun(char *filename) { FILE *fp; int i, j; STU s[N], t; /*******************************found******************************/ 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"); /*******************************found******************************/ __3__(s, sizeof(STU), N, fp); fwrite fclose(fp); } main( ) { STU t[N]={ {10005,"ZhangSan", 95, 80, 88}, {10003,"LiSi", 85, 70, 78}, {10002,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87}, {10001,"MaChao", 91, 92, 77}}, ss[N]; int i,j; FILE *fp; fp = fopen("student.dat", "wb"); fwrite(t, sizeof(STU), 5, fp); fclose(fp); printf("\n\nThe original data :\n\n"); for (j=0; j #include #define N 5 #define M 15 void fun(char (*ss)[M], char *substr) { int i,find=0; /*******************************found******************************/ for(i=0; i< __1__ ; i++) N /*******************************found******************************/ if( strstr(ss[i], __2__) != NULL ) substr { find=1; puts(ss[i]); printf("\n"); } /*******************************found******************************/ if (find==__3__) printf("\nDon't found!\n") 0 } main( ) { char x[N][M]={"BASIC","C langwage","Java","QBASIC","Access"},str[M]; int i; printf("\nThe original string\n\n"); for(i=0;i unsigned long fun(unsigned long n) { unsigned long x=0, s, i; int t; s=n; /*******************************found******************************/ i=__1__; 1 /*******************************found******************************/ while(__2__) s!=0 { t=s%10; if(t%2==0) { /*******************************found******************************/ x=x+t*i; i=__3__; i*10 } s=s/10; } return x; } main( ) { unsigned long n=-1; while(n>99999999||n<0) { printf("Please input(0 #include #define N 5 typedef struct node { int data; struct node *next; } NODE; void fun(NODE *h) { NODE *p, *q, *r; /*******************************found******************************/ p = __1__; h->next /*******************************found******************************/ if (__2__) return; p->next==NULL q = p->next; p->next = NULL; while (q) { r = q->next; q->next = p; /*******************************found******************************/ p = q; q = __3__; r } h->next = p; } NODE *creatlist(int a[]) { NODE *h,*p,*q; int i; 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; } } return h; } void outlist(NODE *h) { NODE *p; p = h->next; if (p==NULL) printf("The list is NULL!\n"); else { printf("\nHead "); do{ printf("->%d", p->data); p=p->next; } while(p!=NULL); printf("->End\n"); } } main( ) { NODE *head; int a[N]={2,4,6,8,10}; head=creatlist(a); printf("\nThe original list:\n"); outlist(head); fun(head); printf("\nThe list after inverting :\n"); outlist(head); } 91. 给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。 例如,有10个正数:46 30 32 40 6 17 45 15 48 26,平均值为:30.500000 移动后的输出为:30 6 17 15 26 46 32 40 45 48 #include #include #define N 10 double fun(double *x) { int i, j; double av, y[N]; av=0; /*******************************found******************************/ for(i=0; i #include #include int fun(char *s) { char *lp,*rp; /*******************************found******************************/ lp= __1__ ; s rp=s+strlen(s)-1; while((toupper(*lp)==toupper(*rp)) && (lp #define M 3 #define N 4 void fun(int (*a)[N]) { int i=0,j,find=0,rmax,c,k; while( (i #include #include void fun(char *s) { int k[26]={0},n,i,max=0; char ch; while(*s) { if( isalpha(*s) ) /*******************************found******************************/ { ch=tolower(__1__); *s n=ch-'a'; /*******************************found******************************/ k[n]+= __2__ ; } 1 s++; /*******************************found******************************/ if(max double fun(double e) { int i; double s, x; /*******************************found******************************/ s=0; i=__1__; 0 x=1.0; while(x>e){ /*******************************found******************************/ __2__; i++ /*******************************found******************************/ x=(2*i-1)*(2*i+1)/((__3__)*(2*i)); 2.0*i s=s+x; } return s; } main( ) { double e=1e-6; printf("\nThe result is: %f\n",fun(e)); } 96.给定程序中,函数fun的功能是建立一个N×N 的矩阵。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,…依次类推。例如,若N=5,生成的矩阵为: 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1 #include #define N 7 /*******************************found******************************/ void fun(int (*a) __1__) [N] { int i,j,k,m; if(N%2==0) m=N/2 ; else m=N/2+1; for(i=0; i #define N 4 void fun(int (*a)[N], int *b) { int i,j; for(i=0; i } } main( ) { int x[N][N]={ {12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3} },y[N],i,j; printf("\nThe matrix :\n"); for(i=0;i #define N 20 void fun( int *a) { int i, x, n=0; x=rand()%20; /*******************************found******************************/ while (n<__1__) N { for(i=0; i unsigned long fun(unsigned long n) { unsigned long x=0; int t; while(n) { t=n%10; /*******************************found******************************/ if(t%2==__1__) 0 /*******************************found******************************/ x=__2__+t; x*10 /*******************************found******************************/ n=__3__; n/10 } return x; } main( ) { unsigned long n=-1; while(n>99999999||n<0) { printf("Please input(0 #include #include /*******************************found******************************/ char __1__ fun(char tt[]) * { int i; for(i=0;tt[i];i++) { /*******************************found******************************/ if((tt[i]>='A')&&(tt[i]<= __ 2__ )) ‘Z’ tt[i]+=32; } return(tt); } main() { char tt[81]; printf("\nPlease enter a string: "); gets(tt); /*******************************found******************************/ printf("\nThe result string is: \n%s",fun(__ 3__ )); tt } 改 错 题 1、给定程序中fun函数的功能是:根据整型形参m的值,计算如下公式的值: 例如,若m中的值为5,则应输出0.536389。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! #include double fun ( int m ) { double y = 1.0 ; int i ; /**************found**************/ for(i = 2 ; i < m ; i++) 改为:for(i = 2 ; i <= m ; i++) /**************found**************/ y -= 1 /(i * i) ; 改为:y -= 1.0 /(i * i) ; return( y ) ; } main( ) { int n = 5 ; printf( "\nThe result is %lf\n", fun ( n ) ) ; } 2、给定程序中fun函数的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。 例如,当s所指字符串为“ABCD”时,则t所指字符串的内容应为“ABCDDCBA” #include #include /************found************/ void fun (char s, char t) 改为:void fun (char * s, char * t) { int i, d; d = strlen(s); for (i = 0; i #include #define N 80 void fun(char *s, char t[]) { int i, j=0; for(i=0; i double fun ( int n ) { double result = 1.0 ; /************found************/ if n = = 0 改为:if (n == 0) return 1.0 ; while( n >1 && n < 170 ) /************found************/ result *= n-- 改为:result *= n--; return result ; } main ( ) { int n ; printf("Input N:") ; scanf("%d", &n) ; printf("\n\n%d! =%lf\n\n", n, fun(n)) ; } 5、给定程序中fun函数的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。 #include int fun() { int a[3][3],sum; int i,j; /*********found**********/ ______; 改为:sum=0 for (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\n",sum); } main() { fun(); } 6、给定程序中fun函数的功能是:求,(此处aa…aa表示n个a,a和n的值在1至9之间)。例如,a=3,n=6,则以上表达式为: s=333333-33333-3333-333-33-3,其值是:296298。a和n是fun函数的形参。 #include long fun (int a, int n) { int j ; /**************found**************/ long s = 0, t = 1 ; 改为:long s = 0, t = 0 ; /**************found**************/ for ( j = 0 ; j <=n ; j++) 改为:for ( j = 0 ; j long fun ( int k) { /************found************/ if k > 0 改为:if(k > 0) return (k*fun(k-1)); /************found************/ else if ( k=0 ) 改为:else if ( k==0 ) return 1L; } main() { int k = 10 ; printf("%d!=%ld\n", 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。 #include int fun(float x[], int n) { /************found************/ int j, c=0, float xa=0.0; 改为:int j, c=0; float xa=0.0; for (j=0; j xa) 改为:if (x[j] >= xa) c++; return c; } main ( ) { float x[100] = { 193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763 }; printf("%d\n", fun (x, 8)); } 9、给定程序中fun函数的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。例如:若输入“Ab,cD”,则输出“AB,CD” #include #include char* fun( char tt[] ) { int i; for( i = 0; tt[i]; i++ ) /**********found***********/ if(( 'a' <= tt[i] )||( tt[i] <= 'z' ) ) 改为:if((tt[i] >= 'a')&&( tt[i] <= 'z' ) ) /**********found***********/ tt[i] += 32; 改为:tt[i] - = 32; return( tt ); } main( ) { char tt[81]; printf( "\nPlease enter a string: " ); gets( tt ); printf( "\nThe result string is:\n%s", fun( tt ) ); } 10、给定程序中fun函数的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数这前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGH。 #include /**********found**********/ fun( char *p ) 改为:void fun( char *p ) { char max,*q; int i=0; max=p[i]; while( p[i]!=0 ) { if( maxp ) 改为:while(q>p ) { *q=*(q-1); q--; } p[0]=max; } main() { char str[80]; printf("Enter a string: "); gets(str); printf("\nThe original string: "); puts(str); fun(str); printf("\nThe string after moving: "); puts(str); printf("\n\n"); } 11、给定程序MODI1.CJ是建立一个带头结点的单向链表,并用随机函数为各结点赋值。给定程序中fun函数的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。 #include #include typedef struct aa { int data; struct aa *next; }NODE; int fun(NODE *h) { int sum = 0 ; NODE *p; /***********found**********/ p=h; 改为:p=h->next; /***********found**********/ while(p->next) 改为:while(p) { if(p->data%2==0) sum +=p->data; /***********found**********/ p=h->next; 改为:p=p->next; } return sum; } NODE *creatlink(int n) { NODE *h, *p, *s, *q; int i, x; h=p=(NODE *)malloc(sizeof(NODE)); for(i=1; 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; return h; } outlink(NODE *h, FILE *pf) { NODE *p; p = h->next; fprintf(pf ,"\n\nTHE LIST :\n\n HEAD " ); while(p) { fprintf(pf ,"->%d ",p->data ); p=p->next; } fprintf (pf,"\n"); } outresult(int s, FILE *pf) { fprintf(pf,"\nThe sum of even numbers : %d\n",s);} main( ) { NODE *head; int even; head=creatlink(12); head->data=9000; outlink(head , stdout); even=fun(head); printf("\nThe result :\n"); outresult(even, stdout); } 12、给定程序中fun函数的功能是:求三个数的最小公倍数。例如,给主函数中的变量x1,x2,x3分别输入15 11 2,则输出结果应当是:330。 #include /************found************/ fun(int x, y, z ) 改为:fun(int x, int y, int z ) { int j,t ,n ,m; /************found************/ j = 1 ; 改为:j = x; 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; } /************found************/ return i; 改为:return j; } main( ) { int x1,x2,x3,j ; printf("Input x1 x2 x3: "); scanf("%d%d%d",&x1,&x2,&x3); printf("x1=%d, x2=%d, x3=%d \n",x1,x2,x3); j=fun(x1,x2,x3); printf("The minimal common multiple is : %d\n",j); } 13、给定程序中fun函数的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。例如:当s听字符串为“ABCDE”时,则t中的字符串应为“ABCDEEDCBA”。 #include #include void fun (char *s, char *t) { int i, sl; sl = strlen(s); /************found************/ for( i=0; i<=s1; i ++) 改为:for( i=0; i< sl; i ++) t[i] = s[i]; for (i=0; i void fun( char *s ) { int i,j; for(i=j=0; s[i]!='\0'; i++) if(s[i]!='c') /************found************/ s[j]=s[i]; 改为:s[j++]=s[i]; /************found************/ s[i]='\0'; 改为:s[j]='\0'; } main() { char s[80]; printf("Enter a string: "); gets(s); printf("The original string: "); puts(s); fun(s); printf("The string after deleted : "); puts(s);printf("\n\n"); } 15、给定程序中fun函数的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。 #include /************found************/ fun( int *b ) 改为:int fun( int *b ) { int k,a1,a2,i=0; /************found************/ for(k=10; k<=55; k++) { 改为:for(k=10; k<55; k++) { /************found************/ a2=k/1O; 改为:a2=k/10; a1=k-a2*10; if((k%3==0 && a2==5)||(k%3==0 && a1==5)) { b[i]=k; i++; } } /************found************/ return k; 改为:return i; } main( ) { int a[100],k,m; m=fun( a ); printf("The result is :\n"); for(k=0; k #include /************found************/ void fun( int k ) 改为:float fun( int k ) { int n; float s, 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************/ return s 改为:return s; } main ( ) { printf("%f\n", fun (10)); } 17、给定程序中fun函数的功能是:将十进制正整数m转换成k(2<=k<=9)进制数,并按高位到低位顺序输出。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 #include #include /**********found**********/ fun( int m, int k ) 改为:void fun( int m, int k ) { int aa[20], i; for( i = 0; m; i++ ) { /**********found**********/ aa[i] = m/k; 改为:aa[i] = m% k; m /= k; } for( ; i; i-- ) /**********found**********/ printf( "%d", aa[ i ] ); 改为:printf( "%d", aa[ i-1] ); } main( ) { int b, n; printf( "\nPlease enter a number and a base:\n" ); scanf( "%d %d", &n, &b ); fun( n, b ); printf("\n"); } 18、给定程序中fun函数的功能是:根据整型形参n,计算如下公式的值。 例如:若n=10,则应输出0.617977. #include /************found************/ int fun ( int n ) 改为:float fun ( int n ) { float A=1; int i; /************found************/ for (i=2; i #define M 5 /************found************/ int fun(int n, int xx[][]) 改为:int fun(int n, int xx[M][M]) { int i, j, sum=0; printf( "\nThe %d x %d matrix:\n", M, M ); for( i = 0; i < M; i++ ) { for( j = 0; j < M; j++ ) /************found************/ printf( "%f ", xx[i][j] ); 改为:printf( "%4d ", xx[i][j] ); printf("\n"); } for( i = 0 ; i < n ; i++ ) sum += xx[i][i]+xx[i][ n-i-1 ]; return( sum ); } main( ) { int aa[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 ( "\nThe sum of all elements on 2 diagnals is %d.",fun( M, aa )); } 20、给定程序中fun函数的功能是:求出s所指字符串中最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中从此地址开始的字符串;若未打到,则函数值为NULL。 例如:当字符串中的内容为:“abcdabfabcdx”,t中的内容为“ab”时,输出结果为:abcdx。当字符串中的内容为:“abcdabfabcdx”,t中的内容为“abd”时,则程序输出未打到住处:not be found! #include #include char * fun (char *s, char *t ) { char *p , *r, *a; /************found************/ a = Null; 改为:a = NULL; while ( *s ) { p = s; r = t; while ( *r ) /************found************/ if ( r == p ) 改为:if ( r* ==* p ) { r++; p++; } else break; if ( *r == '\0' ) a = s; s++; } return a ; } main() { char s[100], t[100], *p; printf("\nPlease enter string S :"); scanf("%s", s ); printf("\nPlease enter substring t :"); scanf("%s", t ); p = fun( s, t ); if ( p ) printf("\nThe result is : %s\n", p); else printf("\nNot found !\n" ); } 21、给定程序中fun函数的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数,并把该整数中各位上最大的数字值作为函数值返回。例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。 #include int fun(unsigned n, int *zero) { int count=0,max=0,t; do { t=n%10; /**************found**************/ if(t=0) 改为:if(t==0) count++; if(max long fun(int x, int y, long *p ) { int i; long t=1; /**************found**************/ for(i=1; i #define M 4 /**************found**************/ void fun(int a) 改为:void fun(int a[M]) { int i,j,k,m; printf("Enter 4 number : "); for(i=0; i0;i--) { k=a[M-1]; for(j=M-1;j>0;j--) /**************found**************/ aa[j]=a[j-1]; 改为:a[j]=a[j-1]; a[0]=k; for(m=0; m double fun ( int x[]) { /************found************/ int sum = 0.0; 改为:double sum = 0.0; int c=0, i=0; while (x[i] != 0) { if (x[i] > 0) { sum += x[i]; c++; } i++; } /************found************/ sum \= c; 改为:sum /= c; return sum; } main( ) { int x[1000]; int i=0; printf( "\nPlease enter some data (end with 0): " ); do { scanf("%d", &x[i]); } while (x[i++] != 0); printf("%f\n", fun ( x )); } 25、给定程序中fun函数的功能是:根据整形形参m,计算如下公式的值: 例如,若m中的值为5,则应输出1.463611。 #include double fun ( int m ) { double y = 1.0 ; int i; /**************found**************/ for(i = 2 ; i < m ; i++) 改为:for(i = 2 ; i <= m ; i++) /**************found**************/ y += 1 / (i * i) ; 改为:y += 1.0 / (i * i) ; return( y ) ; } main( ) { int n = 5 ; printf( "\nThe result is %lf\n", fun ( n ) ) ; } 26、给定程序中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。例如,若输入“I am a student to take the examination.”,则应输出“I aM A studenT tO takE thE examinatioN.”。 #include #include void fun( char *p ) { int k = 0; for( ; *p; p++ ) if( k ) { /**********found***********/ if( p == ' ' ) 改为:if(* p == ' ' ) { k = 0; /**********found***********/ * (p-1) = toupper( *( p - 1 ) ) 改为:* (p-1) = toupper( *( p - 1 ) ); } } else k = 1; } main( ) { char chrstr[64]; int d ; printf( "\nPlease enter an English sentence within 63 letters: "); gets(chrstr); d=strlen(chrstr) ; chrstr[d] = ' ' ; chrstr[d+1] = 0 ; printf("\n\nBefore changing:\n %s", chrstr); fun(chrstr); printf("\nAfter changing:\n %s", chrstr); } 27、给定程序中fun函数的功能是:将n个无序整数从小到大排序。 #include #include fun ( int n, int *a ) { int i, j, p, t; for ( j = 0; ja[i] ) /************found************/ t=i; 改为:p=i; if ( p!=j ) { t = a[j]; a[j] = a[p]; a[p] = t; } } } putarr( int n, int *z ) { int i; for ( i = 1; i <= n; i++, z++ ) { printf( "%4d", *z ); if ( !( i%10 ) ) printf( "\n" ); } printf("\n"); } main( ) { int aa[20]={9,3,0,4,1,2,5,6,8,10,7}, n=11; printf( "\n\nBefore sorting %d numbers:\n", n ); putarr( n, aa ); fun( n, aa ); printf( "\nAfter sorting %d numbers:\n", n ); putarr( n, aa ); } 28、给定程序中fun函数的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。 #include #include void fun (char *s) { /**********found***********/ while(*s!='@') 改为:while(*s!='\0') { if(*s>='A' & *s<='Z' || *s>='a' && *s<='z') { if(*s=='Z') *s='A'; else if(*s=='z') *s='a'; else *s += 1; } /**********found***********/ (*s)++; 改为:s++; } } main( ) { char s[80]; printf("\n Enter a string with length < 80. :\n\n "); gets(s); printf("\n The string : \n\n "); puts(s); fun ( s ); printf ("\n\n The Cords :\n\n "); puts(s); } 29、给定程序中fun函数的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。(注意:字符串的长度最长允许为79)。 #include #include /**********found***********/ void fun ( char s[], int n ) 改为:void fun ( char *s, int n ) { char a[80] , *p; int i; /**********found***********/ s=p; 改为:p=s; for(i=0; i /**********found**********/ void fun ( int a, b ) 改为:void fun ( int * a, int * b ) { int t; /**********found**********/ t = b; b = a ; a = t; 改为:t = *b; *b = *a ; *a = t; } main ( ) { int a, b; printf ( "Enter a , b : "); scanf ( "%d%d", &a, &b ); fun ( &a , &b ) ; printf (" a = %d b = %d\n ", a, b ); } 31、给定程序中fun函数的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为“abcdefg”,b所指字符串中的内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1efg”;而当a所指字符串中的内容为“1234”,b所指字符串中的内容为时“abcdefg”,c所指数组中的内容应该为“1g2f3e4dcba”。 #include #include void fun( char *a, char *b, char *c ) { int i , j; char ch; i = 0; j = strlen(b)-1; /************found************/ while ( i > j ) 改为:while ( i < j ) { 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 = ‘\0' } main( ) { char s1[100],s2[100],t[200]; printf("\nEnter s1 string : ");scanf("%s",s1); printf("\nEnter s2 string : ");scanf("%s",s2); fun( s1, s2, t ); printf("\nThe result is : %s\n", t ); } 32、给定程序中fun函数的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如:若输入edcba,则应输出abcde。 #include void fun( char t[] ) { char c; int i, j; /**********found***********/ for( i = strlen( t ); i; i-- ) 改为:for( i = strlen( t ); i>0; i-- ) for( j = 0; j < i; j++ ) /**********found***********/ if( t[j] < t[ j + 1 ] ) 改为:if( t[j] > t[ j + 1 ] ) { c = t[j]; t[j] = t[ j + 1 ]; t[j + 1 ] = c; } } main( ) { char s[81]; printf( "\nPlease enter a character string: " ); gets( s ); printf( "\n\nBefore sorting:\n \"%s\"", s ); fun( s ); printf( "\nAfter sorting decendingly:\n \"%s\"", s ); } 33、给定程序中fun函数的功能是:将一个八进制数字字符组成的字符串转换为其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。例如,若输入77777,则输出将是32767。 #include int fun( char *p ) { int n; /**********found**********/ n= *P-'o'; 改为:n= *p-'0'; p++; while( *p!=0 ) { /**********found**********/ n=n*7+*P-'o'; 改为:n=n*8+*p-'0'; p++; } return n; } main() { char s[6]; int i; int n; printf("Enter a string (Ocatal digits): "); gets(s); if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); } for(i=0; s[i]; i++) if(s[i]<'0'||s[i]>'7') { printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); } printf("The original string: "); puts(s); n=fun(s); printf("\n%s is convered to integer number: %d\n\n",s,n); } 34、给定程序中fun函数的功能是:求出以下分数序列的前n项之和。 和的值通过函数值返回main函数。 #include /**************found**************/ fun (int n ) 改为:double fun (int n ) { int a = 2, b = 1, c, k ; double s=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( ) { int n = 5 ; printf( "\nThe value of function is: %lf\n", fun ( n ) ) ; } 35、给定程序中fun函数的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。例如,当s所指字符串中的内容为“abcdabfab”,t所指字符串的内容为“ab”,则函数返回整数3. #include #include int fun (char *s, char *t) { int n; char *p , *r; n = 0; while ( *s ) { p = s; r = t; while ( *r ) /************found************/ if ( r == p ) { 改为:if ( *r == *p ) { /************found************/ r++; p++ 改为:r++; p++; } else break; /************found************/ if ( r == '\0' ) 改为:if ( *r == '\0' ) n++; s++; } return n; } main() { char s[100], t[100]; int m; printf("\nPlease enter string S:"); scanf("%s", s); printf("\nPlease enter substring t:"); scanf("%s", t); m = fun( s, t); printf("\nThe result is: m = %d\n", m); } 36、给定程序中fun函数的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连接到t所指串的后面。例如,当s所指的字符串为“ABCDE”时,则t所指的字符串应为“EDCBAABCDE” #include #include void fun (char *s, char *t) { /************found************/ int i; 改为:int i, s1; sl = strlen(s); for (i=0; i void fun(char *s) { int i,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]= ‘\0’; } main( ) { char item[80]; printf("\nEnter a string : ");gets(item); printf("\n\nThe string is : \"%s\"\n",item); fun(item); printf("\n\nThe string of changing is : \"%s\"\n",item ); } 38、给定程序中fun函数的功能是:统计字符串中各元音字母(即A,E,I,O,U)的个数。注意,字母不分大小写。例如输入:THIs is a boot,则输出应该是:1、0、2、2、0。 #include /**********found**********/ fun ( char *s, int num[5] ) 改为:void fun(char *s, int num[5] ) { int k, i=5; for ( k = 0; k= 0) num[i]++; } } main( ) { char s1[81]; int num1[5], i; printf( "\nPlease enter a string: " ); gets( s1 ); fun ( s1, num1 ); for ( i=0; i < 5; i++ ) printf ("%d ",num1[i]); printf ("\n"); } 39、给定程序中fun函数的功能是:计算正整数num的各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。 #include long fun (long num) { /************found************/ long k; 改为:long k=1; do { k*=num%10 ; /************found************/ num\=10 ; 改为:num/=10 ; } while(num) ; return (k) ; } main( ) { long n ; printf("\Please enter a number:") ; scanf("%ld",&n) ; printf("\n%ld\n",fun(n)) ; } 40、假定整数数列中的数不重复,并存放在数组中。给定程序中fun函数的功能是:删除数列中值为x的元素。n中存放的是数列中元素的个数。 #include #define N 20 fun(int *a,int n,int x) { int p=0,i; a[n]=x; while( x!=a[p] ) p=p+1; /**********found**********/ if(P==n) return -1; 改为:if(p==n) return -1; else { for(i=p;i double fun( double q ) { int n; double s,t; n = 2; s = 2.0; while (s<=q) { t=s; /************found************/ s=s+(n+1)/n; 改为:s=s+(double)(n+1)/n; n++; } printf("n=%d\n",n); /************found************/ return s; 改为:return t; } main ( ) { printf("%f\n", fun(50)); } 42、给定程序中fun函数的功能是:根据输入的三个边长(整型值),判断能束构成三角形,构成的是等边三解形还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。 #include #include /**************found**************/ void fun(int a,int b,int c) 改为:int fun(int a,int b,int c) { if(a+b>c && b+c>a && a+c>b) { if(a==b && b==c) /**************found**************/ return 1; 改为:return 3; else if(a==b||b==c||a==c) return 2; /**************found**************/ else retrun 1 改为:else return 1; } else return 0; } main() { int a,b,c,shape; printf("\nInput a,b,c: "); scanf("%d%d%d",&a,&b,&c); printf("\na=%d, b=%d, c=%d\n",a,b,c); shape =fun(a,b,c); printf("\n\nThe shape : %d\n",shape); } 43、给定程序中fun函数的功能是:计算n的5次方的值(规定n的值大于2小于8),通过形参指针传回主函数,并计算该值的个位、十位、百位上数字之和作为函数值返回。例如,7的5次方是16807,其低3位数的和值是15。 #include #include int fun( int n ,int *value ) { int d,s,i; /**************found**************/ d=0; s=0; 改为:d=1; s=0; for(i=1; i<=5; i++) d=d*n; *value=d; for(i=1; i<=3; i++) { s=s+d%10; /**************found**************/ s=s\10; 改为:d=d/10; } return s; } main( ) { int n, sum, v; do { printf("\nEnter n( 2=8); sum=fun( n,&v ); printf("\n\nThe result:\n value=%d sum=%d\n\n",v,sum); } 44、给定程序中fun函数的功能是:判断一个整数是否是素数,若是返回1,否则返回0。在main( )函数中,若fun返回1输出YES,若返回0则输出NO!。 #include int fun ( int m ) { int k = 2; while ( k <= m && (m%k)) /************found************/ k++ 改为:k++; /************found************/ if (m = k ) 改为:if (m == k ) return 1; else return 0; } main( ) { int n; printf( "\nPlease enter n: " ); scanf( "%d", &n ); if ( fun ( n ) ) printf( "YES\n" ); else printf( "NO!\n" ); } 45、给定程序中fun函数的功能是:判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。 #include #include /**********found**********/ void fun(char str, char ch ) 改为:void fun(char * str, char ch ) { while ( *str && *str != ch ) str++; /**********found**********/ if ( *str == ch ) 改为:if ( *str == ‘\0’ ) { str [ 0 ] = ch; /**********found**********/ str[1] = '0'; 改为:str[1] = '\0'; } } main( ) { char s[81], c ; printf( "\nPlease enter a string:\n" ); gets ( s ); printf ("\n Please enter the character to search : " ); c = getchar(); fun(s, c) ; printf( "\nThe result is %s\n", s); } 46、给定程序中fun函数的功能是:按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并针这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,s所指数组在14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 #include #define SIZE 20 fun(double *s, double *w) { int k,i; double sum; for(k=2,i=0;i /************found************/ fun ( n ) 改为:int fun ( int n ) { int c; /************found************/ if(n=1) 改为:if(n==1) c = 10 ; else c= fun(n-1)+2; return(c); } main( ) { int n; printf("Enter n : "); scanf("%d",&n); printf("The result : %d\n\n", fun(n)); } 48、给定程序中fun函数的功能是:用二分法求方程的一个根,并要求绝对误差不超过0.001。例如,若给m输入-100,给n输入90,则函数求得一个根值为2.000。 #include #include double funx(double x) { return(2*x*x*x-4*x*x+3*x-6); } double fun( double m, double n) { /************found************/ int r; 改为:double r; r=(m+n)/2; /************found************/ while(fabs(n-m)<0.001) 改为:while(fabs(n-m)>0.001) { if(funx(r)*funx(n)<0) m=r; else n=r; r=(m+n)/2; } return r; } main( ) { double m,n, root; printf("Enter m n : \n"); scanf("%lf%lf",&m,&n); root=fun( m,n ); printf("root = %6.3f\n",root); } 49、给定程序中fun函数的功能:用选择法对数组中的n个元素按从小到大的顺序进行排序。 #include #define N 20 void fun(int a[], int n) { int i, j, t, p; for (j = 0 ;j < n-1 ;j++) { /************found************/ p = j 改为:p = j; for (i = j;i < n; i++) if(a[i] < a[p]) /************found************/ p = j; 改为:p = i; t = a[p] ; a[p] = a[j] ; a[j] = t; } } main( ) { int a[N]={9,6,8,3,-1},i, m = 5; printf("排序前的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); fun(a,m); printf("排序后的数据:") ; for(i = 0;i < m;i++) printf("%d ",a[i]); printf("\n"); } 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************/ #define FU(m,n) (m/n) 改为:#define FU(m,n) (m)/(n) float fun(float a,float b,float c) { float value; value=FU(a+b,a-b)+FU(c+b,c-b); /************found************/ Return(Value); 改为:return(value); } main( ) { float x,y,z,sum; printf("Input x y z: "); scanf("%f%f%f",&x,&y,&z); printf("x=%f,y=%f,z=%f\n",x,y,z); if (x==y||y==z){printf("Data error!\n");exit(0);} sum=fun(x,y,z); printf("The result is : %5.2f\n",sum); } 51、给定程序中fun函数的功能是:根据形参m的值,计算如下公式的值: 例如,若输入5,则应输出2.283333。 #include double fun( int m ) { double t = 1.0; int i; for( i = 2; i <= m; i++ ) /**********found**********/ t += 1.0/k; 改为:t += 1.0/i; /**********found**********/ ________ 改为:return t; } main( ) { int m; printf( "\nPlease enter 1 integer number:" ); scanf( "%d", &m ); printf( "\nThe result is %lf\n", fun( m ) ); } 52、给定程序中fun函数的功能是:用递归算法计算裴波拉契数列中第n项的值,从第1项起,裴波拉契数列为:1、1、2、3、5、8、13、21…… 例如,若给n输入7,则裴波拉契数值为13。 #include long fun(int g) { /**********found**********/ switch(g); 改为:switch(g): { case 0: return 0; /**********found**********/ case 1 ;case 2 : return 1 ; 改为:case 1 :case 2 : return 1 ; } return( fun(g-1)+fun(g-2) ); } main( ) { long fib; int n; printf("Input n: "); scanf("%d",&n); printf("n = %d\n",n); fib=fun(n); printf("fib = %d\n\n",fib); } 53、给定程序中fun函数的功能是:用冒泡法对6个字符串按由小到大顺序进行排列。 #include #include #define MAXLINE 20 /**************found**************/ fun ( char *pstr[6]) 改为:void fun ( char *pstr[6]) { int i, j ; char *p ; for (i = 0 ; i < 5 ; i++ ) { /**************found**************/ for (j = i + 1, j < 6, j++) 改为:for (j = i + 1;j < 6;j++) { /**************found**************/ if(strcmp(*(pstr + i), (pstr + j)) > 0) 改为:if(strcmp(*(pstr + i), *(pstr + j)) > 0) { p = *(pstr + i) ; /**************found**************/ *(pstr + i) = pstr + j ; 改为:*(pstr + i) = *(pstr + j) ; *(pstr + j) = p ; } } } } main( ) { int i ; char *pstr[6], str[6][MAXLINE] ; for(i = 0; i < 6 ; i++) pstr[i] = str[i] ; printf( "\nEnter 6 string(1 string at each line): \n" ) ; for(i = 0 ; i < 6 ; i++) scanf("%s", pstr[i]) ; fun(pstr) ; printf("The strings after sorting:\n") ; for(i = 0 ; i < 6 ; i++) printf("%s\n", pstr[i]) ; } 54、给定程序中fun函数的功能是:将m(1<=m<=10)个字符串连接起来,组成一个新串,放入pt所指存储区中。例如,把3个串“abc”,“CD”,“EF”连接起来,结果是“abcCDEF”。 #include #include /************found************/ int fun ( char str[][10], int m, char *pt ) 改为:void fun ( char str[][10], int m,char *pt ) { /************found************/ Int k, q, i ; 改为:int k, q, i ; for ( k = 0; k < m; k++ ) { q = strlen ( str [k] ); for (i=0; i #include /************found************/ fun(int n) 改为:double fun(int n) { double sum, s0, s1, s2, s; int k; sum = 1.0; if (n <= 2) sum = 0.0; s0 = 0.0; s1 = 0.0; s2 = 1.0; for (k = 4; k <= n; k++) { s = s0 + s1 + s2; sum += sqrt(s); s0 = s1; s1 = s2; s2 = s; } /************found************/ return sum 改为:return sum; } main ( ) { int n; printf("Input N="); scanf("%d", &n); printf("%f\n", fun(n) ); } 56、给定程序中fun函数的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,num1和num2分别输入49和21,则输出最大公约数为7;若给num1和num2分别输入27和81,则输出最大公约数为27。 #include int fun(int a,int b) { int r,t; if(a #include typedef struct aa { int data; struct aa *next; } NODE; NODE *Creatlink(int n, int m) { NODE *h=NULL, *p, *s; int i; /**********found***********/ p=(NODE )malloc(sizeof(NODE)); 改为:p=(NODE *)malloc(sizeof(NODE)); h=p; /**********found***********/ p->next=NULL; 改为:p=s; for(i=1; 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***********/ return p; 改为:return h; } outlink(NODE *h) { NODE *p; p=h->next; printf("\n\nTHE LIST :\n\n HEAD "); while(p) { printf("->%d ",p->data); p=p->next; } printf("\n"); } main( ) { NODE *head; head=Creatlink(8,22); outlink(head); } 58、给定程序中fun函数的功能是:计算整数n的阶乘。 #include double fun(int n) { double result=1.0; while (n>1 && n<170) /*********found*********/ result*=--n; 改为:result*=n--; /*********found*********/ return _____; 改为:return result; } main( ) { int n; printf("Enter an integer: "); scanf("%d",&n); printf("\n\n%d!=%lg\n\n",n,fun(n)); } 59、给定程序中fun函数的功能是:删除p所指字符串中的所有空白字符(包括Tab、回车符及换行符)。输入字符串时用‘#’结束输入。 #include #include #include fun ( char *p) { int i,t; char c[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]="\0"; 改为:c[t]=’\0’; strcpy(p,c); } main( ) { char c,s[80]; int i=0; printf("Input a string:"); c=getchar(); while(c!='#') { s[i]=c;i++;c=getchar(); } s[i]='\0'; fun(s); puts(s); } 60、数列中,第一项值为3,后一项都比前一项的值增5;给定程序中fun函数的功能是:计算前n项(4 #define N 20 int fun(int n,int *a) { int i,j,k,sum; /**************found**************/ sum=j==0; 改为:sum=j=0; for(k=3,i=0;i #include /************found************/ f( double x) 改为:double f( double x) { if (x == 0.0 || x == 2.0) return 0.0; else if (x < 0.0) return (x -1)/(x-2); else return (x +1)/(x-2); } double fun( int n ) { int i; double s=0.0, y; for (i= -n; i<=n; i++) {y=f(1.0*i); s += y;} /************found************/ return s 改为:return s; } main ( ) { printf("%f\n", fun(5) ); } 62、给定程序中fun函数的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调,次最大数和a[1]中的数对调。 #include #define N 20 /**********found**********/ int fun ( int * a, int n ) 改为:void fun ( int * a, int n ) { int i, m, t, k ; for(i=0;i<2;i++) { /**********found**********/ m=0; 改为:m=i+1; for(k=i+1;ka[m]) k=m; 改为:if(a[k]>a[m]) m=k; t=a[i];a[i]=a[m];a[m]=t; } } main( ) { int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i; for ( i=0; i int fun(int m) { int i, k ; for (i = m + 1 ; ; i++) { for (k = 2 ; k < i ; k++) /**************found**************/ if (i % k != 0) 改为:if (i % k == 0) break ; /**************found**************/ if (k < i) 改为:if (k >= i) return(i); } } main( ) { int n; clrscr( ); printf(“\n please enter n: “); scanf(“%d”,&n); printf(“%d\n”,fun(n)); } 64、给定程序中fun函数的功能是:将p所指字符串中的所有字符复制到b中,要求复制三个字符之后插入一个空格。例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK,调用函数之后,字符数组b中的内容则为:ABC DEF GHI JK。 #include void fun(char *p, char *b) { int i, k=0; while(*p) { /**********found**********/ i=1; 改为:i=0; /**********found**********/ while( i<=3 ||*p ) 改为:while( i<3 && *p ) { /**********found**********/ b[k]=p; 改为:b[k]=*p; k++; p++; i++; } if(*p) { /**********found**********/ b[k++]=" "; 改为:b[k++]=’ ‘; } } b[k]='\0'; } main( ) { char a[80],b[80]; printf("Enter a string: "); gets(a); printf("The original string: "); puts(a); fun(a,b); printf("\nThe string after insert space: "); puts(b); printf("\n\n"); } 65、给定程序中fun函数的功能是:计算小于形参k的最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数值为4622。 #include int fun( int k ) { int m=0, mc=0, j ; while ((k >= 2) && (mc < 10)) { /************found************/ if ((k%13 = 0) || (k%17 = 0)) 改为:if ((k%13 == 0) || (k%17 == 0)) { m = m+ k; mc++; } k--; } return m; /************found************/ _____ 改为:} main ( ) { printf("%d\n", fun (500)); } 66、给定程序中fun函数的功能是:将长整形数中每一位上为奇数的数依次取出,构成一个新书放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。 #include void fun (long s, long *t) { int d; long sl=1; /************found************/ t = 0; 改为:*t = 0; while ( s > 0) { d = s%10; /************found************/ if (d%2 == 0) 改为:if (d%2 != 0) { *t = d * sl + *t; sl *= 10; } s /= 10; } } main( ) { long s, t; clrscr(); printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); } 67、给定程序中fun函数的功能是:交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的值为3。程序运行后a中的值为3,b中的值为8。 #include /*********found**********/ int fun(int x,int y) 改为:int fun(int *x,int *y) { int t; /*********found**********/ t=x;x=y;y=t; 改为:t=*x;*x=*y;*y=t; } main( ) { int a,b; a=8;b=3; fun(&a,&b); printf("%d, %d\n",a,b); } 68、给定程序中fun函数的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序。然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。 #include #include #define N 80 void insert(char *aa) { int i,j,n; char ch; /**********found**********/ n=strlen[ aa ]; 改为:n=strlen(aa); for( i=1; i=0) && ( ch #include void fun(int a,int *b,int *c) { int i,j,d,y; for(i=3;i<=a/2;i=i+2) { /**************found**************/ Y=1; 改为:y=1; for(j=2;j<=sqrt((double)i);j++) if(i%j==0) y=0; if(y==1) { /**************found**************/ d==a-i; 改为:d=a-i; for(j=2;j<=sqrt((double)d);j++) if(d%j==0) y=0; if(y==1) { *b=i; *c=d; } } } } main( ) { int a,b,c; do { printf("\nInput a: "); scanf("%d",&a); } while(a%2); fun(a,&b,&c); printf("\n\n%d = %d + %d\n",a,b,c); } 70、给定程序中fun函数的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。 #include /**********found**********/ char fun(char *s, char *t) 改为:char *fun(char *s, char *t) { int sl=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) return t; else return s; } main( ) { char a[80],b[80],*p,*q; int i; printf("\nEnter a string : "); gets(a); printf("\nEnter a string again : "); gets(b); printf("\nThe longer is :\n\n\"%s\"\n",fun(a,b)); } 71、给定程序中fun函数的功能是:读入一个英文文本行,将其中每个单词的第一个字符改为大写,然后输出次文本行。(这里的“单词”是指由空格隔开的字符串)。例如,若输入“I am a student to take the examination.”,则应输出“I Am A Student To Take The Examination.”。 #include #include /************found************/ include (stdio.a) 改为:# include “stdio.h” /************found************/ upfst ( char p ) 改为:upfst ( char *p ) { int k=0; for ( ; *p; p++ ) if ( k ) { if ( *p == ' ' ) k = 0; } else if ( *p != ' ' ) { k = 1; *p = toupper( *p ); } } main( ) { char chrstr[81]; printf( "\nPlease enter an English text line: " ); gets( chrstr ); printf( "\n\nBefore changing:\n %s", chrstr ); upfst( chrstr ); printf( "\nAfter changing:\n %s\n", chrstr ); } 72、给定程序中fun函数的功能是:根据形参m的值(2<=m<=9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。例如, 若输入2,则输出 若输入4,则输出 1 2 1 2 3 4 2 4 2 4 6 8 3 6 9 12 4 8 12 16 #include #define M 10 int a[M][M] = {0} ; /**************found**************/ fun(int **a, int m) 改为:void fun(int (*a)[M], int m) { int j, k ; for (j = 0 ; j < m ; j++ ) for (k = 0 ; k < m ; k++ ) /**************found**************/ a[j][k] = k * j ; 改为:a[j][k] = (k+1) * (j+1); } main ( ) { int i, j, n ; printf ( " Enter n : " ) ; scanf ("%d", &n ) ; fun ( a, n ) ; for ( i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) printf ( "%4d", a[i][j] ) ; printf ( "\n" ) ; } } 73、给定程序中fun函数的功能是:对N名学生的学习成绩,按从高到低的顺序找出前m(m<=10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 #include #include #include #define N 10 typedef struct ss { char num[10]; int s; } STU; STU *fun(STU a[], int m) { STU b[N], *t; int i,j,k; /**********found**********/ t=(STU *)calloc(sizeof(STU),m) 改为:t=(STU *)malloc(sizeof(STU)); for(i=0; i b[j].s) j=i; /**********found**********/ t(k)=b(j); 改为:t[k]=b[j]; b[j].s=0; } return t; } outresult(STU a[], FILE *pf) { int i; for(i=0; i10 ) { printf("\nGive the number of the students who have better score: "); scanf("%d",&m); } pOrder=fun(a,m); printf("***** THE RESULT *****\n"); printf("The top :\n"); for(i=0; i /************found************/ void fun (long s, long t) 改为:void fun (long s, long *t) { long sl=10; *t = s % 10; while ( s > 0) { s = s/100; *t = s%10 * sl + *t; /************found************/ sl = sl*100; 改为:sl = sl*10; } } main( ) { long s, t; printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); } 75、给定程序中fun函数的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数有函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:80.5 60 72 90.5 98 51.5 88 64,则低于平均分的学生人数为4(平均分为75.5625)。 #include #define N 20 int fun ( float *s, int n, float *aver ) { float ave, t = 0.0 ; int count = 0, k, i ; for ( k = 0 ; k < n ; k++ ) /**************found**************/ t = s[k] ; 改为: t+= s[k] ; ave = t / n ; for ( i = 0 ; i < n ; i++ ) if ( s[ i ] < ave ) count++ ; /**************found**************/ *aver = Ave ; 改为:*aver = ave ; return count ; } main ( ) { float s[30], aver ; int m, i ; printf ( "\nPlease enter m: " ) ; scanf ("%d", &m ) ; printf ( "\nPlease enter %d mark :\n ", m ) ; for( i = 0 ; i < m ; i++ ) scanf ( "%f", s + i ) ; printf( "\nThe number of students : %d \n" , fun ( s, m, &aver ) ); printf( "Ave = %f\n", aver ) ; } 76、给定程序中fun函数的功能是:根据整形形参m,计算如下公式的值。 例如,若m=2000,则应输出0.000160。 #include /************found************/ fun ( int m ) 改为:double fun ( int m ) { double y = 0, d ; int i ; /************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( ) { int n = 2000 ; printf( "\nThe result is %lf\n", fun ( n ) ) ; } 77、给定程序中fun函数的功能是:读入一个整数k(2<=k<=10000),打印它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出:2、3、5、7、11。 #include /************found************/ IsPrime ( int n ); 改为:IsPrime ( int n ) { int i, m; m = 1; for ( i = 2; i < n; i++ ) /************found************/ if !( n%i ) 改为:if (!( n%i )) { m = 0; break ; } return ( m ); } main( ) { int j, k; printf( "\nPlease enter an integer number between 2 and 10000: " ); scanf( "%d", &k ); printf( "\n\nThe prime factor(s) of %d is( are ):", k ); for( j = 2; j <= k; j++ ) if( ( !( k%j ) )&&( IsPrime( j ) ) ) printf( "\n %4d", j ); printf("\n"); } 78、给定程序中fun函数的功能是:根据以下公式求л值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。 #include #include double fun(double eps) { double s,t; int n=1; s=0.0; /************found************/ t=0; 改为:t=1.0; /************found************/ while( t>eps) 改为:while( t>=eps) { s+=t; t=t * n/(2*n+1); n++; } /************found************/ return(s); 改为:return(s*2); } main( ) { double x; printf("\nPlease enter a precision: "); scanf("%lf",&x); printf("\neps=%lf, Pi=%lf\n\n",x,fun(x)); } 79、给定程序中fun函数的功能是:分别统计字符串中大些字母和小写字母的个数。例如,给字符串s输入:AAaaBBb123CCccccd,则应输出结果:upper – 6, lower -8。 #include /**********found**********/ void fun ( char *s, int a, int b ) 改为:void fun ( char *s, int *a, int *b ) { while ( *s ) { if ( *s >= 'A' && *s <= 'Z' ) /**********found**********/ *a=a+1 ; 改为:(*a)++; if ( *s >= 'a' && *s <= 'z' ) /**********found**********/ *b=b+1; 改为:(*b)++; s++; } } main( ) { char s[100]; int upper = 0, lower = 0 ; printf( "\nPlease a string : " ); gets ( s ); fun ( s, & upper, &lower ); printf( "\n upper = %d lower = %d\n", upper, lower ); } 80、给定程序中fun函数的功能是:找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。 #include #define N 100 int fun(int *s, int n) { int i,j,k,a,b,c; j=0; for(i=100; i 1000); num = fun( a,n ); printf("\n\nThe result :\n"); for(i=0; ihigh,查找结束。 #include #define N 10 /************found************/ void fun(int a[], int m ) 改为:int fun(int a[], int m ) { int low=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2; if(m a[mid]) 改为:else if(m > a[mid]) low=mid+1; else return(mid); } return(-1); } main() { int i,a[N]={-3,4,7,9,13,45,67,89,100,180 },k,m; printf("a数组中的数据如下:"); for(i=0;i=0) printf("m=%d,index=%d\n",m,k); else printf("Not be found!\n"); } 82、给定程序中fun函数的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。 #include int fun() { int i,j,k,sum=0; printf("\nThe result :\n\n"); /**************found**************/ for(i=0; i<=3; i++) 改为:for(i=1; i<=3; i++) { for(j=1; j<=5; j++) { k=8-i-j; /**************found**************/ if(K>=0 && K<=6) 改为:if((k>=1&&k<=6)&&(i!=0&&j!=0)||k==0) { sum=sum+1; printf("red:%4d white:%4d black:%4d\n",i,j,k); } } } return sum; } main( ) { int sum; sum=fun(); printf("sum =%4d\n\n",sum); } 83、给定程序中fun函数的功能是:根据整型形参m,计算如下公式的值。 例如,若主函数中输入5,则应输出-0.283333。 #include double fun( int m ) { double t = 1.0; int i; for( i = 2; i <= m; i++ ) /**********found**********/ t = 1.0-1 /i; 改为:t-=1.0/i; /**********found**********/ _______; 改为:return t; } main( ) { int m ; printf( "\nPlease enter 1 integer numbers:\n" ); scanf( "%d", &m); printf( "\n\nThe result is %lf\n", fun( m ) ); } 84、给定程序中fun函数的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。 #include #include #define N 80 int fun(char *s, char *t) { int n; char *p , *r; n=0; while ( *s ) { p=s; /*********found**********/ r=p; 改为:r=t; while(*r) if(*r==*p) { r++; p++; } else break; /*********found**********/ if(*r= O) 改为:if(*r== ‘\0’) n++; /*********found**********/ ______; 改为:s++; } return n; } main( ) { char a[N],b[N]; int m; printf("\nPlease enter string a : "); gets(a); printf("\nPlease enter substring b : "); gets( b ); m=fun(a, b); printf("\nThe result is : m = %d\n",m); } 85、给定程序中fun函数的功能是:首先将大写字母转换为对应小写字母,若小写字母为a~u,则将其装换位其后的第5个字母;若小写字母为v~z,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f,若形参是字母W,则转换为小写字母b。 #include #include char fun(char c) { if( c>='A' && c<='Z') /**************found**************/ C=C+32; 改为:c=c+32; if(c>='a' && c<='u') /**************found**************/ c=c-5; 改为:c=c+5; else if(c>='v'&&c<='z') c=c-21; return c; } main( ) { char c1,c2; printf("\nEnter a letter(A-Z): "); c1=getchar(); if( isupper( c1 ) ) { c2=fun(c1); printf("\n\nThe letter \'%c\' change to \'%c\'\n", c1,c2); } else printf("\nEnter (A-Z)!\n"); } 86、给定程序中fun函数的功能是:将s所指字符串中出现的与t1所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1与t2所指字符串的长度相同。例如,当c所指字符串中的内容为“abcdabfab”,t1所指子串中的内容为:“ab”,t2所指子串中的内容为:“99”时,结果在w所指的数组中的内容应为:“99cd99f99”。 #include #include /************found************/ int fun (char *s, char *t1, char *t2 , char *w) /* 改为:void fun (char *s, char *t1, char *t2 , char *w) */ { int i; char *p , *r, *a; strcpy( w, s ); while ( *w ) { p = w; r = t1; /************found************/ while ( r ) 改为:while ( *r ) if ( *r == *p ) { r++; p++; } else break; if ( *r == '\0' ) { a = w; r = t2; while ( *r ){ /************found************/ *a = *r; a++; r++ 改为:*a = *r; a++; r++; } w += strlen(t2) ; } else w++; } } main( ) { char s[100], t1[100], t2[100], w[100]; printf("\nPlease enter string S:"); scanf("%s", s); printf("\nPlease enter substring t1:"); scanf("%s", t1); printf("\nPlease enter substring t2:"); scanf("%s", t2); if ( strlen(t1)==strlen(t2) ) { fun( s, t1, t2, w); printf("\nThe result is : %s\n", w); } else printf("Error : strlen(t1) != strlen(t2)\n"); } 87、给定程序中fun函数的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值大或相等的字符依次放到c所指数组中,形成一个新的字符串。例如,若主函数中a字符串为:aBCDeFgH,主函数中b字符串为:ABcd,则c中的字符串应为:aBcdeFgH。 #include #include void fun(char *p ,char *q, char *c) { /************found************/ int k = 1; 改为:int k = 0; /************found************/ while( *p != *q ) 改为:while( *p ||*q ) { if( *p<*q ) c[k]=*q; else c[k]=*p; if(*p) p++; if(*q) q++; k++; } } main( ) { char a[10]="aBCDeFgH", b[10]="ABcd", c[80]={'\0'}; fun(a,b,c); printf("The string a: "); puts(a); printf("The string b: "); puts(b); printf("The result : "); puts(c); } 88、给定程序中fun函数的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中。例如,输入的数为:55 12 34,输出结果应当是:a-55.0,b-34.0,c-12.0。 #include void fun(float *p,float *q,float *s) { /**********found**********/ float *k; 改为:float k; 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( ) { float a,b,c; printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); fun(&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); } 89、给定程序中fun函数的功能是:利用夏明的公式求л的近似值,直到最后一项的绝对值小于指定的数(参数num)为止: 例如,程序运行后,输入0.0001,则程序输出3.1414。 #include #include float fun ( float num ) { int s ; float n, t, pi ; t = 1 ; pi = 0 ; n = 1 ; 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 ; return pi ; } main( ) { float n1, n2 ; printf("Enter a float number: ") ; scanf("%f", &n1) ; n2 = fun(n1) ; printf("%6.4f\n", n2) ; } 90、给定程序中fun函数的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。若high的值为100,则函数的值为732。 #include #include int fun( int high ) { int sum = 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 ){ /************found************/ yes=0; break 改为:yes=0; break; } if (yes) { sum +=high; n++; } high--; } return sum ; } main ( ) { printf("%d\n", fun (100)); } 91、给定程序中fun函数的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abcd,则应输出dcba。 #include /************found************/ fun (char a) 改为:void fun(char *a) { if ( *a ) { fun(a+1) ; /************found************/ printf("%c" *a) ; 改为:printf("%c", *a) ; } } main( ) { char s[10]="abcd"; printf("处理前字符串=%s\n处理后字符串=", s); fun(s); printf("\n") ; } 92、给定程序中fun函数的功能是:求出以下分述序列的前n项之和。和值通过函数值返回到main函数。 例如,若n=5,则应输出8.391667。 #include /************found************/ fun ( int n ) 改为:double fun ( int n ) { int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; 改为:s = s + (double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } 93、给定程序中fun函数的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:7654321时,t中的数为642。 #include /************found************/ void fun (long s, long t) 改为:void fun (long s, long *t) { long sl=10; s /= 10; *t = s % 10; /************found************/ while ( s < 0) 改为:while ( s > 0) { s = s/100; *t = s%10*sl + *t; sl = sl * 10; } } main() { long s, t; printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); } 94、给定程序中fun函数的功能是:将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为8642。 #include void fun (long s, long *t) { /************found************/ int d; 改为:long d; long sl=1; *t = 0; while ( s > 0) { d = s%10; /************found************/ if (d%2=0) 改为:if (d%2==0) { *t=d* sl+ *t; sl *= 10; } /************found************/ s \= 10; 改为:s /= 10; } } main( ) { long s, t; printf("\nPlease enter s:"); scanf("%ld", &s); fun(s, &t); printf("The result is: %ld\n", t); } 95、给定程序中fun函数的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1与t2所指字符串的长度相同。例如,当c所指字符串中的内容为“abcdabfabc”,t1所指子串中的内容为:“ab”,t2所指子串中的内容为:“99”时,结果在w所指的数组中的内容应为:“abcdabf99c”。 #include #include /************found************/ int fun (char *s, char *t1, char *t2 , char *w) /* 改为:void fun (char *s, char *t1, char *t2 , char *w) */ { int i; char *p , *r, *a; strcpy( w, s ); /************found************/ while ( w ) 改为:while ( *w ) { p = w; r = t1; while ( *r ) /************found************/ IF ( *r == *p ) 改为:if ( *r == *p ) { r++; p++; } else break; if ( *r == '\0' ) a = w; w++; } r = t2; while ( *r ){ *a = *r; a++; r++; } } main() { char s[100], t1[100], t2[100], w[100]; printf("\nPlease enter string S:"); scanf("%s", s); printf("\nPlease enter substring t1:"); scanf("%s", t1); printf("\nPlease enter substring t2:"); scanf("%s", t2); if ( strlen(t1)==strlen(t2) ) { fun( s, t1, t2, w); printf("\nThe result is : %s\n", w); } else printf("\nError : strlen(t1) != strlen(t2)\n"); } 96、给定程序中fun函数的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下: 例如,a为2时,平方根为1.414214。 #include #include /**********found**********/ double fun(double a, dounle x0) 改为:double fun(double a, double x0) { double x1, y; x1=(x0+ a/x0)/2.0; /**********found**********/ if( fabs(x1-xo)>0.00001 ) 改为: if( fabs(x1-x0)>=0.00001 ) y=fun(a,x1); else y=x1; return y; } main( ) { double x; printf("Enter x: "); scanf("%lf",&x); printf("The square root of %lf is %lf\n",x,fun(x,1.0)); } 97、给定程序中fun函数的功能是:统计子字符串substr在字符串str中出现的次数。例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。 #include /**********found**********/ fun( char * str, char * substr) 改为:int fun( char * str, char * substr) { int i, 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+1]== ‘\0’) { num++; break; } return num; } main() { char str[80],substr[80]; printf(“ Input a string:”); gets(str); printf(“ Input a substring:”); gets(substr); printf(“%d\n”, fun(str,substr)); } 98、给定程序中fun函数的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。 #include #include #define N 5 #define M 81 /**********found**********/ fun(char (*sq)[N]) 改为:char * fun(char (*sq)[M]) { int i; char *sp; sp=sq[0]; for(i=0;i #include typedef struct aa { int data; struct aa *next; }NODE; /***********found**********/ fun(NODE *h) 改为:int fun(NODE *h) { int max = -1 ; NODE *p; p=h; while(p) { if(p->data>max) max=p->data; /***********found**********/ p=h->next; 改为:p=p->next; } return max; } outresult(int s, FILE *pf) { fprintf(pf, “\n The max in link: %s\n”,s); } NODE *creatlink(int n) { NODE *h, *p, *s, *q; int i, x; h=p=(NODE *)malloc(sizeof(NODE)); for(i=1; 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; return h; } outlink(NODE *h, FILE *pf) { NODE *p; p = h->next; fprintf(pf ,"\n\nTHE LIST :\n\n HEAD " ); while(p) { fprintf(pf ,"->%d ",p->data ); p=p->next; } fprintf (pf,"\n"); } outresult(int s, FILE *pf) { fprintf(pf,"\nThe sum of even numbers : %d\n",s); } main( ) { NODE *head; int even; head=creatlink(12); head->data=9000; outlink(head , stdout); even=fun(head); printf("\nThe result :\n"); outresult(even, stdout); } 100、给定程序中fun函数的功能是:通过某种方式是相两个变量值的交换,规定不允许增加语句和表达式。例如:若变量a中的值原为8,b中的值为3。程序运行后a中的值为3,b中的值为8。 #include int fun(int * x,int y) { int t; /*********found**********/ t=x; x=y; 改为:t=*x;*x=y; /*********found**********/ return(y); 改为:return(t); } main( ) { int a=3,b=8; clrscr(); printf("%d, %d\n",a,b); b=fun(&a,b); printf("%d, %d\n",a,b); } 第三部分 编程题 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。 例如,当score数组中的数据为10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为10、20、30、40。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include /*第一个for()循环用来计算score数组中分数的总和,然后用aver/=m求出平均值,第二个循环用来找出小于平均分的元素,并放到数组below中,这里要注意j的递增方式。*/ int fun(int score[],int m, int below[]) { int i,j=0,aver=0; for(i=0;i #include /*该题关键就是如何表示能被7或11整除,但不能同时被7和11整除。用(i%7==0)//(i%11==0)来表示能被7或11整除,用 !((i%7==0)&&(i%11==0))来表示不能同时被7和11整除。 void fun(int *a,int *n) { int i,m=0; for(i=1;i<1000;i++) if(((i%7==0)//(i%11==0))&&!((i%7==0)&&(i%11==0))) {a[m]=i;m+=1;} *n=m; } main() { int aa[1000],n,k; clrscr(); fun(aa,&n); for(k=0;k #include /*由于要求的数不能是偶数故编程时从1开始循环而步长为2这样正好保正i永远的奇数。这里也要注意存放结果的数组pp的下标变化方式。*/ void fun(int x, int pp[], int *n) { int i,j=0; for( i=1;i<=x; i=i+2) if( x%i==0) pp[j++]=i; *n=j; } main() { int x, aa[1000], n, i; printf("\n please enter an integer number:\n"); scanf("%d ",&x); fun(x,aa,&n); for(i=0;i #include /* 34题:本题采用的是字母的ASCII码值与数组pp下标的对应转换关系分别求出对应字母的个数。第一个for()是给pp赋初值0,第二个for()用于控制在字符串内从头到尾移动。由于字母'a'的ASCII码值为97而它的个数要放在pp[0]中,而'a'-97的值正好为0,其它的依此类推。*/ void fun(char *tt,int pp[]) { int i; for(i=0;i<26;i++) pp[i]=0; for(;*tt;tt++) if(*tt<='z'&&*tt>='a') pp[*tt-97]++; } main() { char aa[1000]; int bb[26],k; clrscr(); printf("\nPlease enter a char string:");scanf("%s",aa) ; fun(aa,bb); for(k=0;k<26;k++) printf("%d",bb[k]); printf("\n"); } 5.请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m 的k个素数存入xx所指的数组中。 例如,若输入:17,5,则应输出:19,23,29,31,37。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*本题中的for()循环用来判断一个数是否为素数,由于个数只能是k个所以用do-while循环来控制。*/ void fun(int m, int k, int xx[]) { int i,j=0,p=m+1; do {for( i=2; i=p) xx[j++]=p; p++; } while(j #include #define  LEN 20 void fun (char a[ ], char b [ ], int n) { int i,k=0; for(i=0;a[i]!='\0';i++) if(i!=n) b[k++]=a[i]; b[k]='\0'; } main( ) { FILE *wf; char strl[LEN], str2[LEN]; int n ; printf ("Enter the string : \n") ; gets (strl) ; printf ("Enter the position of the string deleted: ") ; scanf ("%d", &n) ; fun (strl, str2, n) ; printf ("The new string is : %s \n", str2) ; wf=fopen("out.dat","w"); fun("world",str2,3); fprintf(wf,"%s",str2); fclose(wf); } 7.请编写一个函数int fun(int *s,int t,int *k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 例如,输入如下整数:876 675 896 101 301 401 980 431 451 777则输出结果为:6,980。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include int fun(int *s,int t,int *k) { int i , max ; max=s[0]; for ( i=0; imax) { max=s[i]; *k=i; } } main() {int a[10]={876,675,896,101,301,401,980,431,451,777},k; clrscr() ; fun(a,10,&k); printf("%d,%d\n",k,a[k]); } 8.编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n) 例如:若n的值为11时,函数的值为1.833333。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include float fun(int n) { int i,s; s=0; for(i=0,i<=n,i++){ s=s+1/chsdc(i); } return(s); } long chsdc(int n) { int i,s; s=0; for(i=0,in。p=m!/n!(m-n)!。例如:m=12,n=8时,运行结果为495.000000。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include float fun( int m, int n) { int i,j,k; long int t=1,s=1,p=1; float q; for(i=1; i<=m; i++) t*=i; for(j=1; j<=n; j++) s*=j; for(k=1; k<=m-n; k++) p*=k; q=(float)t/s/p; return q; } main() { printf("\np=%lf\n", fun(12,8)); } 10.编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。 Xn+1=cos(Xn) 迭代步骤如下: ⑴取x1初值为0.0; ⑵x0=x1,把x1的值赋给x0; ⑶x1=cos(x0),求出一个新的x1; ⑷若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2); ⑸所求x1就是方程cos(x)-x=O的一个实根,作为函数值返回。 程序将输出结果Root=0.739085。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include float fun() { float x0,x1=0; do { x0=x1; x1=cos(x0); }while( fabs(x0-x1)>1e-006); return x1; } main() { printf("root=%f\n",fun()); } 11.下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如:a数组中的值为 ,则返回主程序后a数组中的值应为 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include #define N 5 /* 29题:该题的关键是如何表示出左下半角的元素,当从上往下到第i行时只有左边的 i个元素要置为0(每行总是如此)。用外层for()来控制行而内嵌的for()来控制每行的 左边元素,故而在内嵌for()中j最大只能循环到i(即表示出第i行左边的i个元素)。* / int fun(int a[][N]) {int i,j; for(i=0;i #include #include #define N 5 /* 注意不能重复计算,第一个for()循环求出第一列与最后一列的和,第二个for()循环求出第一行与最后一行(已除去两头元素),要注意第二个for()中起始为1,最后为N-2。*/ double fun (int w[][N]) { int i,t=0; double s=0; for(i=0;i #include #define M 4 #define N 5 /*注:该题的第一个for()循环是计算矩阵的最上一行和最下一行的总和,第二个for()是计算除两头元素以外的最左一列和最右一列的元素的和,最后sun就是周边元素的和。*/ int fun(int a[M][N]) {int sum=0,i; for(i=0;i #include /* 注:由于unsigned型整数在0-65535这间,只要它大于10000则对10000求余即得出后面4位,否则如果大于1000则对1000求余得出后3位数,这样一层一层往小的判断。由于return的作用除了返回值以外,还有当执行到return时就跳出该程序,所以可以连续的用if()语句。 */ unsigned fun( unsigned w ) { if(w>=10000) return w%10000; if(w>=1000) return w%1000; if(w>=100) return w%100; return w%10; } main() { unsigned x; printf( "enter a unsigned integer number :" ); scanf( "%u",&x); if(x<10) printf("data error!"); else printf ("the result :%u\n", fun(x)); } 16.请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。 例如:若h值为8.32433,则函数返回8.32;若h值为8.32533,则函数返回8.33。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*注:h乘以1000后正好是原小数点后第三位做了新数的个位数,然后再进行加5运算时。如原小数点后第三位为4及以下则加5后还是不能进一位(即四舍),如是5及以上则加5后该位就要向前进一位数(即五入)。进行加5运算后除10再赋给一个整型变量此时就只有原小数点第二位及以前各位保留在整型变量中,最后再对整型变量除100,这样又出现了两位小数。该题中,进行四舍五入后一定要赋给一个整型变量才能将不用部分彻底变成0 。*/ float fun(float h) { long t; h=h*1000; t=(h+5)/10; return (float)t/100; } main() { float a; clrscr(); printf("Enter a:"); scanf("%f",&a); printf("The original data is:"); printf("%f\n\n",a); printf("The result :%6.2f\n",fun(a)); } 17.请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。 例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。fun(char *s) ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include #define N 81 /*注:该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次都进行两字符的位置对换,直到中间字符(用s+i #include /*这题的关键在于进行行列下标转换的算法,由矩阵的对称性我们不难看出在进行行列互换时a[j]在好是与a[j][i]互换,因而只要我位让程序走完矩阵的左上角即可(用for(i=0;i<2;i++)再套for(j=i+1;j<3;j++)来完成左上角的走动。*/ int fun(int array[3][3]) { int i,j,t; for(i=0;i<2;i++) for(j=i+1;j<3;j++) {t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;} } main() { int i,j; int array[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("\n"); } fun(array); printf("Converted array:\n"); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%7d",array[i][j]); printf("\n"); } } 19.编写函数fun,该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。 例如:若程序执行时输入字符串为:turbo c and borland c++ 从键盘上输入字符n,则输出后变为:turbo c ad borlad c++ 如果输入的字符在字符串中不存在,则字符串照原样输出。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*注:该题的算法是让i控制一个一个字符往后走,在移动过程中如果s[i]不是要删的字符,则将其按顺序放到新串中(新串亦是用s来做,只是用k来控制新串的下标,由于要删除一些元素,因此新串的下标总是比原下标i要慢。因而可用此法即同一字符串变量的方法。*/ int fun(char s[],int c) {int i,k=0; for(i=0;s[i];i++) if(s[i]!=c) s[k++]=s[i]; s[k]='\0'; } main() { static char str[]="turbo c and borland c++"; char ch; clrscr(); printf(" :%s\n",str); printf(" :"); scanf("%c",&ch); fun(str,ch); printf("str[]=%s\n",str); } 20.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求出的素数的个数。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #define MAX 100 /*注:循环for(i=2;i=k)用于判断在上一个for()循环中i能否走到k,如果能则表示在2到k-1的数都不能整除k,即k为素数。*/ int fun( int lim, int aa[MAX]) { int i,j=0,k; for( k=2; k=k) aa[j++]=k; } return j; } main() { int limit,i,sum; int aa[MAX]; printf("\n input a integer number:"); scanf(" %d",&limit); sum=fun(limit,aa); for(i=0; i #include #include /*该题采用的排序法是选择法进行降序排序,算法是用外for()循环从字符串的前端往后端走动,每走动一个字符都用内嵌的for()循环在该字符后找出最小的字符与该字符进行换位。直到外for()循环走到最后一个字符。此外,此题还要注意把首尾字符除开,即在最外层for()循环中从1开始,只到num-2即可。*/ int fun(char *s,int num) { int i,j,t; for(i=1;i #include #define N 8 struct slist { double s; struct slist *next; }; typedef struct slist STREC; double fun( STREC *h ) { double max ; int i ; max=h->s; for(i=0 ; is>max) max=(h+i)->s; return max; } STREC * creat( double *s) { STREC *h,*p,*q; int i=0; h=p=(STREC*)malloc(sizeof(STREC));p->s=0; while(is=s[i]; i++; p->next=q; p=q; } p->next=0; return h; } outlist( STREC *h) { STREC *p; p=h->next; printf("head"); do { printf("->%2.0f",p->s);p=p->next;} while(p!=0); printf("\n\n"); } main() { double s[N]={85,76,69,85,91,72,64,87}, max; STREC *h; h=creat( s ); outlist(h); max=fun( h ); printf("max=%6.1f\n",max); NONO(); } NONO() {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *in, *out ; int i,j ; double s[N],max; STREC *h ; in = fopen("K:\\k01\\24001514\\in.dat","r") ; out = fopen("K:\\k01\\24001514\\out.dat","w") ; for(i = 0 ; i < 10 ; i++) { for(j=0 ; j < N; j++) fscanf(in, "%lf,", &s[j]) ; h=creat( s ); max=fun( h ); fprintf(out, "%6.1lf\n", max) ; } fclose(in) ; fclose(out) ; } 23.请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出N0。回文是指顺读和倒读都一样的字符串。 例如,字符串LEVEL是回文,而字符串123312就不是回文。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #define N 80 int fun(char *str) {int i,n=0,fg=1; char *p=str; while (*p) {n++; p++;} for (i=0;i #include long fun ( char *p) { long s=0,t; int i=0,j,n=strlen(p),k,s1; if(p[0]=='-') i++; for(j=i;j<=n-1;j++) {t=p[j]-'0'; s1=10; for (k=j;k(为回车键),函数将返回shanghai。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include char *fun ( char *s, char *t) { char *ss=s, *tt=t; while((*ss)&&(*tt)) { ss++; tt++; } if(*tt) return(t); else return(s); } main( ) { char a[20],b[10],*p,*q; int i; printf("Input 1th string:") ; gets( a); printf("Input 2th string:") ; gets( b); printf("%s\n",fun (a, b )); NONO (); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i ; char a[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) ; } 26.请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代): X/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+...+1×2×3×...×n/3×5×7×(2n+1) 程序运行后,如果输入精度0.0005,则程序输出为3.14…。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include double fun ( double eps) { double s; float n,t,pi; t=1;pi=0;n=1.0;s=1.0; while((fabs(s))>=eps) {pi+=s; t=n/(2*n+1); s*=t; n++;} pi=pi*2; return pi; } main( ) { double x; printf("Input eps:") ; scanf("%lf",&x); printf("\neps = %lf, PI=%lf\n", x, fun(x)); } 27.请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 例如,若传送给m的值为50,则程序输出:7 11 14 21 22 28 33 35 42 44 49 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #define M 100 void fun ( int m, int *a , int *n ) { int i,k; *n=0; for(i=1,k=0; i<=m; i++) if((i%7==0)||(i%11==0)) { a[k++]=i; (*n)++; } } main( ) { int aa[M], n, k; clrscr(); fun ( 50, aa, &n ); for ( k = 0; k < n; k++ ) if((k+1)%20==0) printf("\n"); else printf( "%4d", aa[k] ); printf("\n") ; NONO( ); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *fp, *wf ; int i, n, j, k, aa[M], sum ; fp = fopen("bc05.in","r") ; if(fp == NULL) { printf("数据文件bc05.in不存在!") ; ret urn ; } 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 < n ; k++) sum+=aa[k] ; fprintf(wf, "%d\n", sum) ; } fclose(fp) ; fclose(wf) ; } 28.请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include void fun(int a[], int n , int *max, int *d ) { int i; *max=a[0]; *d=0; for(i=0;i*max) {*max=a[i]; *d=i;} } main() {int i, x[20], max , index, n = 10; randomize() ; for (i=0;i < n;i++) {x[i] = rand()%50; printf("%4d", x[i]) ; } printf("\n"); fun( x, n , &max, &index); printf("Max =%5d , Index =%4d\n",max, index ); } 29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入abc4Efg,则应输出aBc4EFg。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include void fun(char *ss) { int i; for(i=0;ss[i]!='\0';i++) if(i%2==1&&ss[i]>='a'&&ss[i]<='z') ss[i]=ss[i]-32; } main() { FILE *wf; char tt[81],s[10]="abc4Efg"; printf("\nPlease enter an string within 80 characters:\n"); gets(tt); printf("\n\nAfter changing, the string\n%s",tt); fun(tt); printf("\nbecomes\n%s\n",tt); wf=fopen("out.dat","w"); fun(s); fprintf(wf,"%s",s); fclose(wf); } 30.请编写一个函数fun,它的功能是:求出—个2×M整型二维数组中最大元素的值,并将此值返回调用函数。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #define M 4 #include fun (int a[][M] ) { int i,j,max= a[0][0] ; for(i=0;i<2;i++) for(j=0;j #include #include void fun(char*s, char t[]) { int i,j=0; for(i=0;s[i]!= '\0' ;i++) if(i%2==0 && s[i]%2==0) t[j++]=s[i]; t[j]='\0'; } main() { FILE *wf; char s[100] ,t[100]; printf("\nPlease enter string S: "); scanf("%s",s); fun(s,t); printf("\nThe result is: %s\n",t); wf=fopen("out.dat","w"); fun("ABCDEFG123456",t); fprintf(wf,"%s",t); fclose(wf); } 32.请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFG12345,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是135。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include void fun (char *s, char t[ ]) { int i, j=0, n; n=strlen(s); for( i=0; i #include void fun ( char *a , int n ) { int i=0, k=0; char *p, *t; p=t=a; while ( *t) t++; t--; while (*t==’*’) {k++; t-- ;} t++; if (k>n) { while(*p&&p #define N 16 typedef struct { char num[10]; int s ; }STRUC; int fun (STRUC *a, STRUC *b) { int i,j=0,max=a[0].s; for(i=0;i #include #include int fun(char *str) {char *p=str; for(; *str; str++) if(*str!=' ') *p++=*str; *p='\0'; } main() { char str[81]; int n; clrscr() printf("Input a string:") gets(str); puts(str); fun(str); printf("*** str: %s\n",str); NONO(); } NONO() { /* 请在此函数内打开文件,输入调试数据,调用 fun 函数,输出数据,关闭文件。 */ char str[81]; int n = 0; FILE *rf, *wf rf = fopen("b0803.in", "r") wf = fopen("b0803.out", "w") while(n < 10) { fgets(str, 80, rf); fun(str); fprintf(wf, "%s", str) n++ } fclose(rf) fclose(wf) } 36.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 例如,若字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是A*BC*DEF*G**********。在编写函数时,不得使用C语言提供的字符串函数。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include void fun ( char *a) { int i=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]= '\0' ; } main() { FILE *wf; char s[81],*t="****A*BC*DEF*G*******"; printf("Enter a string :\n"); gets(s); fun(s); printf("The string after deleted:\n"); puts(s); wf=fopen("out.dat","w"); fun(t); fprintf(wf,"%s",t); fclose(wf); } 37.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 例如,若学生的成绩是85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #define N 8 typedef struct { char num[10]; double s[N]; double ave; } STRUC; void fun( ) { int i; p->ave=0.0 ; for(i=0;iave=p->ave+p->s[i]; p->ave= p->ave/N ; } main() { FILE *wf; STRUC s={ "GA005 ",85.5,76,69.5,85,91,72,64.5,87.5}; int i; fun(&s); printf("The %s's student data:\n", s.num); for(i=0;i #include #define M 81 /* 注:本题用while()循环来控制字符的移动,每移动一个字符都要进行判断(if(*ss==c))是否为指定的字母,若是则个数加1。这里要注意如何让ss指针向下走动(ss++)。*/ int fun(char *ss,char c) {int num=0; while(*ss!='\0') {if(*ss==c) num++; ss++; } return(num); } main() {char a[M],ch; clrscr(); printf("\nPlease enter a strint:");gets(a); printf("\nPlease enter a char:");ch=getchar(); printf("\nThe number of the char is:%d\n",fun(a,ch)); } 39.请编写函数fun,该函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到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。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #define N 80 void fun(int *w, int p, int n) { int i,k=0,b[N]; for(i=p+1; i < n; i++) b[k++]=w[i]; for(i=0; i <= p; i++) b[k++]=w[i]; for(i=0; i < n; i++) w[i]=b[i]; } main() { int a[N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; int i,p,n=15; printf("The original data:\n"); for(i=0; i printf("\n\nEnter p: ");scanf("%d",&p); fun(a,p,n); printf("\nThe data after moving:\n"); for(i=0; i printf("\n\n"); NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf,*wf int a[N], i, j, p, n rf = fopen("bc.in", "r") wf = fopen("bc.out", "w") for(i = 0 i < 5 i++) { fscanf(rf, "%d %d", &n, &p) for(j = 0 j < n j++) fscanf(rf, "%d", &a[j]) fun(a, p, n) for(j = 0 j < n j++) fprintf(wf, "%3d", a[j]) fprintf(wf, "\n") } fclose(rf) fclose(wf) } 40.请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 例如,字符串中原有的内容为ABCDEFGHIJK,m的值为3,移动后,字符串中的内容应该是DEFGHIJKABC。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #define N 80 void fun (char *w,int m) { int i,j; char t; for(i=1;i<=m;i++) {t=w[0]; for(j=1;w[j]!='\0';j++) w[j-1]= w[j] ; w[j-1] =t; } } main() { FILE *wf; char a[N]= "ABCDEFGHIJK"; int m; printf("The origina string :\n"); puts(a); printf("\n\nEnter m: "); scanf("%d",&m); fun(a,m); printf("\nThe string after moving :\n"); puts(a); printf("\n\n"); wf=fopen("out.dat","w"); fun(b,3); fprintf(wf,"%s",b); fclose(wf); } 41.请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 例如,若二维数组中的数据为:W W W W 则字符串中的内容应是WSHWSHWSH。 S S S S H H H H ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #define M 3 #define N 4 void fun(char (*s)[N],char *b ) { int i,j,k=0; for(i=0;i #include #include #define N 5 /*该题的关键也是在如何表示右上半角,本题采用的是在一行内从最后一列的元素开始往前乘,只有j>=i时才改变。*/ int fun( int a[][N], int m) { int i,j; for(i=0; i=i; j--) a[i][j]*=m; } main() { int a[N][N],m,i,j; printf("**** the array ****\n"); for( i=0; i=3); printf("m=%4d\n", m); fun( a,m); printf(" the result \n"); for(i=0; istrlen(p)) p=a[i]; *max=p; } main() { char ss[10][81],*ps; int n,i=0; clrscr(); printf("enter string:\n"); 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("\nmax=%s\n",ps); } 44.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asdmklo,子字符串为as,则应输出6。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include "stdio.h" #include "string.h" #include "conio.h" /*注:由于小串中只有2个字符所以可用str[i]==sbustr[0]&&str[i+1]==substr[1]来判断小串是否与长串当前位置(str[i])相同(即出现一次)。因而只要让长串当前位置逐一向后移即可(用for()循环来完成)。*/ int fun(char *str,char *substr) { int i,n=0,s=strlen(str); for(i=0;i #include void fun (char *a,int n ,int h , int e) { int i,j=0; for(i=h;i< n-e ;i++) a[j++]=a[i]; a[j]= ‘\0’ ; } main() { FILE *wf; char s[81],*t,*f; char *p="****A*BC*DEF*G*******"; int m=0,tn=0, fn=0; printf("Enter a string :\n"); gets(s); t=f=s; while(*t) {t++;m++;} t-- ; while(*t=='*') {t--;tn++;} while(*f=='*') {f++;fn++;} fun( s, m, fn, tn); printf("The string after deleted:\n"); puts(s); wf=fopen("out.dat","w"); fun(p,21,4,7); fprintf(wf,"%s",p); fclose(wf); } 46.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #define N 16 typedef struct { char num[10]; int s ; }STRUC; void fun (STRUC a[]) { int i,j; STRUC t; for(i=1 ;i #include void fun ( char *ss) { int i; for(i=0;ss[i]!='\0';i++) { if(i%2 ==1&&ss[i]>='a' && ss[i]<='z') ss[i]= ss[i] -32; } } main() { FILE *wf; char tt[51],*s="abc4Efg"; printf("Please enter an character string within 50 characters:\n"); gets(tt); printf("\n\nAfter changing,the string\n %s",tt); fun(tt); printf("\nbecomes\n %s",tt); wf=fopen("out.dat","w"); fun(s); fprintf(wf,"%s",s); fclose(wf); } 48.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。 例如,当a=45,b=12,调用该函数后c=4152。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/ void fun ( int a, int b , long *c) { *c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10 ; } main() { int a,b; long c; printf(" input a, b: "); scanf("%d%d", &a,&b); fun(a,b,&c); printf(" the result is :%ld\n", c); } 49.请编写函数fun,其功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符C的ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的ASCII码值为奇数,在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是BDFl2345。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include void fun ( char *s, char t[ ]) { int i, j=0, n=strlen(s); for(i=0; i #include #include #define N 10 typedef struct ss { char num[10]; int s;} STU; /*只是采用的赋值方式不同。采用的是结构体元素对结构体元素赋值。*/ fun( STU a[], STU *s) { int i; *s=a[0]; for( i=1;i(*s).s) *s=a[i]; } main() { STU a[N]={ {"A01",81},{"A02",89},{"A03",66} ,{"A04",87},{"A05",77}, {"A06",90},{"A07",79},{"A08",61},{" ;A09",80},{"A10",71} }, m; int i; printf("**** the original data ****\n"); for(i=0;i #include /* 注:内嵌的for()循环用于判断是否是素数,在j #include /* 注:第一个for()循环用于让i成为第一个字符串的结束符的下标,要注意在这个for()后要有一个分号否则出错。第二个for()的作用是将第二个字符串一个一个字符依次放到第一个字符串的未尾。此外,还要注意最后一定要有p1[i]='\0';来给字符串加上结束符。*/ void fun(char p1[],char p2[]) {int i,j; for(i=0;p1[i];i++); for(j=0;p2[j];j++) p1[i++]=p2[j]; p1[i]='\0'; } main() { char s1[80],s2[80]; clrscr(); printf("Enter s1 and s2:\n"); scanf("%s%s",s1,s2); printf("s1=%s\n",s1); printf("s2=%s\n",s2); printf("Invoke fun(s1,s2):\n"); fun(s1,s2); printf("After invoking:\n"); printf("%s\n",s1); } 53.请编写函数fun,该函数的功能是:实现B=A+A’,即把矩阵A加上矩阵A的转置,存放在矩阵B中。计算结果在main函数中输出。 例如,输入下面的矩阵: 其转置矩阵为: 则程序输出: 1 2 3 l 4 7 2 6 10 4 5 6 + 2 5 8 = 6 10 14 7 8 9 3 6 9 10 14 18 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*本题没有先求出A的转置,而是直接利用转置的性质(即第一行作为转置后的第一列,第二行作为转置后的第二列,的行列互换的性质)。而且最后要求出两矩阵的相加后得出的新矩阵,由转置性质可知原a[j][i]转置后位置为a[i][j],在表达式:b[i][j]=a[i][j]+a[j][i]第一个a为A的元素,第二个a为A'的元素。*/ void fun(int a[3][3],int b[3][3]) {int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i]; } main() {int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; int i,j; clrscr(); fun(a,t); for(i=0;i<3;i++) {for(j=0;j<3;j++) printf("%7d",t[i][j]); printf("\n"); } } 54.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #define N 8 typedef struct { char num[10]; double s; } STRUC; double fun(STRUC *a, STRUC *b, int *n) { int i,j=0; double av=0.0; for(i=0;ih[j].s) {t=h[i]; h[i]=h[j]; h[j]=t;} for(i=0;i void fun (int (*s)[10], int *b, int *n, int mm, int nn) { int i,j,k=0; for(i=0;i #include void fun(char *a,char *p) { char *t=a; for(;t<=p;t++) if(*t!='*' ) *(a++)=*t; for(;*t!='\0' ;t++) *(a++)=*t; *a='\0'; } main() { FILE *wf; char h[81],*t,p[81]="****A*BC*DEF*G******"; printf("Enter a string:\n "); gets(h); t=h; while(*t) t++; t--; while(*t=='*') t--; fun(h,t); printf("The string after deleted:\n"); 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中。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #define N 16 typedef struct { char num[10]; int s ; }STRUC; int fun (STRUC *a, STRUC *b, int l, int h ) { int i,j=0; for(i=0;i=l && a[i].s<=h) b[j++]=a[i]; return j; } main () { FILE *wf; STRUC s[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}}; STRUC h[N],tt; FILE *out; int i, j, n, low, heigh, t; printf("Enter 2 integer number low & heigh: "); scanf("%d%d",&low,&heigh); if(heighh[j].s) {tt=h[i];h[i]=h[j];h[j]=tt;} for(i=0;i #include #include double fun(int n) { int sum,i;sum=0; for(i=0;i #include #define M 3 #define N 20 void fun(char a[M][N],char *b) { int i,j, k=0; for(i=0;i #define  N 80 int fun(int a[], int n) { int i, j=1; for(i=1;i # define N 50 # define M 11  void  fun(int *a, int *b) { int i,j; for(j=0;j=100) b[10]++; else b[a[i]/10]++; } double rnd() { static t=29,c=217,m=1024,r=0; r=(r*t+c)%m; return((double)r/m); } main() { FILE *wf; int age[N], i,d[M]; int b[N]={32,45,15,12,86,49,97,3,44,52,17,95,63}; for(i=0; i #include #define N 80 int fun(char *s) { int i,j=0; for(i=0;s[i]!='\0';i++) if(s[i]!=' '&&(s[i+1]==' '||s[i+1]=='\0')) j++; return j; } main() { FILE *wf; char line[N]; int num=0; printf("Enter a string:\n "); gets(line); num=fun(line); printf("The number of word is:%d\n\n ",num); wf=fopen("out.dat","w"); fprintf(wf,"%d",fun("a big car")); fclose(wf); } 63.请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。 例如,若主函数从键盘给n输入的值为856,则输出为sum=763。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include int fun(int n) { int s=0,i; for(i=2;i<=n-1;i++) if(n%i==0) s+=i; return s; } main() { int n,sum; printf("Input n: "); scanf("%d",&n); sum=fun(n); printf("sum=%d\n",sum); NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, n, sum ; rf = fopen("K:\\k1\\24000318\\in.dat","r") ; wf = fopen("K:\\k1\\24000318\\out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d", &n) ; sum = fun(n) ; fprintf(wf, "%d=%d\n", n, sum) ; } fclose(rf) ; fclose(wf) ; } 64.请编写函数fun,其功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符A的ASCII码值为奇数、…字符1的ASCII码值也为奇数、…都应当删除,其他依次类推。最后t所指的数组中的内容应是BDF24。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include void fun ( char *s, char t[ ]) { int i, j=0, n ; n=strlen(s); for(i=0; i #include /*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/ void fun ( int a, int b , long *c) { *c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10 ; } main() { int a,b; long c; printf(" input a, b: "); scanf("%d%d", &a,&b); fun(a,b,&c); printf(" the result is :%ld\n", c); } 66.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是ABCDEFG。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include  void  fun(char *a) { int i,j=0; for(i=0;a[i]!='\0';i++) if(a[i]!='*') a[j++]=a[i]; a[j]='\0'; } main() { FILE *wf; char s[81],*p="****A*BC*DEF*G*******"; printf("Enter a string:\n"); gets(s); fun(s); printf("The string after deleted:\n"); puts(s); wf=fopen("out.dat","w"); fun(p); fprintf(wf,"%s",p); fclose(wf); } 67.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数是strcmp)。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include #define N 16  typedef  struct { char num[10]; int s; }STRUC; STRUC fun(STRUC *a, char *b) { int i; STRUC str={"\0",-1}; for(i=0;i double fun(int n) { double t,sn=1.0; int i,j; for(i=1;i #include  double fun(int n) { int i; double s=0.0;  for(i=1;i<=n;i++) s= s+1.0/(i*(i+1)); return s; } main() { FILE *wf; printf("%f\n",fun(10)); wf=fopen("out.dat","w"); fprintf(wf,"%f",fun(10)); fclose(wf); } 71.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。 例如,当a=45,b=12,调用该函数后c=5142。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/ void fun ( int a, int b , long *c) { *c=(a%10)*1000+(b/10)*100+(a/10)*10+b%10 ; } main() { int a,b; long c; printf(" input a, b: "); scanf("%d%d", &a,&b); fun(a,b,&c); printf(" the result is :%ld\n", c); } 72.请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。 例如,当s所指字符串中的内容为ABCDEFGHIJK,则在t所指数组中的内容应是BDFHJ。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include void fun(char *s ,char t[]) { int i,j=0,k= strlen(s); for(i=1;i #include void fun (char *a, char *h, char *p) { int i=0; char *q=a ; while(q #include #include #define N 10 typedef struct ss { char num[10]; int s;} STREC; int fun (STREC *a, STREC *b) { int i,j=0, n=0, min ; min=a[0].s ; for (i=0 ; i void fun( int (*s)[10],int *b,int *n,int mm,int nn) { int i,j; for(j=0;j #include double fun(double x) { double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1; do {s0=s1; sum+=s0; t*=n; p*=(0.5-n+1)*x; s1=p/t; n++;}while(fabs(s1-s0)>1e-6); return sum; } main() { double x,s; printf("Input x: "); scanf("%lf",&x); s=fun(x); printf("s=%f\n",s); NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i ; double s, x ; rf = fopen("K:\\k1\\24000317\\in.dat","r") ; wf = fopen("K:\\k1\\24000317\\out.dat","w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%lf", &x) ; s = fun(x) ; fprintf(wf, "%lf\n", s) ; } fclose(rf) ; fclose(wf) ; } 77.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。 例如,当a=45,b=12,调用该函数后c=2514。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/ void fun ( int a, int b , long *c) { *c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10 ; } main() { int a,b; long c; printf(" input a, b: "); scanf("%d%d", &a,&b); fun(a,b,&c); printf(" the result is :%ld\n", c); } 78.请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 例如,若s所指字符串中的内容为ABCDEFGl2345,其中字符B的ASCII码值为偶数、…、字符2的ASCII码值为偶数、…都应当删除,其他依此类推。最后t所指的数组中的内容应是ACEGl35。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include void fun(char *s, char t[]) { int   i=0 ; for(;*s!='\0';s++) if(*s%2==1) t[i++]=*s;   t[i]='\0'; } main() { FILE *wf; char s[100],t[100]; printf("\nPlease enter string S: "); scanf("%s",s); fun(s,t); printf("\nThe result is :%s\n",t); wf=fopen("out.dat","w"); fun("ABCDEFG12345",t); fprintf(wf,"%s",t); fclose(wf); } 79.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include #define N 10 typedef struct ss { char num[10]; int s;} STU; /*这个题目中有一结构组数,要找的是数组元素中整型成员的值最小的元素。要注意本题中的赋值方式(分两部分,对于字符型成员只能用strcpy()函数,而不能用等号“=”进行赋(即不能用(*s).num=a[k].num),这与字符串的赋值相同(切记)。*/ fun( STU a[], STU *s) { int k,i; (*s).s=a[0].s; for( i=0;i #include #include #define N 5 /*只要能表示出左下半角的元素即可。*/ int fun( int a[][N], int n) { int i,j; for(i=0; i=3); printf("n=%4d \n", n); fun( a,n); printf( "**** the result ****\n"); for(i=0;i #include /*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/ void fun ( int a, int b , long *c) { *c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10 ; } main() { int a,b; long c; printf(" input a, b: "); scanf("%d%d", &a,&b); fun(a,b,&c); printf(" the result is :%ld\n", c); } 82.请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。 例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣  #include  float fun (float *a, int n) { float av=0.0;   int i; for(i=0;i #include void fun (char *a ) { while(*a!='\0') a++; a--; while(*a=='*') a--; *(a+1)='\0'; } main() { FILE *wf; char s[81],*t="****A*BC*DEF*G*******"; printf("Enter a string :\n"); gets(s); fun(s); printf("The string after deleted:\n"); puts(s); wf=fopen("out.dat","w"); fun(t); fprintf(wf,"%s",t); fclose(wf); } 84.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。 例如,当a=45,b=12,调用该函数后c=1524。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用10对它求余得到个位数上的数,将它除10得到十位数上的数。*/ void fun ( int a, int b , long *c) { *c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10 ; } main() { int a,b; long c; printf(" input a, b: "); scanf("%d%d", &a,&b); fun(a,b,&c); printf(" the result is :%ld\n", c); } 85.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 例如,若学生的成绩是85,76,69,85,91,72,64,87;则平均分应当是78.625。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #define N 8 struct slist { double s; struct slist *next; }; typedef struct slist STRUC; double fun(STRUC *h) { double av=0.0; STRUC *p= h->next; while(p!=NULL) {av=av+ p->s ; p=p->next; }   return av/N; } STRUC *creat(double *s) { STRUC *h,*p,*q; int i=0; h=p=( STRUC*)malloc(sizeof(STRUC)); p->s=0; while(is=s[i];i++;p->next=q;p=q; } p->next=0; return h; } outlist(STRUC *h) { STRUC *p; p=h->next; printf("head "); do {printf("->%4.1f ",p->s); p=p->next; } while(p!=0); } main() { FILE *wf; double s[N]={85,76,69,85,91,72,64,87},ave; STRUC *h; h=creat(s); outlist(h); ave=fun(h); printf("ave=%6.3f\n ",ave); wf=fopen("out.dat","w"); fprintf(wf,"%6.3f",ave); fclose(wf); } 86.请编写函数fun,其功能是:计算并输出给定10个数的方差: 例如,给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,则输出为S=11.730729。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include double fun(double x[10]) { double x1=0.0,  s=0.0 ; int i; for(i=0;i<10;i++) x1=x1+x[i];   x1=x1/10; for(i=0;i<10;i++) s=s+(x[i]-x1)*(x[i]-x1); return   sqrt(s/10) ; } main() { FILE *wf; double s,x[10]={95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0}; int i; printf("\nThe original data is:\n"); for(i=0;i<10;i++) printf("%6.1f ",x[i]); printf("\n\n "); s=fun(x); printf("s=%f\n\n ",s); wf=fopen("out.dat","w"); fprintf(wf,"%f",s); fclose(wf); } 87.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。 例如,当a=45,b=12,调用该函数后c=4251。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include /*本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,用1 0对它求余得到个位数上的数,将它除10得到十位数上的数。*/ void fun(int a, int b, long *c) { int i,j,k,n; i=a%10; j=a/10; k=b%10; n=b/10; *c=j*1000+k*100+i*10+n; } main() { int a,b; long c; printf(" input a, b: "); scanf("%d%d", &a,&b); fun(a,b,&c); printf(" the result is :%ld\n", c); } 88.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。 例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include void fun (char *a) { int i=0; char *p=a ; while(*p&&*p=='*') { a[i]=*p; i++; p++;} while(*p) {if(*p!=’*’) {a[i]=*p; i++; } p++; } a[i]= '\0'; } main() { FILE *wf; char s[81],*t="****A*BC*DEF*G*******"; printf("Enter a string :\n"); gets(s); fun(s); printf("The string after deleted:\n"); puts(s); wf=fopen("out.dat","w"); fun(t); fprintf(wf,"%s",t); fclose(wf); } 89.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include # define N 12 typedef struct { char num[10]; double s; } STRUC; double fun (STRUC *a,STRUC *b, int *n) { int i; double av= 0.0 ; *n=0; for(i=0;i1&&n<=100) {for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i); } return sum; } main() { int n; double s; printf("\\nInput n: "); scanf("%d",&n); s=fun(n); printf("\\ns=%f\\n",s); NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen("bc.in", "r") ; wf = fopen("bc.out", "w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d", &n) ; s = fun(n) ; fprintf(wf, "%lf\\n", s) ; } fclose(rf) ; fclose(wf) ; } 91.请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。 例如,当a=45,b=12,调用该函数后c=5241。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include void fun(int a, int b, long *c) { *c= a/10*10+a%10*1000+b/10+b%10*100; } main() { int a,b; long c; clrscr(); printf("Input a, b:"); scanf("%d%d", &a, &b); fun(a, b, &c); printf("The result is: %ld\n", c); NONO(); } NONO ( ) {/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */ FILE *rf, *wf int i, a,b long c rf = fopen("in1.dat", "r") wf = fopen("bc08.dat","w") for(i = 0 i < 10 i++) { fscanf(rf, "%d,%d", &a, &b) fun(a, b, &c) fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) } fclose(rf) fclose(wf) } 92.请编写函数fun,它的功能是计算:s=(ln(1)+ln(2)+1n(3)+…+ln(m))0.5 s作为函数值返回。 在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是:double log(double x)。 例如,若m的值为20,则fun函数值为6.506583。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include double fun(int m) {double i;double r,s; double log(double i); for(i=1;i<=m;i++) {r=r+log(i);} return (sqrt(r)); } main() {clrscr(); printf("%f\n",fun(20)); } 93.请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当n=10,x=0.3时,函数值为1.349859。 S = 1+x+++……+ ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include #include double fun( double x, int n) { int i; float p=1; long q=1; double t,s=1.0; for( i=1; i<=n; i++) { p*=x; q*=i; t=p/q; s+=t; } return s; } main() { printf("%f\n", fun(0.3,10)); } 94.规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。 例如,若字符串中的内容为*******A*BC*DEF*G****,删除后,字符串中的内容则应当是A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include void fun (char *a) { char *p=a; while(*p=='*') p++ ;  for(;*p!='\0';p++,a++)  *a=*p ; *a='\0'; } main() { FILE *wf; char s[81],*t="****A*BC*DEF*G*******"; printf("Enter a string :\n"); gets(s); fun(s); printf("The string after deleted:\n");puts(s); wf=fopen("out.dat","w"); fun(t); fprintf(wf,"%s",t); fclose(wf); } 95.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。 例如,若字符串中的内容为*******A*BC*DEF*G****,假设n的值为4,删除后,字符串中的内容则应当是****A*BC*DEF*G****;若n的值为8,则字符串中的内容仍为*******A*BC*DEF*G****。n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include #include void fun(char *a,int n ) { int i=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]='\0'; } } main() { FILE *wf; char s[81],*t="****A*BC*DEF*G*******"; int n; printf("Enter a string : \n"); gets(s); printf("Enter n : "); scanf("%d", &n); fun(s, n); printf("The string after deleted: \n"); puts(s); wf=fopen("out.dat","w"); fun(t,2); fprintf(wf,"%s",t); fclose(wf); } 96.请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。 例如,若给定数组中的9个元素依次为12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0、11.0,则输出应为s=35.951014。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; for (i=0;i<8;i++) {avg=(x[i]+x[i+1])/2; sum+=sqrt(avg); } return sum; } main() { double s,a[9]={12.0,34.0,4.0,23.0,34.0,45.0,18.0,3.0,11.0}; int i; printf("\\nThe original data is :\\n"); for(i=0;i<9;i++)printf("%6.1f",a[i]); printf("\\n\\n"); s=fun(a); printf("s=%f\\n\\n",s); NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int i, j ; double s, a[9] ; rf = fopen("bc.in", "r") ; wf = fopen("bc.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\\n", s) ; } fclose(rf) ; fclose(wf) ; } 97.请编写函数fun,其功能是:计算并输出下列多项式值: 例如,若主函数从键盘给n输入50后,则输出为S=1.960784。 s=1+1/(1+2)+1/(1+2+3)+..1/(1+2+3...+50) ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣  #include  double fun(int n) { int i; double s=0.0,s1=0.0; for(i=1;i<=n;i++) {  s1=s1+i ; s=s+1.0/s1; } return s; } main() { FILE *wf; int n; double s; printf("\nInput n: "); scanf("%d",&n); s=fun(n); printf("\n\ns=%f\n\n",s); wf=fopen("out.dat","w"); fprintf(wf,"%f",fun(50)); fclose(wf); } 98.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 例如,若主函数从键盘给n输入20后,则输出为s=0.583333。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include double fun(int n) { int i; double sum=0.0; if(n>0&&n<=100) {for (i=1;i<=n;i++) if(i%5==0||i%9==0) sum+=1.0/i; } return sum; } main() { int n; double s; printf("\\nInput n: "); scanf("%d",&n); s=fun(n); printf("\\n\\ns=%f\\n",s); NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen("bc.in", "r") ; wf = fopen("bc.out", "w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d", &n) ; s = fun(n) ; fprintf(wf, "%lf\\n", s) ; } fclose(rf) ; fclose(wf) ; } 99.请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。 例如,若主函数从键盘给n输入100后,则输出为sum=148.874270。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include double fun(int n) { int i,j=0; double s=0; for (i=3;i<=n;i++) { for (j=2;jif (i%j==0) break; if (j==i) s=s+sqrt(i); } return s; } main() { int n; double sum; printf("\\n\\nInput n: "); scanf("%d",&n); sum=fun(n); printf("\\n\\nsum=%f\\n\\n",sum); NONO(); } NONO() {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数,输出数据,关闭文件。 */ FILE *rf, *wf ; int n, i ; double s ; rf = fopen("bc.in", "r") ; wf = fopen("bc.out", "w") ; for(i = 0 ; i < 10 ; i++) { fscanf(rf, "%d", &n) ; s = fun(n) ; fprintf(wf, "%lf\\n", s) ; } fclose(rf) ; fclose(wf) ; } 100.请编写函数fun,其功能是:计算并输出 S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+(1+2^0.5+3^0.5+……+n^0.5) 例如,若主函数从键盘给n输入20后,则输出为s=534.188884。 ♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣♣ #include  #include   double fun(int n) { int i; double s=0.0,s1=0.0; for(i=1;i<=n; i++ ) {s1=s1+pow(i,0.5); s=s+s1; } return s; } main() { FILE *wf; int n; double s; printf("\n\nInput n: "); scanf(" %d ",&n); s=fun(n); printf("\n\ns=%f\n\n",s); wf=fopen("out.dat","w"); fprintf(wf,"%f",fun(20)); fclose(wf); } 附录 1.关键字: auto break case char continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void while 2.运算符的优先级和结合性 优先级 运算符 运算符功能 运算类型 最高 15 ( ) [ ] -> . 圆括号、函数参数表 数组元素下标 指向结构体成员 结构体成员 14 ! ~ ++、-- + - * & (类型名) sizeof 逻辑非 按位取反 自加1、自减1 求正 求负 间接运算符 求地址运算符 强制类型转换 求所占字节数 单目运算 13 *、/、% 乘、除、整数求余 双目算术运算 12 +、- 加、减 双目算术运算 11 <<、>> 左移、右移 移位运算 10 <、<=、>、>= 小于、小于等于、大于、大于等于 关系运算 9 ==、!= 等于、不等 关系运算 8 & 按位与 位运算 7 ^ 按位异或 位运算 6 | 按位或 位运算 5 && 逻辑与 逻辑运算 4 || 逻辑或 逻辑运算 3 ?: 条件运算 三目运算 2 =、+=、-=、*=、 /=、%=、&=、^=、 |=、<<=、>>= 赋值、运算且赋值 双目运算 最低1 , 顺序求值 顺序运算 其中,2、3、14的结合性为从右至左,其余为从左至右。

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。