1、第一套:1.1 填空 给定程序中,函数 fun 的功能是:将形参 n 所指变量中,各位上为偶函数的数去除,剩余的书按原来从高位到低位的顺序组成一个新的数,并通过形参指针 n 传回所指变量。void fun(unsigned long *n) unsigned long x=0, i; int t;i=1;while(*n)/*found*/ t=*n % 10 ;/*found*/if(t%2!= 0) x=x+t*i; i=i*10; *n =*n /10; /*found*/*n=x; 1.2 改错 给定程序 MODI1.C 中函数 fun 的功能是:计算 n!。double fun (
2、int n ) double result = 1.0 ;/*found*/if (n = 0)return 1.0 ;while( n 1 for(i=0,j=0; si!=0; i+)if(si=0 for(i=1; idata=rand()%m; s-next=p-next;p-next=s; p=p-next; /*found*/return h;3.3 程序 请编写函数 fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 (有问题)int fun( char *s) i
3、nt k = 1 ;while(*s) if (*s = ) k+ ;s+ ; return k ; 第四套:4.1 填空 程序通过定义学生结构体变量,存储了学生的学号、姓名和 3 门课的成绩。所有学生数据均以二进制方式输出到文件中。函数 fun 的功能是从形参 filename 所指的文件中读入学生数据,并按照学号从小到大排列后,再用二进制方式把排序后的学生数据输出到filename 所指的文件中,覆盖原来的文件内容。#define N 5typedef struct student long sno;char name10;float score3; STU;void fun(char *
4、filename) FILE *fp; int i, j;STU sN, t;/*found*/fp = fopen(filename, “rb“);fread(s, sizeof(STU), N, fp);fclose(fp);for (i=0; isj.sno) t = si; si = sj; sj = t; fp = fopen(filename, “wb“);/*found*/fwrite(s, sizeof(STU), N, fp);fclose(fp);4.2 改错 给定程序 MODI1.C 中函数 fun 的功能是:在字符串的最前端假如 n 个* 号,形成新串,并且覆盖原串。注
5、意:字符串的长度最长允许为 79。void fun ( char s, int n ) char a80 , *p;int i;/*found*/p=s;for(i=0; i 10) bM - 1+ ; else bj+ ; 第五套:5.1 填空 给定程序中,函数 fun 的功能是将参数给定的字符串、整数、浮点数写到文本文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数 atoi 和 atof 将字符串转换成响应的整数、浮点数,然后将其显示在屏幕上。void fun(char *s, int a, double f)/*found*/FILE * fp;char str100, str
6、1100, str2100;int a1; double f1;fp = fopen(“file1.txt“, “w“);fprintf(fp, “%s %d %fn“, s, a, f);/*found*/fclose(fp) ;fp = fopen(“file1.txt“, “r“);/*found*/fscanf(fp,“%s%s%s“, str, str1, str2);fclose(fp);a1 = atoi(str1);f1 = atof(str2);printf(“nThe result :nn%s %d %fn“, str, a1, f1);5.2 改错 给定程序 MODI1.
7、C 中函数 fun 的功能是:对 N 名学生的学习成绩按从高到低的顺序找出前 m(10)名学生出来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首笛子作为函数值返回。typedef struct ss char num10;int s; STU;STU *fun(STU a, int m) STU bN, *t;int i,j,k;/*found*/t=(STU *)calloc(sizeof(STU),m);for(i=0; i bj.s) j=i;/*found*/tk=bj;bj.s=0; return t;5.3 程序 请编写函数 fun,函数的功能是:删去一维数组中所
8、有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是:2 3 4 5 6 7 8 9 10。int fun(int a, int n) int i, j = 1, k = a0 ;for(i = 1 ; i sl) return t;else return s;6.3 程序 请编写函数 fun 函数的功能是:移动字符串中的内容,移动的规则如下:把第 1到第 m 个字符,平移到字符串的最后,把第 m+1 到最后的字符移动到字
9、符串的前部。例如,字符串中原由的内容为:ABCDEFGHIJK,m 的值为 3,则移动后,字符串中的内容应该是 DEFGHIJKABC。void fun1(char *w) /* 本函数的功能是将字符串中字符循环左移一个位置 */ int i; char t;t=w0;for(i=0;iam) m=k;t=ai;ai=am;am=t; 7.3 程序 请编写一个函数 unsigned fun (unsigned w),w 是一个大于 10 的无符号整数,若w 是 n( 2 )位的整数,函数求出的 w 的低 n-1 位的数作为函数值返回。例如:W 值为5923,则函数返回 923;W 值位 923
10、 则函数返回 23。unsigned fun ( unsigned w ) if(w10000) w %= 10000 ;else if(w1000) w %= 1000 ;else if(w100) w %= 100 ;else if(w10) w %=10 ;return w ;第八套:8.1 填空 给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和 3 门课的成绩。函数 fun 的功能是将该学生的各科成绩都乘以一个系数 a。void show(STU tt) int i;printf(“%d %s : “,tt.num,tt.name);for(i=0; isco
11、rei *=a; 8.2 改错 给定程序 MODI1.C 中的函数 fun 的功能是:求 k!(k 0)return (k*fun(k-1);/*found*/else if ( k=0 )return 1L;8.3 程序 程序定义了 NN 的二维数组,并在主函数中自动赋值。请编写函数 fun(int a,int n),函数的功能是:使数组左下三角元素中的值乘以 n。例如:若 n 的值为 3,a 数组中的值为 则返回主程序后 a 数组中的值应为 。int fun ( int aN, int n ) int i, j;for(i = 0 ; i next ;/*found*/while (q)
12、if (p-data q-data) t = p-data; p-data = q-data; q-data = t; q = q-next; /*found*/p = p-next ; 9.2 改错 给定程序 MODI1.C 中函数 fun 的功能是:将 s 所指字符串中的字母转换为按字母序列的后续字母(但 Z 转换为 A,z 转换为 a) ,其他字符不变。void fun (char *s)/*found*/while(*s) if(*s=A /*found*/if (p=0) return;q = p-next;p-next = NULL;while (q) r = q-next; q-
13、next = p;/*found*/p = q; q = r; h-next = p; 11.2 改错给定程序 MODI1.C 中函数 fun 的功能是:计算 s 所指字符串中含有 t 所指字符串的数目,并作为函数值返回。int fun(char *s, char *t) int n;char *p , *r;n=0;while ( *s ) p=s;/*found*/r=t;while(*r)if(*r=*p) r+; p+; else break;/*found*/if(*r= 0)n+;s+; return n;11.3 程序 fun 函数功能:将放在字符串数组中的 M 个字符串(每串的
14、长度不超过 N) ,将顺序合并组成一个新的字符串。函数 fun 中给出的语句仅供参考。例如,字符串数组中的M 个字符串为 AAAA BBBBBBB CCC 则合并后的字符串的内容应是:AAAABBBBBBBCCC。提示:strcat(a,b)功能是将字符串 b 复制到字符串 a 的串尾上,成为一个新串。void fun(char aMN, char *b) /* 以下代码仅供参考 */int i; *b=0;for(i = 0 ; i next;p-next = NULL;while (q) /*found*/r = q-next;q-next = p;p = q;/*found*/q = r
15、 ; return p;12.2 改错 给定程序 MODI1.C 中函数 fun 的功能是:计算 s 所指字符串中位于奇数位置的字符或 ASCII 码为偶数的字符放入 t 所指数组中(规定第一个字符放在第 0 位中) 。例如:字符串中的数据为:AABBCCDDDEEFF,则输出应当是:ABBCDDEFF。void fun(char *s, char t) int i, j=0;for(i=0; inext ;while (p) /*found*/q = p-next ;while (q) /*found*/if (p-data = q-data) t = p-data; p-data = q-
16、data; q-data = t; q = q-next; p = p-next; 13.2 改错 给定程序 MODI1.C 是建立一个带头节点的单向链表,并用随机函数为个节点数据域赋值。函数 fun 的作用是求出单向链表节点(不包括头节点)数据域中的最大值,并且作为函数值返回。typedef struct aa int data;struct aa *next; NODE;fun ( NODE *h ) int max=-1;NODE *p;/*found*/p=h-next;while(p) if(p-datamax )max=p-data;/*found*/p=p-next; retur
17、n max; 13.3 程序程序定义了 MN 的二维数组中数据,按行的顺序依次放到一维数组中。一维数组中数据的个数放在形参 n 所指的存储单元中。例如:二维数组中的数据为 则一维数组中为:33 33 33 33 44 44 44 44 55 55 55 55。void fun(int (*s)10, int *b, int *n, int mm, int nn) int i, j, k ;for(i = 0 ; i next;while(p) if(p-data%2=0)sum +=p-data;/*found*/p=p-next; return sum;14.3 程序 编写函数 fun,函数
18、功能:判断字符串是否为回文?若是,函数返回 1,主函数输出:YES,否则返回 0,主函数输出 NO。回文是指顺读和倒读都一样的字符串。 例如:字符串 LEVEL 是回文,而字符串 123312 就不是回文。#define N 80int fun(char *str) int i, j = strlen(str) ;for(i = 0 ; i =0) STREC *p;p=h-next;while(p) if(p-smax )max=p-s;p=p-next; return max; 第十六套:16.1 填空 给定程序中函数 fun 的功能:求出行参 ss 所指字符串中最长的字符串的长度,将其余
19、的字符串右边用字符*补齐,使其与最长的字符串等长。ss 所指字符串数组中共有M 个字符串,且长度小于 N。void fun(char (*ss)N) int i, j, n, len=0;for(i=0; in)n=len;for(i=0; i 0) t = ai; ai = aj; aj = t; 17.2 改错 在所指定的字符串找出 ASCII 码值最大的字符,将其放在第一个位置上;并将该字符向后顺序移动。例如:ABCDeFGH 调用后 eABCDFGH。fun( char *p ) char max,*q; int i=0;max=pi;while( pi!=0 ) if( maxp )
20、 *q=*(q-1);q-;p0=max;17.3 程序 编写函数 fun,其功能:把指定分数范围内的学生数据放在 b 所指的数组中,分数范围内的学生人数由函数值返回。 例如:输入 60 69 则应把分数在 60-69 的学生数据进行输出,包括 60 分和 69 分的学生数据。主函数中把 60 放在 low 中,把 69 放在 heigh 中。#define N 16typedef struct char num10;int s; STREC;int fun( STREC *a,STREC *b,int l, int h ) int i,j = 0 ;for(i = 0 ; i = l str
21、cpy(a-name, “LiSi“);/*found*/for (i=0; iscorei += 1;/*found*/return a ;19.2 改错 Fun 功能:从 N 个字符串中找出最长的那个串,并将其地址作为函数值返回。各zfc 在主函数中输入,并存放在一个 zfc 数组中。#define N 5#define M 81/*found*/char *fun(char (*sq)M) int i; char *sp;sp=sq0;for(i=0;i= 0)numi+; 20.3 程序 函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:二维数组
22、为 则函数值为 61。#define M 4#define N 5int fun ( int aMN ) int tot = 0, i, j ;for(i = 0 ; i av )/*found*/yj+=xi; xi=-1;for(i=0; i/*found*/upfst ( char *p ) int k=0;for ( ; *p; p+ )if ( k ) if ( *p = ) k = 0; else if ( *p != ) k = 1; *p = toupper( *p ); 21.3 程序 求出数组周边元素 depjz 并作为 hansz 返回主函数中的 s 例如: a 数组中的
23、值为 主程序 s 的值为 3.375。#define N 5double fun ( int wN ) int i, j, n=0;double sum=0;for ( i =0; iai )/*found*/p=i;if ( p!=j ) t = aj; aj = ap; ap = t; 22.3 程序 将两个两位的正整数 a,b 合并成一个整数放在 c 中。合并方式是:将 a 数的十位和个位依次放在 c 数 de 个位和百位上,b 数的十位和个位数依次放在 c 数的十位和千位上。例如, 当 a=45,b=12 时,调用该函数后 c=2514。void fun(int a, int b, l
24、ong *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“, fun(a, b, printf(“The result is: %ldn“, c);NONO();第二十三套:23.1 填空 找出 NN 矩阵中每列元素的最大值,并按顺序依次存放于行参 b 所指的一维数组中。#define N 4void fun(int (*a)N, int *b) int i,j;for(i=0; i/*found*/int fun(int *x,int
25、 *y) int t;/*found*/t=*x;*x=*y;*y=t;23.3 程序 求出小于或等于 lim 的所有素数并放在 aa 数组中,函数返回所求出的素数的个数。#define MAX 100int fun(int lim, int aaMAX) /* 以下代码仅供参考 */int i,j,k=0;/* 其中变量 k 用于统计素数个数 */for(i=2;i (i/2) aak+ = i; return k; 第二十四套:24.1 填空 函数 fun 功能是将行参 a 中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。例如 a 的数据中 学号、姓名、和三门的成绩是:100
26、01 、 “zhangsan”、95、 80、 88,修改后输出 t 中的数据应为:10002、 “LiSi”、96、81 、89。struct student long sno;char name10;float score3;/*found*/struct student fun(struct student a) int i;a.sno = 10002;/*found*/strcpy(a.name, “LiSi“);/*found*/for (i=0; i ai.s) j = 0 ; bj+ = ai ; min = ai.s ; else if(min = ai.s)bj+ = ai
27、; return j ;第二十五套:25.1 填空 人员的记录由编号和出生年月日组成。编号唯一。找出指定编号人员的数据,作为函数值返回,由主函数输出,若制定编号不存在,返回数据中的编号为空串。#define N 8typedef struct char num10;int year,month,day ;STU;/*found*/STU fun(STU *std, char *num) int i; STU a=“,9999,99,99;for (i=0; i#include void fun(char *s, char t) int i, j = 0 ;for(i = 0 ; i next;
28、if (p!=NULL) q=p-next;while(q!=NULL) if (p-data=q-data) p-next=q-next;/*found*/free(q);/*found*/q=p-next; else p=q;/*found*/q=q-next; 26.2 改错 用选择法对数组中的 n 个元素按从小到大的顺序进行排序。#define N 20void fun(int a, int n) int i, j, t, p;for (j = 0 ;j =eps) s+=t; n+; t=t*n/(2.0*n+1); return (s*2.0); 第二十八套:28.1 填空 统计形
29、参 s 所指字符串中数字字符出现的次数,并放在形参 t 所指的变量中,最后在函数中输出。例如:形参 s 所指的字符串为:abcdef35adgh3kjsd7. 结果输出:4。void fun(char *s, int *t) int i, n;n=0;/*found*/for(i=0; si !=NULL; i+)/*found*/if(si=0char name10;float score3;void fun( struct student *b) int i;/*found*/b-sno = 10004;/*found*/strcpy(b-name, “LiJie“);main() str
30、uct student t=10002,“ZhangQi“, 93, 85, 87;int i;printf(“nnThe original data :n“);printf(“nNo: %ld Name: %snScores: “,t.sno, t.name);for (i=0; i0.00001 )y=fun(a,x1);else y=x1;return y; 29.3 程序 学生的记录由学好和成绩组成, N 名学生的数据放在主函数中结构体数组 s 中,编写函数,把高于等于平均分的学生数据放在 b 所指的数组中,把高于或等于平均分的学生人数通过形参 n 传回,pjf 通过函数值返回。#de
31、fine N 12typedef struct char num10;double s; STREC;double fun( STREC *a, STREC *b, int *n ) double t=0 ;int i ;*n = 0 ;for(i = 0 ; i t) b(*n)+ = ai ;return t ;第三十套:30.1 填空 函数 fun 功能是将行参 a 所指结构体变量中数据赋给函数中的结构体变量 b,并进行修改 b 中的学号和姓名,最后输出修改后的数据。 例如 a 所指变量中 学号、姓名、和三门的成绩是:10001、 “ZhangSan”、93、80、88,修改后输出 b
32、中的数据应为:10002、 “LiSi”、95、80 、88。struct student long sno;char name10;float score3;void fun(struct student a) struct student b; int i;/*found*/b = a;b.sno = 10002;/*found*/strcpy(b.name, “LiSi“);printf(“nThe data after modified :n“);printf(“nNo: %ld Name: %snScores: “,b.sno, b.name);/*found*/for (i=0; i0;n-) /* 在串尾补 n 个* */*q+=*;*q=0; 第三十一套:31.1 填空 对形参 s 所指字符串中下表为奇数的字符按 ASCII 码大小递增排序,并将排序后下标为奇数的字符取出,存入形参 p 所指字符数组中,形成一个新串。例如,行参 s 所指的字符串为:baawrakjghzlicda,执行后 p 所指字符数组中的字符串应为:aachjlsw 。#include void fun(char *s, char *p)