if(max==a[i].s)
b[j++]=a[i];/*找出成绩与max相等的学生的记录,存入结构体b中*/
returnj;/*返回最高成绩的学生人数*/
}
编写函数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*/
for(;*tt!
='\0';tt++)
if(*tt>='a'&&*tt<='z')
pp[*tt-'a']++;
}
编写函数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)/*比较两个字符串的长度*/
returnt;/*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/
else
returns;
}
学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。
(用于字符串比较的函数是strcmp)。
STRECfun(STREC*a,char*b)
{inti;
STRECstr={"\0",-1};/*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1*/
for(i=0;iif(strcmp(a[i].num,b)==0)/*找到指定学号的学生数据*/
str=a[i];
returnstr;/*返回学生记录*/
}
函数fun的功能是:
将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为"ABCDEFG123456",其中字符A的ASCII码值为奇数,因此应当删除;字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是"246"。
voidfun(char*s,chart[])
{
inti,j=0;
for(i=0;s[i]!
='\0';i++)
if(i%2==0&&s[i]%2==0)/*将s所指字符串中下标和ASCII码值都为偶数的字符放入数组t中*/
t[j++]=s[i];
t[j]='\0';/*在字符串最后加上结束标识*/
}
编写函数fun,其功能是:
利用下面的简单迭代方法求方程cos(x)-x=0的一个实根。
迭代步骤如下:
(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。
doublefun()
{
doublex0,x1;
x1=0.0;
do
{
x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=1e-6);
returnx1;
}
学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:
把分数最低的学生数据放入b所指的数组中,注意:
分数最低的学生可能不止一个,函数返回分数最低的学生人数。
intfun(STREC*a,STREC*b)
{
inti,j=0,min=a[0].s;
for(i=0;iif(min>a[i].s)
min=a[i].s;/*找出最小值*/
for(i=0;iif(min==a[i].s)
b[j++]=a[i];/*找出成绩与min相等的学生的记录,存入结构体b中*/
returnj;
}
编写函数fun,其功能是计算:
s作为函数值返回。
在C语言中可调用log(n)函数求ln(n)。
log函数的引用说明为:
doublelog(doublex)。
例如,若m的值为20,则fun函数值为6.506583。
doublefun(intm)
{
inti;
doubles=0.0;
for(i=1;i<=m;i++)
s=s+log(i);/*计算s=ln
(1)+ln
(2)+ln(3)+…+ln(m)*/
returnsqrt(s);/*对s求平方根并返回*/
}
函数fun的功能是:
将s所指字符串中下标为偶数的字符删除,剩余字符形成的新串放在t所指数组中。
例如,当s所指字符串中的内容为"ABCDEFGHIJK"时,在t所指数组中的内容应是:
"BDFHJ"。
voidfun(char*s,chart[])
{
inti,j=0,k=strlen(s);/*k为字符串的长度*/
for(i=1;it[j++]=s[i];
t[j]='\0';
}
编写函数fun,其功能是:
将a、b中的两个两位正整数合并成一个新的整数放在c中。
合并的方式是:
将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。
例如,当a=45,b=12,调用该函数后c=2415。
voidfun(inta,intb,long*c)
{
*c=a%10+(b/10)*10+(a/10)*100+(b%10)*1000;
}
学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
按分数降序排列学生的记录,高分在前,低分在后。
voidfun(STRECa[])
{
inti,j;
STRECt;
for(i=1;ifor(j=0;jif(a[j].s{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分数的高低排列学生的记录,高分在前*/
}
学生的记录由学号和成绩组成。
N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:
把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
doublefun(STREC*a,STREC*b,int*n)
{
inti;
doubleav=0.0;
*n=0;
for(i=0;iav=av+a[i].s;
av=av/N;/*求平均值*/
for(i=0;iif(av<=a[i].s)
{b[*n]=a[i];*n=*n+1;}/*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/
returnav;/*返回平均分*/
}
编写函数fun,其功能是:
将1到m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。
例如,若传给m的值为50,则程序输出:
7 11 14 21 22 28 33 35 42 44 49
voidfun(intm,int*a,int*n)
{
inti,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)/*求出1到m(含m)之内能被7或11整除的所有整数放在数组a中*/
a[j++]=i;
*n=j;/*返回这些数的个数*/
}
N名学生的成绩已在主函数中放入一个带有头节点的链表结构中,h指向链表的头节点。
请编写函数fun,其功能是:
找出学生的最高分,并由函数值返回。
doublefun(STREC*h)
{
doublemax=h->s;
while(h!
=NULL)/*通过循环找到最高分数*/
{if(maxs)max=h->s;
h=h->next;
}
returnmax;
}
请编写函数fun,其功能是:
找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。
数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
voidfun(inta[],intn,int*max,int*d)
{
inti;
*max=a[0];
*d=0;
for(i=0;iif(*max{*max=a[i];*d=i;}
}
编写函数fun,其功能是:
将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符之外,其余的所有字符全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串的内容为:
"ABCDEFG12345",其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。
最后t所指数组中的内容应为:
"135"。
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];/*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/
j++;
}
t[j]='\0';/*最后加上结束标识符*/
}
编写函数fun,其功能是:
实现B=A+A',即将矩阵A加上A的转置,存放在矩阵B中。
计算结果在main函数中输出。
例如,输入下面的矩阵:
其转置矩阵为:
程序输出:
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];/*把矩阵a加上a的转置,存放在矩阵b中*/
}
请编写函数fun,该函数的功能是:
将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。
一维数组中数据的个数存放在形参n所指的存储单元中。
例如,若二维数组中的数据为
33333333
44444444
55555555
则一维数组中的内容应是:
334455334455334455334455
voidfun(int(*s)[10],int*b,int*n,intmm,intnn)
{
inti,j;
for(j=0;jfor(i=0;i<