='\0';j++>
p1[i++]=p2[j];
p1[i]='\0';}
6、某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能:
求出平均分,并放入记录的ave成员中.
voidfun
{inti;
a->ave=0.0;
for
a->ave=a->ave+a->s[i];
a->ave/=N;}
7、n名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点.求出平均分,并由函数值返回
doublefun
{doubleave=0.0;
STREC*p=h->next;
while
=NULL>
{ave=ave+p->s;
p=p->next;
}
returnave/N;}
8、将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过K返回.
voidfun
{inti,j,n=0;
for
{for
ifbreak;
ifxx[n++]=i;
}
*k=n;
}
9、求ss所指字符串中指定字符的个数,并返回此值.
intfun
{inti=0;
for<;*ss!
='\0';ss++>
if<*ss==c>
i++;
returni;
}
10、计算n门课程的平均分,结果作为函数值返回.
floatfun
{inti;
floatav=0.0;
for
av=av+a[i];
return;
}
11、学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,求最高的学生数据放在b所指的数组中.注意:
分数最高的学生可能不止一个,函数返回分数最高的学生的人数.
intfun
{inti,j=0,max=a[0].s;
for
ifmax=a[i].s;
for
if
b[j++]=a[i];
returnj;}
12、除了字符串前导的*号之外,将串中其他*号全部删除.
voidfun
{inti=0;
char*p=a;
while<*p&&*p=='*'>
{a[i]=*p;
i++;
p++;
}
while<*p>
{if<*p!
='*'>
{a[i]=*p;i++;}
p++;
}
a[i]='\0';
}
13、统计在tt所指的字符串中’a’到’z’26个小写字母给出现的次数,并依次放在pp所指数组中.
voidfun
{inti;
for
pp[i]=0;
for<;*tt!
='\0';tt++>
if<*tt>='a'&&*tt<='z'>
pp[*tt-'a']++;
}
14、将字符串尾部的*号全部删除,前面和中间的*号不动.
voidfun
{while<*a!
='\0'>
a++;
a--;
while<*a=='*'>
a--;
*='\0';}
15、比拟字符串的长度,函数返回较长的字符串,如果一样,如此返回第一个字符串.
char*fun
{inti,j;
for
='\0';i++>;
for='\0';j++>;
if
returnt;
else
returns;}
16、学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,函数返回该学生的学生数据,指定的学号在主函数中输入.假如没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数数值返回.
STRECfun
{inti;
STRECstr={"\0",-1};
for
if==0>
str=a[i];
returnstr;
}
17、将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除字符串中剩余的字符所形成的新串放在t数组中.voidfun
{
inti,j=0;
for
='\0';i++>
if
t[j++]=s[i];
t[j]='\0';
}
18、利用下面的简单迭代方法求方程cos-x=0的一个实根s
.
doublefun<>
{doublex0,x1;
x1=0.0;
do
{
x0=x1;
x1=cos;
}while>=1e-6>;
returnx1;
}
19、将字符串中的前导*号全部移到字符串尾部.
voidfun
{inti=0,n=0;
char*p;
p=a;
while<*p=='*'>/*判断*p是否是*号,并统计*号的个数*/
{
n++;p++;
}
while<*p>/*将前导*号后的字符传递给a*/
{
a[i]=*p;i++;p++;
}
while=0>
{
a[i]='*';i++;n--;
}
a[i]='\0';}
20、N名学生的数据已放入主函数中的结构体数组中,把分数最低的学生数据放入b所指的数组中.
intfun
{inti,j=0,min=a[0].s;
for
ifa[i].s>
min=a[i].s;/*找出最小值*/
for
if
b[j++]=a[i];/*找出成绩与min相等的学生的记录,存入结构体b中*/
returnj;
}
21、计算
doublefun
{inti;
doubles=0.0;
for
s=s+log;
returnsqrt;
}
22、只删除字符前导和尾部的*号,串中字母间的*号都不删除.
voidfun
{inti,j=0;
for
a[j++]=a[i];
a[j]='\0';}
23、将s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在t所指数组中
voidfun
{inti,j=0,k=strlen;
for
t[j++]=s[i];
t[j]='\0';}
24、将a,b中的两位正整数合并成一个新的整数放在c中.合并方式是:
将a中的十位和个位依次放在变量c的百位和个位上,B中的十位和个位数依次放在变量c的十位和千位上.
voidfun
{
*c=a%10+*10+*100+*1000;
}
25、除了尾部的*号之外,将字符中的其他的*号全部删除.形参p已指向字符串最后的一个字母.
voidfun
{char*t=a;
for<;t<=p;t++>
if<*t!
='*'>
*=*t;
for<;*t!
='\0';t++>
*=*t;
*a='\0';
}
26、N名学生的数据已放入主函数中的结构体数组中,按分数降序排列学生的记录,高分在前,低分在后.
voidfun
{inti,j;
STRECt;
for
for
if
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
27、N名学生的数据已放入主函数中的结构体数组中,把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回.
doublefun
{
inti;
doubleav=0.0;
*n=0;
for
av=av+a[i].s;
av=av/N;
for
if
{b[*n]=a[i];*n=*n+1;}
returnav;}
28、将1~m之间〔含m〕能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数.
voidfun
{inti,j=0;
for
if
a[j++]=i;
*n=j;}
29、将字符串中的前导*号全部删除,中间和尾部的*号不删除.
voidfun
{char*p=a;
while<*p=='*'>p++;
for<;*p!
='\0';p++,a++>
*a=*p;
*a='\0';}
30、N名学生的成绩已在主函数中放入一个带有头结点的链表结构中,h指向链表的头结点.找出学生的最高分.
doublefun
{doublemax=h->s;
while=NULL>
{ifs>max=h->s;
h=h->next;
}
returnmax;
}
30、找出一维整型数组元素最大的值与其所在的下标,并通过形参传回.主函数中x是数组名,n是x数据个数,max存放最大值,index存放最大值所在元素的下标.
voidfun
{inti;
*max=a[0];
*d=0;
for
if<*max
{*max=a[i];*d=i;}
}
31、将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符之外,其余的所有字符全部删除,串在剩余字符所形成的一个新串放在t所指的数组中.
voidfun
{inti,j=0,n;
n=strlen;
for
if
=0&&s[i]%2!
=0>
{t[j]=s[i];
j++;
}
t[j]='\0';}
32、实现B=A+’A’,即将矩阵A加上A的转置,存放在矩阵B中.
voidfun
{inti,j;
for
for
b[i][j]=a[i][j]+a[j][i];}
33、将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中.
voidfun[10],int*b,int*n,intmm,intnn>
{inti,j;
for
for
{
b[*n]=*<*+j>;
*n=*n+1;
}
}
34、将两个两位数的正整数a,b合并成一个整数放在c中.合并的方式是:
将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上.
voidfun
{
*c=a/10+*10+*100+*1000;
}
35、将放在字符串数组中的M个字符串〔每串的长度不超过N〕,按顺序合并成一个新的字符串.
voidfun
{inti,j,k=0;
for
for='\0';j++>
b[k++]=a[i][j];
b[k]='\0';
}
36、删除一个字符串中指定下标的字符.a指向原字符后的字符串存放在b所指的数组中,n中存指定的下标.
voidfun
{inti,k=0;
for
='\0';i++>
if
=n>
b[k++]=a[i];
b[k]='\0';
}
37、移动一维数组中的内容,假如数组中有n个整数,要求把下标从0~p〔含p,p小于等于n-1〕的数组元素平移到数组的最后.
voidfun
{intx,j,ch;
for
{ch=w[0];
for
{
w[j-1]=w[j];
}
w[n-1]=ch;
}
}
38、将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中.
voidfun[N],char*b>
{inti,j,k=0;
for
for
b[k++]=s[j][i];
b[k]='\0';
}
39、计算
floatfun
{inti,s1=0;
floats=0.0;
for
{s1=s1+i;
s=s+1.0/s1;
}
returns;
}
40、将s所指字符串中ASCCII值为奇数的字符删除,剩余字符形成的新串放在t所指数组中
voidfun
{inti,j=0,n;
n=strlen;
for
if
{t[j]=s[i];
j++;
}
t[j]='\0';
}
42、删除一维数组中所有一样的数使之只剩一个.数组中的数已按由小到大的顺序排列函数返回删除后数组的数据.
intfun
{inti,j=1;
for
if=a[i]>
a[j++]=a[i];
returnj;
}
43、除了字符串前导和尾部的*号外,将串中其他的*号全部删除.
voidfun
{inti=0;
char*q=a;
while
{a[i]=*q;q++;i++;}
while{if<*q!
='*'>
{a[i]=*q;
i++;
}
q++;
}
while<*q>
{a[i]=*q;i++;q++;}
a[i]='\0';
}
44、将a,b的两个两位正整数合并成一个新的整数放在c中,合并方式是:
将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上.
voidfun
{
*c=a%10+*10+*100+*1000;
}
45、使字符串的前导*号不得多于n个,假如多于n个,如此删除多余的*号,假如少于或等于n个,如此不做处理,字符串中间和尾部的*号不删除.
voidfun
{inti=0;
intk=0;
char*p,*t;
p=t=a;
while<*t=='*'>
{k++;t++;}
ifn>
{while<*p>
{a[i]=*
;
i++;
p++;
}
a[i]='\0';
}
}
46、将两个两位数的正整数a,b合并成一个整数放在c中,合并方式是:
将a数的十位和个位数依次在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上.
voidfun
{
*c=a/10+*10+*100+*1000;
}
47、将一个数字字符串转换为一个整数.
答案:
ongfun
{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
{intf0=0,f1=1,f;
do{
f=f0+f1;
f0=f1;
f1=f;
}while;
returnf;
}
49、把低于平均分的学生数据放入b所指的数组中低于平均分的学生人数通过形参n返回,平均分通过函数值返回
doublefun
{inti,j=0;
doubleav=0.0;
for
av=av+a[i].s;
av=av/N;
for
ifb[j++]=a[i];
*n=j;
returnav;
}
50、将ss所指字符串所有下标为奇数位上的字母转换为大写.
voidfun
{inti;
for
='\0';i++>
if='a'&&ss[i]<='z'>
ss[i]=ss[i]-32;
}
51、将a,b两个正整数合并成一个新的整数放在c中.合并方式:
将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上.
voidfun
{*c=b/10+*10+*100+*1000;
}
52、使字符串中尾部的*号不多于n个,假如多于n个,如此删除多余的*号,假如少于或等于n个,如此不做任何操作,字符中间的*不删除.
voidfun
{inti=0,k=0;
char*p,*t;
p=t=a;
while<*t>
t++;
t--;
while<*t=='*'>
{k++;t--;}
ifn>
{while<*p&&p
{a[i]=*p;
i++;p++;
}
a[i]='\0';
}
}
53、将a,b两个正整数合并成一个新的整数放在c中.合并方式:
将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的百位和个位上.
voidfun
{*c=b%10+*10+*100+*1000;
}
54、将a,b两个正整数合并成一个新的整数放在c中.合并方式:
将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的十位和个位上.
voidfun
{
*c=b%10+*10+*100+*1000;
}
55、把指定分数X围内的学生数据放在b所指的数组中,分数