chenhuhu 发表于 2023-1-13 09:51:52

想问一下这个函数里面sum值得问题

本帖最后由 chenhuhu 于 2023-1-13 09:54 编辑

#include<stdio.h>
#include<stdlib.h>
      float square(float n);
      float aver_student(int student,int n);
int main()
{
      
      float aver_class(int student,int n);
      void max(int student);
      float fang(int student,int n);
      void fang1(int student,int n);
      int score={0};
      int i=1,j=1;
      
      //for(i=1;i<=10;i++)//10名同学
      for(i=1;i<=3;i++)//3名同学
      {
                        for(j=97;j<=101;j++)//5门成绩
                {
                        printf("请输入%d同学的%c成绩:\n",i,j);
                        scanf("%d",&score);
                }
      }
      //for(i=1;i<10;i++)//10名同学
      for(i=1;i<=3;i++)//3名同学
      {
      printf("%d同学的平均分为%6.2f\n",i,aver_student(score,i));
      }
      for(i=97;i<=101;i++)
      {
                printf("%c课程的平均分为%4.2f\n",i,aver_class(score,i-96));
      }
      max(score);
      printf("平均分方差为%4.2f\n",fang(score,3));
      fang1(score,3);
      system("pause");
      return 0;
}
float aver_student(int student,int n)//学生平均分
{
      int i,sum=0;
      float aver=0;
      for(i=0;i<5;i++)//5门课程
      {
                sum=sum+student;
      }
      aver=sum/5.0;
      return aver;
}
float aver_class(int student,int n)//课程平均分
{
      int i,sum1=0;
      float aver1=0;
      for(i=0;i<3;i++)//3名学生
      {
                sum1=sum1+student;
      }
      aver1=sum1/3.0;
      return aver1;
}
void max(int student)
{
      int i=0,j=0,max=student,a,b;
      for(i=0;i<3;i++)//3名学生
      {
                for(j=0;j<5;j++)
                {
                        if(max<student)
                        {
                              max=student;
                              a=i+1;
                              b=j+97;
                        }
                }
      }
      printf("最高分为%d,为%d同学的%c科目\n",max,a,b);
}
float square(float n)
{
      float a;
      a=n*n;
      return(a);
}
float fang(int student,int n)
{
      float fang=0;
      int sum2=0,sum3=0,i=0,j=0;
      for(i=1;i<=3;i++)
      {
                sum2=sum2+aver_student(student,i);
                printf("%f\n",sum2);
      }
      for(j=1;j<=3;j++)
      {
                float a=aver_student(student,j);
                sum3=sum3+square(a);
                printf("%f\n",sum3);
                //sum3=sum3+square(aver_student(student,j));
      }
      fang=sum3/n-square(sum2/n);
      return fang;
}
void fang1(int student,int n)
{
      float fang=0;
      int sum2=0,sum3=0,i=0,j=0;
      for(i=1;i<=3;i++)
      {
                sum2=sum2+aver_student(student,i);
                printf("%f\n",sum2);
      }
      for(j=1;j<=3;j++)
      {
                float a=aver_student(student,j);
                sum3=sum3+square(a);
                printf("%f\n",sum3);
                //sum3=sum3+square(aver_student(student,j));
      }
      fang=sum3/n-square(sum2/n);
      printf("%4.2f",fang);
      //return fang;
}
后两个函数里面的sum应该是累加后的结果,但为什么这里打印输出显示出的都是0啊?最后方差输出的结果也不对,有大佬知道是哪里出了问题吗?

wp231957 发表于 2023-1-13 09:51:53

int sum2=0,sum3=0,i=0,j=0;   你确认这东西是int类型是对的????

chenhuhu 发表于 2023-1-13 10:10:40

感谢大佬!改了后竟然真的就成功了QAQ
页: [1]
查看完整版本: 想问一下这个函数里面sum值得问题