if(av<=a[i].s)
{b[*n]=a[i];*n=*n+1;}
returnav;}
28、将1〜m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。
voidfun(intm,int*a,int*n)
{inti,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)
a[j++]=i;
*n=j;}
将字符串中的前导*号全部删除,中间和尾部的*号不删
把高
{char*p=a;
while(*p=='*')p++;for(;*p!
='\0';p++,a++)*a=*p;
*a='\0';}
30、N名学生的成绩已在主函数中放入一个带有头结点的链表结构中,h指向链表的头结点。
找出学生的最高分。
doublefun(STREC*h)
{doublemax=h->s;
while(h!
=NULL)
{if(maxs)max=h->s;
h=h->next;
}
returnmax;
}
30、找出一维整型数组元素最大的值及其所在的下标,并通
过形参传回。
主函数中x是数组名,n是x数据个数,max存放最大值,index存放最大值所在元素的下标。
voidfun(inta[],intn,int*max,int*d)
{
inti;
*max=a[O];
*d=0;
for(i=0;i}
31、将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符之外,其余的所有字符全部删除,串在剩余字符所形成的一个新串放在t所指的数组中。
voidfun(char*s,chart[])
{inti,j=0,n;
n=strlen(s);
for(i=0;iif(i%2!
=0&&s[i]%2!
=0)
{t[j]=s[i];
j++;
}
t[j]='\0';}
32、实现B=A+'A',即将矩阵A加上A的转置,存放在矩阵B中。
voidfun(inta[3][3],intb[3][3])
{inti,j;
for(i=0;i<3;i++)for(j=0;j<3;j++)
b[i][j]=a[i][j]+a[j][i];}
33、将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
{
inti,j;
for(j=0;jb[*n]=*(*(s+i)+j);*n=*n+1;
}
34、将两个两位数的正整数a,b合并成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。
voidfun(inta,intb,long*c)
{
*c=a/10+(b%10)*10+(a%10)*100+(b/10)*1000;
}
35、将放在字符串数组中的M个字符串(每串的长度不超
过N),按顺序合并成一个新的字符串。
voidfun(chara[M][N],char*b)
{inti,j,k=0;
for(i=0;ifor(j=0;a[i][j]!
='\0';j++)b[k++]=a[i][j];
b[k]='\0';
}
36、删除一个字符串中指定下标的字符。
a指向原字符后的字符串存放在b所指的数组中,n中存指定的下标。
voidfun(chara[],charb[],intn)
{inti,k=0;
for(i=0;a[i]!
='\0';i++)
if(i!
=n)
b[k++]=a[i];
b[k]='\0';
}
37、移动一维数组中的内容,若数组中有n个整数,要求把下标从0〜P(含P,P小于等于n-1)的数组元素平移到数组的最后。
voidfun(int*w,intp,intn)
{intx,j,ch;
for(x=0;xv=p;x++)
{ch=w[0];
for(j=1;jvn;j++)
{
w[j-1]=w[j];
}
w[n-1]=ch;
}
}
38、将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
voidfun(char(*s)[N],char*b)
{inti,j,k=0;
for(i=0;ivN;i++)
for(j=0;jvM;j++)
b[k++]=s[j][i];
b[k]='\0';
}
39、计算
floatfun(intn)
{inti,s1=0;
floats=;
for(i=1;iv=n;i++)
{s1=s1+i;
s=s+s1;
}
returns;
}
40、将s所指字符串中ASCCII值为奇数的字符删除,剩余字符形成的新串放在t所指数组中
voidfun(char*s,chart[])
{inti,j=0,n;
n=strlen(s);
for(i=0;ivn;i++)
if(s[i]%2==0)
{t[j]=s[i];
j++;
}
t[j]='\O';
}
42、删除一维数组中所有相同的数使之只剩一个。
数组中的数已按由小到大的顺序排列函数返回删除后数组的数据。
intfun(inta[],intn)
{inti,j=1;
for(i=1;i=a[i])a[j++]=a[i];
returnj;
}
43、除了字符串前导和尾部的*号外,将串中其他的*号全部删除。
voidfun(char*a,char*h,char*p)
{
inti=0;
char*q=a;
while(qvh)
{a[i]=*q;q++;i++;}while(qvp)
{if(*q!
='*')
{a[i]=*q;
i++;
}q++;
}
while(*q)
{a[i]=*q;i++;q++;}
a[i]='\0';
n个,则不做处理,字符串中
}
44、将a,b的两个两位正整数合并成一个新的整数放在c
中,合并方式是:
将a中的十位和个位数依次放在变量c的百
位和个位上,b中的十位和个位数依次放在变量c的千位和
十位上。
voidfun(inta,intb,long*c)
{
*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;
}
45、使字符串的前导*号不得多于n个,若多于n个,则删除多余的*号,若少于或等于间和尾部的*号不删除。
voidfun(char*a,int
{inti=0;
intk=0;
char*p,*t;
P=t=a;
while(*t=='*')
{k++;t++;}
if(k>n)
{while(*p)
{a[i]=*(p+k-n);
i++;P++;
}
a[i]='\0';
}
}
46、将两个两位数的正整数
voidfun(inta,intb,long*c)
{
*c=a/10+(b/10)*10+(a%10)*100+(b%10)*1000;
}
47、将一个数字字符串转换为一个整数。
答案:
ongfun(char*p)
{longn=0;
intflag=1;
if(*p=='-')
{p++;flag=-1;}
elseif(*p=='+')
P++;
while(*p!
='\0')
{n=n*10+*p-'0';
P++;
}
returnn*flag;
}
48、求Fibonacc数列中大于t的最小的数,结果由函数返
回。
Fibonacc数列F(n)定义为
intfun(intt)
{intf0=0,f1=1,f;
do{
f=f0+f1;
f0=f1;
f1=f;
}while(freturnf;
}
49、把低于平均分的学生数据放入b所指的数组中低于平
均分的学生人数通过形参n返回,平均分通过函数值返回
doublefun(STREC*a,STREC*b,int*n)
{inti,j=0;
doubleav=;
for(i=0;iav=av+a[i].s;
av=av/N;
for(i=0;iif(a[i].s*n=j;
returnav;
}
50、将ss所指字符串所有下标为奇数位上的字母转换为大写。
voidfun(char*ss)
{inti;
for(i=0;ss[i]!
='\0';i++)
if(i%2==1&&ss[i]>='a'&&ss[i]<='z')
ss[i]=ss[i]-32;
}
51、将a,b两个正整数合并成一个新的整数放在c中。
合并方式:
将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。
voidfun(inta,intb,long*c)
{*c=b/10+(a%10)*10+(b%10)*100+(a/10)*1000;
}
52、使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号,若少于或等于n个,则不做任何操作,字符中间的*不删除。
voidfun(char*a,intn)
{inti=O,k=O;
char*p,*t;
p=t=a;
while(*t)
t++;
t--;
while(*t=='*')
{k++;t--;}
if(k>n)
{while(*P&&Pvt+n+1)
{a[i]=*p;
i++;P++;
}
a[i]='\0';
}
}
53、将a,b两个正整数合并成一个新的整数放在c中。
合并方式:
将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的百位和个位上。
voidfun(inta,intb,long*c)
{*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;
}
54、将a,b两个正整数合并成一个新的整数放在c中。
合并方式:
将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的十位和个位上。
voidfun(inta,intb,long*c)
{
*c=b%10+(a%10)*10+(b/10)*100+(a/10)*1000;
}
55、把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
intfun(STREC*a,STREC*b,intl,inth)
{inti,j=0;
for(i=0;iif(a[i].s>=l&&a[i].s<=h)
b[j++]=a[i];
returnj;
}
56、将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
voidfun(char*s,chart[])
{inti=0;
for(;*s!
='\0';s++)
if(*s%2==1)
t[i++]=*s;
t[i]='\0';
}
57、找出成绩最高