#define n 5/*暂且设定为5*/
#include<stdio.h>
void main()
{
float a[n],x,sum
int i
printf("Please input the value of x=")
scanf("%f",&x)
for(i=ni>=0i--)
{
printf("Please input the value of a%d=",i)
scanf("%f",&a[i])
}
sum=a[n]
for(i=ni>=1i--)
{
sum=sum*x+a[i-1]
}
printf("f(x)=%f\n",sum)
}
/*互相学习哈*/
这个又称为海伦公式,是计算三角形面积的,首先看你测试输入的abc是否可以构成一个三角形,在满足这个条件下,你公式里面的s=(i+j+k)/2等式右边会先依照整型进行计算然后再转为double类型,这样会差生相应的误差,可能就导致你的结果为0了,可以改为s=(i+j+k)/2.0你可以修改试试。
#include <stdio.h>#include <stdlib.h>
#include <time.h>
#include <string.h>
#define N 30
typedef struct
{
char name[20]
char No[20]
char sex[20]
float score[5]
float avg
}STUDENT
void sort(STUDENT* s) //按平均成绩由高到低排序
{
STUDENT t
int i,j
for(i=0i<N-1i++)
{
for(j=0j<N-1-ij++)
{
if(s[j].avg<s[j+1].avg)
{
t=s[j+1]
s[j+1]=s[j]
s[j]=t
}
}
}
}
void input(STUDENT* s) //输入函数
{
system("cls")
int i,j
for(i=0i<Ni++)
{
printf("\n请输入第%d个同学的姓名:",i+1)
fflush(stdin)
scanf("%s",s[i].name)
printf("\n请输入第%d个同学的学号:",i+1)
fflush(stdin)
scanf("%s",s[i].No)
printf("\n请输入第%d个同学的性别:",i+1)
fflush(stdin)
scanf("%s",s[i].sex)
for(j=0j<5j++)
{
printf("\n请输入第%d个同学的第%d门课成绩:",i+1,j+1)
fflush(stdin)
scanf("%f",&(s[i].score[j]))
}
}
}
void prt(STUDENT* s) //输出函数
{
int i
printf("\n\n")
for(i=0i<Ni++)
{
printf("%s %s %s %5.1f %5.1f %5.1f %5.1f %5.1f %5.2f\n",s[i].name,s[i].No,s[i].sex,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].avg)
}
}
float calc(STUDENT* s) //计算函数--计算第三门课平均分
{
float all=0
int i,j
for(i=0i<Ni++)
{
all+=s[i].score[2]
}
return all/N
}
void find(STUDENT* s) //查找函数---平均分在95以上的女生和全部成绩在85分以上的女生
{
int i,j
printf("\n平均成绩在90分以上的女生有:\n")
for(i=0i<Ni++)
{
if(s[i].avg>=90.0 && strcmp(s[i].sex,"女")==0)
{
printf("%s %s %s %5.1f %5.1f %5.1f %5.1f %5.1f %5.2f\n",s[i].name,s[i].No,s[i].sex,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].avg)
}
}
printf("\n全部成绩在85分以上的女生有:\n")
for(i=0i<Ni++)
{
if(strcmp(s[i].sex,"女")==0)
{
for(j=0j<5j++)
{
if(s[i].score[j]<85.0)
{
break
}
}
if(j>=5)
{
printf("%s %s %s %5.1f %5.1f %5.1f %5.1f %5.1f %5.2f\n",s[i].name,s[i].No,s[i].sex,s[i].score[0],s[i].score[1],s[i].score[2],s[i].score[3],s[i].score[4],s[i].avg)
}
}
}
}
int main()
{
STUDENT s[N]
int i,j
////----------------如果要用手动输入全部数据,请注释掉虚线间的代码---------开始-------//
char* name1[20]={"张","王","李","赵","钱","孙","蒋","秦","任","刘","周","郑","吴","朱","许","何","吕","谢","方","叶"}
char* name2[20]={"子","欣","晨","紫","诗","梦","嘉","一","思","静","可","佳","心","梓","俊","明","浩","博","文","天"}
char* name3[20]={"轩","勇","涛","军","浩","豪","宇","俊","鸣","熙","文","国","佑","泽","然","杰","远","平","秋","飞"}
srand((unsigned)time(0))
int n
float f,avg
for(i=0i<Ni++) //随机初始30个同学姓名学号成绩等数据
{
n=rand()%20
strcpy(s[i].name,name1[n])
n=rand()%20
strcat(s[i].name,name2[n])
n=rand()%20
strcat(s[i].name,name3[n])
//以上为随机生成姓名
n=0
for(j=0j<5j++)
{
n=n*10+rand()%10
}
sprintf(s[i].No,"%05d",n)
//以上为随机生成学号
if(rand()%2==0)
{
strcpy(s[i].sex,"男")
}
else
{
strcpy(s[i].sex,"女")
}
//以上为随机生成性别
avg=0
for(j=0j<5j++)
{
n=rand()%50+51
f=(float)n
if(rand()%2==1 && f<100.0)
{
f+=0.5
}
s[i].score[j]=f
avg+=f
}
s[i].avg=avg/5
//以上为随机生成5门成绩和平均分
}
////----------------如果要用手动输入全部数据,请注释掉虚线间的代码---------结束-------//
// input(s) //如果不用随机生成姓名学号成绩等数据,请用此函数
sort(s)
printf("按平均成绩由高到低打印\n")
prt(s)
printf("\n\n第三门课的平均分为: %.2f\n",calc(s))
find(s)
return 0
}