t[j]=s[i]; j++; }
t[j]=‘\\0’; }
32: 第32题 请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。 答案:
void fun(char *s,char t[]) {
int I,j=0,n; n=strlen(s); for(i=0;I,n;i++) if(i%2!=0&&s[i]%2!=0) {
t[j]=s[i]; j++; }
t[j]=‘\\0’; }
33: 第33题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。 答案:
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--; }
16
t++; if(k>n) {
while (*p&&p<t+n) { a[i]=*p; i++; p++; }
a[i]=‘\\0’; } }
34: 第34题 学生的记录由学号和成绩组成,n名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 答案:
int fun (STREC *a, STREC *b) {
int I,j=0,n=0, max; max=a[0].s; for(i=0;i<N;i++) if(a[i].s>max) max=a[i].s; for(i=0;i<N;i++) if(a[i].s==max) {
*(b+j)=a[i]; j++; n++; }
return n; }
35: 第35题 请编写一个函数,用来删除字符串中的所有空格。 答案:
void fun(char *str) { int i=0;
17
char *p=str; while (*p) {
if(*p!=‘’) {
str[i]=*p; i++; } p++; }
str[i]=‘\\0’; }
36: 第36题 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。 答案:
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’; }
18
37: 第37题 某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。 答案:
void fun(STREC *p) {
double av=0.0; int i:
for(i=0;i<N;i++) av+=p->s[i]; av/=N; p->ave=av; }
38: 第38题 请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 答案:
int fun(char *ss, char c) { int n=0; while (*ss) {
if(*ss==c) n++; ss++; }
return n; }
39: 第39题 请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。 答案:
void fun(int *w, int p, int n) {
int b[N], i, j=0; for(i=0;i<=p;i++) {
b[i]=w[i];
19
j++; }
for(i=0;i<=p;i++) {
w[j]=b[i]; j++; } }
40: 第40题 请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 答案:
void fun(char *w,int m) {
char b[N]; int I,j=0; for(i=0;i<m;i++) {
b[j]=w[i]; j++; }
for (i=0;i<strlen(w)-m;i++) w[i]=w[i+m]; for(j=0;j<m;j++) {
w[i]=b[j]; i++; }
w[i]=‘\\0’; }
41: 第41题 请编写函数fun,该函数的功能是:将m行n列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 答案:
void fun(char (*s)[n],char *b) {int i,j,k=0; for(j=0;j<n;j++) for(i=0;i<m;i++) {b[k]=*(*(s+i)+j)
20