if(max==a[i].s)b[j++]=a[i]; /*找出成绩与max相等的学生的记录,存入结构体b中*/
returnj; /*返回最高成绩的学生人数*/
}
12规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
除了字符串前导的*号之外,将串中其它*号全部删除。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****ABCDEFG。
voidfun(char*a)
{
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编写函数voidfun(char*tt,intpp[]),统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指的数组中。
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
33322110000000000000000000
voidfun(char*tt,intpp[])
{
inti;
for(i=0;i<26;i++)
pp[i]=0; /*初始化pp数组各元素为0]=′\0′;tt++)
if(*tt>=′a′&&*tt<=′z′)
pp[*tt-′a′]++;
}
14规定输入的字符串中只包含字母和*号。
请编写函数fun,其功能是:
将字符串尾部的*号全部删除,前面和中间的*号不动。
例如,字符串中的内容为:
****A*BC*DEF*G*******,删除后,字符串中的内容应当是:
****A*BC*DEF*G。
在编写函数时,不得使用C语言提供的字符串函数。
voidfun(char*a);
{
while(*a!
=′\0′)
a++;
a--; /*指针a指向字符串的尾部*/
while(*a==′*′)
a--; /*指针a指向最后一个字母*/
*(a+1)=′\0′;/*在字符串最后加上结束标志符*/
}
15编写函数fun,其功能是:
比较字符串的长度,(不得使用C语言提供的求字符串长度的函数),函数返回较长的字符串。
若两个字符长度相同,则返回第一个字符串。
例如,输入beijingshanghai(为回车键),函数将返回shanghai。
char*fun(char*s,char*t)
{
inti,j;
for(i=0;s[i]!
=′\0′;i++);/*求字符串的长度*/
for(j=0;t[j]!
=′\0′;j++);
if(i>=j) /*比较两个字符串的长度*/
returns; /*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/
else
returnt;
}
16学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
STRECfun(STREC*a,char*b)
{
inti;
STRECstr={"\0",-1}; /*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1]+)
if(strcmp(a[i].num,b)==0)/*找到指定学号的学生数据*/
str=a[i];
returnstr; /*返回学生记录*/
}
17编写函数fun,其功能是:
将两个两位数的正整数a、b合并成一个整数放在c中。
合并的方式是:
将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,当a=45,b=12时,调用该函数后,c=5142。
voidfun(inta,intb,long*c)
{
*c=b%10+(a/10)*10+(b/10)*100+(a%10)*1000;
}
18编写函数fun,其功能是:
利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。
xn+1=cos(xn)
迭代步骤如下:
(1)取x1初值为0.0;
(2)x0=x1,将x1的值赋给x0;
(3)x1=cos(x0),求出一个新的x1;
(4)若x0-x1的绝对值小于0.000001,执行步聚(5),否则执行步聚
(2);
(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序将输出结果Root=0.739086。
floatfun()
{
floatx1=0.0,x0;
do
{
x0=x1;
x1=c