2011年C语言南开100题
于或等于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++)
17
2011年C语言南开100题
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++;
18
2011年C语言南开100题
}
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)
19
2011年C语言南开100题
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++; } }
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++)
20