看了你这程序,运用了指针和链表,应该学得很后了,应该很容易就会这个求平均值的函数的,这是我指出的问题:
目前创新互联公司已为数千家的企业提供了网站建设、域名、雅安服务器托管、网站改版维护、企业网站设计、修武网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1、结构体的声明应该在主函数外,这是一个编程习惯,便于其他函数的引用
2、但结构体变量的定义就应该在main里面例如:struct node *first,*p,*last;这样不会干扰其他函数的同名变量
3、其实大型的软件main里面只有界面的几句话,你建立链表的过程应该独立为一个函数比较好,不过你这程序比较简单就不必要
下面是我修改的程序:
#include stdio.h
#include stdlib.h
struct node
{
int num;
char name[10];
int yuwen;
int shuxue;
int yinyu;
float pjf;//存储平均分
struct node *next;
};
float pjf(struct node *head);//声明求平均分函数
main()
{
struct node *first,*p,*last;
int count,i;
printf("输入学生数\n");
scanf("%d",count);
p=(struct node*)malloc(sizeof(struct node));
printf("依次输入学生号、名字、语文、数学、英语\n");
scanf("\n%d\n%s\n%d\n%d\n%d",p-num,p-name,p-yuwen,p-shuxue,p-yinyu);
p-next=NULL;
last=first=p;
for(i=1;icount;i++)
{
p=(struct node*)malloc(sizeof(struct node));
scanf("\n%d\n%s\n%d\n%d\n%d",p-num,p-name,p-yuwen,p-shuxue,p-yinyu);
p-next=NULL;
last-next=p;
last=p;
}
p=first;
printf("学生号\t名字\t语文\t数学\t英语\t平均分\n");
while(p!=NULL)
{
p-pjf=pjf(p);//调用求平均分的函数
printf("%d\t%s\t%d\t%d\t%d\t\%g\n",p-num,p-name,p-yuwen,p-shuxue,p-yinyu,p-pjf);
p=p-next;
}
}
float pjf(struct node *head)
{
float x=0;
struct node *p=head;
x=(p-shuxue+p-yinyu+p-yuwen)/3;
return(x);
}
c语言的中没有现成的求平均数函数,可以自己定义一个求平均数的函数
1
2
3
4
5
6
7
double Average(double s[],int n)
{
if(n==0)return 0;
double sum=0;
for(int i=0;in;i++)sum+=s[i];
return sum/n;
}
#include stdio.h
double average(int k[10] ); //有改动
void main()
{
int a[10],i;
double average1;
for(i=0;i10;i++)
scanf("%d",a[i]);
average1=average(a);
printf("%lf",average1);
}
double average(int k[10] ) //有改动
{
double sum=0;
int j;
for(j=0;j10;j++)
sum=sum+k[j];
return(sum/10);
}
1、新建一个 求数组内所有元素的平均值项目。
2、添加一个 average.cpp 文件。
3、包含需要用到的各种头文件。
4、输入main函数。
5、定义一个double类型的数组arr[5]。
6、使用 for 循环求出arr数组的平均值。
7、运行程序,输出结果即可。
#include stdlib.h
#define N 10
double fun(double x[],double *y)
{ int i,j; double av;
/**********found**********/
av=0;
/**********found**********/
for(i=0; iN; i++) av = av + x[i]/N;
for(i=j=0; iN; i++)
/**********found**********/
if(x[i]av) y[j++]= x[i];
y[j]=-1;
return av;
}
main()
{ int i; double x[N],y[N];
for(i=0; iN; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);}
printf("\n");
printf("\nThe average is: %f\n",fun(x,y));
for(i=0; y[i]=0; i++) printf("%5.1f ",y[i]);
printf("\n");
}