max=a[i][j];
returnmax;
}
main()
{intarr[2][M]={5,8,3,45,76,-4,12,82};voidNONO();
printf("max=%d\n",fun(arr));
2.根据以下公式求π的值(要求精度0.005)
#include
#include
doublefun(doubleeps)
{
doubles=1.0,s1=1.0;
intn=1;
while(s1>=eps)/*当某项大于精度要求时,继续求下一项*/
{s1=s1*n/(2*n+1);/*求多项式的每一项*/
s=s+s1;/*求和*/
n++;
}
return2*s;
}
main()
{doublex;voidNONO();
printf("Inputeps:
");
scanf("%lf",&x);printf("\neps=%lf,PI=%lf\n",x,fun(x));
3.求出1~1000之间能被7或11整除,但不能同时被7和11
整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。
#include
voidfun(int*a,int*n)
{
inti,j=0;
for(i=1;i<=1000;i++)/*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/
if((i%7==0||i%11==0)&&i%77!
=0)
a[j++]=i;
*n=j;
}
main()
{intaa[1000],n,k;
voidNONO();
fun(aa,&n);
for(k=0;kif((k+1)%10==0)printf("\n");
elseprintf("%5d",aa[k]);
4.规定输入的字符串中只包含字母和*号。
编写函数fun,其功能是:
删除字符串中所有的*号。
编写函数时,不能使用C语言提供的字符串函数。
#include
voidfun(char*a)
{
inti,j=0;
for(i=0;a[i]!
='\0';i++)
if(a[i]!
='*')
a[j++]=a[i];/*若不是要删除的字符'*'则留下*/
a[j]='\0';
}
main()
{chars[81];
voidNONO();
printf("Enterastring:
\n");gets(s);
fun(s);
printf("Thestringafterdeleted:
\n");puts(s);
NONO();
}
5.实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后面。
#include
voidfun(charp1[],charp2[])
{
inti,j;
for(i=0;p1[i]!
='\0';i++);
for(j=0;p2[j]!
='\0';j++)
p1[i++]=p2[j];
p1[i]='\0';
}
main()
{chars1[80],s2[40];voidNONO();
printf("Enters1ands2:
\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):
\n");
fun(s1,s2);
printf("Afterinvoking:
\n");
printf("%s\n",s1);
NONO();
}
6.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:
求出该同学的平均分,并放入记录的ave成员中。
#include
#defineN8
typedefstruct
{charnum[10];
doubles[N];
doubleave;
}STREC;
voidfun(STREC*a)
{
doubleave=0.0;
inti;
for(i=0;ia->ave=a->ave+a->s[i];
a->ave/=N;
}
main()
{STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};
inti;
voidNONO();
fun(&s);
printf("The%s'sstudentdata:
\n",s.num);
for(i=0;iprintf("%4.1f\n",s.s[i]);
printf("\nave=%7.3f\n",s.ave);
NONO();
}
7.N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。
请编写函数fun,其功能是:
求出平均分,并由函数值返回。
#include
#include
#defineN8
structslist
{doubles;
structslist*next;
};
typedefstructslistSTREC;
doublefun(STREC*h)
{
doubleave=0.0;
STREC*p=h->next;
while(p!
=NULL)
{ave=ave+p->s;
p=p->next;
}
returnave/N;
}
STREC*creat(double*s)
{STREC*h,*p,*q;inti=0;
h=p=(STREC*)malloc(sizeof(STREC));p->s=0;
while(i{q=(STREC*)malloc(sizeof(STREC));
q->s=s[i];i++;p->next=q;p=q;
}
p->next=0;
returnh;
}
outlist(STREC*h)
{STREC*p;
p=h->next;printf("head");
do
{printf("->%4.1f",p->s);p=p->next;}
while(p!
=0);
printf("\n\n");
}
main()
{doubles[N]={85,76,69,85,91,72,64,87},ave;
voidNONO();
STREC*h;
h=creat(s);outlist(h);
ave=fun(h);
printf("ave=%6.3f\n",ave);
NONO();
}
8.将所有大于1小于m的非素数存入xx所指数组中,非素数的个数通过k返回。
#include
voidfun(intm,int*k,intxx[])
{
/*inti,j;
intt=0;
for(i=2;i{j=2;
while(j
{if(i%j==0)
{xx[t]=i;
t++;
break;}
j++;}
*k=t;}*/
inti,j,n=0;
for(i=4;i{for(j=2;j
if(i%j==0)break;
if(j
}
*k=n;/*返回非素数的个数*/}
main()
{
intm,n,zz[100];
voidNONO();
printf("\nPleaseenteranintegernumberbetween10and100:
");
scanf("%d",&n);
fun(n,&m,zz);
printf("\n\nThereare%dnon-primenumberslessthan%d:
",m,n);
for(n=0;nprintf("\n%4d",zz[n]);
NONO();
}
9.求ss所指字符串中指定字符的个数,并返回此值。
#include
#include
#defineM81
intfun(char*ss,charc)
{
inti=0;
for(;*ss!
='\0';ss++)
if(*ss==c)
i++;
returni;
}
main()
{chara[M],ch;
voidNONO();
printf("\nPleaseenterastring:
");gets(a);
printf("\nPleaseenterachar:
");ch=getchar();
printf("\nThenumberofthecharis:
%d\n",fun(a,ch));
NONO();
}
10.计算n门课程的平均分,结果作为函数值返回。
#include
floatfun(float*a,intn)
{
inti;
floatav=0.0;
for(i=0;iav=av+a[i];
return(av/n);
}
main()
{floatscore[30]={90.5,72,80,61.5,55},aver;
voidNONO();
aver=fun(score,5);
printf("\nAveragescoreis:
%5.2f\n",aver);
NONO();
}
11.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中。
请编写函数fun,其功能是:
把分数最高的学生数据放在b所指的数组中。
注意:
分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
#include
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STREC*a,STREC*b)
{