tot += a[i][0] ;
tot += a[i][N-1] ; } return tot ;} 第二十一套:
21.1 填空 计算行参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据以至x所指数组的后部,平均值作为函数值返回,在主函数输出平均值和移动后的数据。例如:有10个正数:46 30 32 40 6 17 45 15 48 26 平均值:30.5移动后输出: 46 32 40 45 48 30 6 17 15 26。 #define N 10 double fun(double *x)
{ int i, j; double s, av, y[N]; s=0;
for(i=0; i for(i=j=0; i /**********found**********/ y[j++]=x[i]; x[i]=-1;} for(i=0; i /**********found**********/ if( x[i]!= -1) y[j++]=x[i]; for(i=0; i 21.2 改错 读入一个英文文本本行,将其中每个单词的第一个字母改写成大写,然后输出次文本行(这里的“单词”是指由空格阁开的字符串)。 例如 输入: I am a student to take the examination, 输出: I Am A Student To Take The Examination。 /************found************/ #include /************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 数组中的值为 主程序s的值为3.375。 #define N 5 double fun ( int w[][N] ) { int i, j, n=0; double sum=0; for ( i =0; i sum+=w[0][i]+w[N-1][i]; n+=2; } for ( i =1; i return sum/n;} 第二十二套: 22.1填空 将自然数1----10以及他们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。 int fun(char *fname ) { FILE *fp; int i,n; float x; if((fp=fopen(fname, \ return 0; for(i=1;i<=10;i++) /**********found**********/ fprintf(fp,\ printf(\!\\n\/**********found**********/ fclose(fp); printf(\/**********found**********/ if((fp=fopen(fname,\ return 0; fscanf(fp,\ while(!feof(fp)) { printf(\ fscanf(fp,\ } fclose(fp); return 1;} 22.2 改错 Fun的功能:将n个无序整数从小到大排序。 fun ( int n, int *a ) { int i, j, p, t; for ( j = 0; j { p = j; /************found************/ for ( i=j+1; i /************found************/ p=i; if ( p!=j ) { t = a[j]; a[j] = a[p]; a[p] = t; } }} 22.3程序 将两个两位的正整数a,b合并成一个整数放在c中。合并方式是:将a数的十位和个位依次放在c数de个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。例如, 当a=45,b=12时,调用该函数后c=2514。 void fun(int a, int b, long *c) { *c=(b)*1000+(a)*100+(b/10)*10+(a/10);} main() { int a,b; long c; printf(\ scanf(\ fun(a, b, &c); printf(\ NONO();} 第二十三套: 23.1填空 找出N×N矩阵中每列元素的最大值,并按顺序依次存放于行参b所指的一维数组中。 #define N 4 void fun(int (*a)[N], int *b) { int i,j; for(i=0; i /**********found**********/ b[i]= a[0][i]; for(j=1; j /**********found**********/ if(b[i] < a[j][i]) b[i]=a[j][i]; }} 23.2改错 交换主函数中两个变量的值。例如:若变量a中的值原为8,b中的值为3。程序运行后a的值为3,b中的值为8。 #include /*********found**********/ int fun(int *x,int *y) { int t; /*********found**********/ t=*x;*x=*y;*y=t;} 23.3程序 求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。 #define MAX 100 int fun(int lim, int aa[MAX]) { /* 以下代码仅供参考 */ int i,j,k=0; /* 其中变量k用于统计素数个数 */ for(i=2;i<=lim;i++) { /* 以下完成判断aa数组中小于或等于lim的素数并统计个数 */ for(j = 2 ; j <= (i/2) ; j++) if(i % j == 0) break; if(j > (i/2)) aa[k++] = i; } return k; } 第二十四套: 24.1填空 函数fun功能是将行参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。例如a的数据中 学号、姓名、和三门的成绩是:10001、“zhangsan”、95、80、88,修改后输出t中的数据应为:10002、“LiSi”、96、81、89。 struct student { long sno; char name[10]; float score[3];}; /**********found**********/ struct student fun(struct student a) { int i; a.sno = 10002; /**********found**********/ strcpy(a.name, \ /**********found**********/ for (i=0; i<3; i++) a.score[i]+= 1; return a;} 24.2改错 删除数列中值为x 的元素。n中存放的是数列中元素的个数。 #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; else { for(i=p;i /**********found**********/ a[i]=a[i+1]; return n-1; }} 24.3程序 把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数。 #define N 16 typedef struct { char num[10]; int s; } STREC; int fun( STREC *a, STREC *b ) { int i, j = 0, min=a[0].s ; for(i = 0 ; i < N; i++) { if(min > a[i].s) { j = 0 ; b[j++] = a[i] ; min = a[i].s ; } else if(min == a[i].s) b[j++] = a[i] ; } return j ;} 第二十五套: 25.1填空 人员的记录由编号和出生年月日组成。编号唯一。找出指定编号人员的数据,作为函数值返回,由主函数输出,若制定编号不存在,返回数据中的编号为空串。 #define N 8 typedef struct { char num[10]; int year,month,day ; }STU; /**********found**********/ STU fun(STU *std, char *num) { int i; STU a={\ for (i=0; i /**********found**********/ if( strcmp(std[i].num,num)==0 ) /**********found**********/ return (std[i]); return a;} 25.2改错 从s所指zfc中,找出与t所指字符串相同的子串的个数作为函数值返回。例如,当s所指字符串中的内容为:“abcdabfab”,t所指字符串内容为:“ab”,则函数返回整数3。 int fun (char *s, char *t) { int n; char *p , *r; n = 0; while ( *s ) { p = s; r = t; while ( *r ) if ( *r == *p ) { /************found************/ r++; p++; } else break; /************found************/ if ( *r == 0 ) n++; s++; } return n;} 25.3程序 将s所指zfc中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指zfc中de内容为:“ABCDEFG12345”,其中字符B的ASCII码值为偶数、…..都该删除,其他依次类推。最后t所指的数组中的内容为:“ACEG135”。 #include #include void fun(char *s, char t[]) { int i, j = 0 ; for(i = 0 ; i < strlen(s); i++) if(s[i] % 2) t[j++] = s[i] ; t[j] = 0 ;} 第二十六套: 26.1填空 给定程序中已建立一个带有头结点的单向链表,链表中的各节点按数据域递增有序链接。函数功能:删除链表中数据域值相同结点,使之只保留一个。 #define N 8 typedef struct list