31: 第31题请编写函数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’;
}
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--;
}
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;
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’;
}
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];
j++;
}
for(i=0;i<=p;i++)
{
w[j]=b[i];
j++;
}
}