C 如果每个人不止一个,则查找每个人的最高值和最低值

C 如果每个人不止一个,则查找每个人的最高值和最低值,c,C,我想找到每个人的百分比,总和,项目,中,最终和搜索方法等级最终结果的最高和最低 struct student{ char id[10]; char fname[25]; char lname[25]; char letter[10]; int quiz[3]; int assignment[3]; int project,MID,Final,grade,percentage,average,sum; }; int main() { struct student

我想找到每个人的百分比,总和,项目,中,最终和搜索方法等级最终结果的最高和最低

struct student{
  char id[10];
  char fname[25];
  char lname[25];
  char letter[10];
  int quiz[3];
  int assignment[3];
  int project,MID,Final,grade,percentage,average,sum;
};

int main() {
  struct student person[10];
  int input,choose,max=0,min=0;

  printf("Input Student : ");
  scanf("%d",&input );
  printf("\n");

  int i,j,k,g;
  for ( i = 0; i < input; i++) {
    int count=0,count2=0;
    printf("Input Id : ");
    scanf("%s",person[i].id);
    printf("Input Name : ");
    scanf("%s",person[i].fname);
    scanf("%s",person[i].lname);
    printf("\n");

    //input assignment
    for ( j = 0; j < 3; j++) {
      printf("Input Assignment%d : ",j );
      scanf("%d",&person[i].assignment[j] );
      count+=person[i].assignment[j];
      person[i].average = count/3;
    }
    person[i].percentage = person[i].average*0.20;
    person[i].MaxPer = person[i].percentage;

    printf("\n");
    //input quiz
    for ( k = 0; k < 4; k++) {
      printf("Input Quiz%d : ",k );
      scanf("%d",&person[k].quiz[i] );
      count2+=person[k].quiz[i];
      person[i].average = count2/4;
    }
    person[i].sum = person[i].average*0.10;
    person[i].MinPer = person[i].percentage;

    printf("\n");

    //input Project
    printf("Input Project Value%d : ",i );
    scanf("%d",&person[i].project );
    person[i].project= person[i].project * 0.15;
    printf("\n");

    //input MID
    printf("Input Project Value%d : ",i );
    scanf("%d",&person[i].MID );
    fflush(stdin);
    person[i].MID= person[i].MID * 0.25;
    printf("\n");

    //input Final
    printf("Input Project Value%d : ",i );
    scanf("%d",&person[i].Final );
    fflush(stdin);
    person[i].Final= person[i].Final * 0.25;

    //count Grade
    person[i].grade = person[i].percentage + person[i].sum + person[i].project + person[i].MID + person[i].Final;

    printf("\n");
  }

      printf("Highest Value \t\t\t%15d %25d %11d %10d %10d\n",person[i].MaxPer,person[i].sum,person[i].project,person[i].MID,person[i].Final);
      printf("Lowest Value \t\t\t%15d %25d %11d %10d %10d\n",person[i].MinPer,person[i].sum,person[i].project,person[i].MID,person[i].Final);
  return 0;
}
因此,如果我输入3个人的所有作业、测验等,并使用不同的数字,它将循环查找三个人中的最高和最低。最后一个是打印输出

我想找到每个人的百分比,总和,项目,中,最终和搜索方法等级最终结果的最高和最低

struct student{
  char id[10];
  char fname[25];
  char lname[25];
  char letter[10];
  int quiz[3];
  int assignment[3];
  int project,MID,Final,grade,percentage,average,sum;
};

int main() {
  struct student person[10];
  int input,choose,max=0,min=0;

  printf("Input Student : ");
  scanf("%d",&input );
  printf("\n");

  int i,j,k,g;
  for ( i = 0; i < input; i++) {
    int count=0,count2=0;
    printf("Input Id : ");
    scanf("%s",person[i].id);
    printf("Input Name : ");
    scanf("%s",person[i].fname);
    scanf("%s",person[i].lname);
    printf("\n");

    //input assignment
    for ( j = 0; j < 3; j++) {
      printf("Input Assignment%d : ",j );
      scanf("%d",&person[i].assignment[j] );
      count+=person[i].assignment[j];
      person[i].average = count/3;
    }
    person[i].percentage = person[i].average*0.20;
    person[i].MaxPer = person[i].percentage;

    printf("\n");
    //input quiz
    for ( k = 0; k < 4; k++) {
      printf("Input Quiz%d : ",k );
      scanf("%d",&person[k].quiz[i] );
      count2+=person[k].quiz[i];
      person[i].average = count2/4;
    }
    person[i].sum = person[i].average*0.10;
    person[i].MinPer = person[i].percentage;

    printf("\n");

    //input Project
    printf("Input Project Value%d : ",i );
    scanf("%d",&person[i].project );
    person[i].project= person[i].project * 0.15;
    printf("\n");

    //input MID
    printf("Input Project Value%d : ",i );
    scanf("%d",&person[i].MID );
    fflush(stdin);
    person[i].MID= person[i].MID * 0.25;
    printf("\n");

    //input Final
    printf("Input Project Value%d : ",i );
    scanf("%d",&person[i].Final );
    fflush(stdin);
    person[i].Final= person[i].Final * 0.25;

    //count Grade
    person[i].grade = person[i].percentage + person[i].sum + person[i].project + person[i].MID + person[i].Final;

    printf("\n");
  }

      printf("Highest Value \t\t\t%15d %25d %11d %10d %10d\n",person[i].MaxPer,person[i].sum,person[i].project,person[i].MID,person[i].Final);
      printf("Lowest Value \t\t\t%15d %25d %11d %10d %10d\n",person[i].MinPer,person[i].sum,person[i].project,person[i].MID,person[i].Final);
  return 0;
}
我不明白你的意思,因为这些数据对于每个人来说都是独一无二的,那么如何在这些数据上谈论最小值/最大值呢?你是说所有人中的最小值/最大值吗

无论如何,一些关于你的代码跳跃的评论会对你有所帮助

警告两条线

当i=0时,不符合要求;i<输入;i++{所以i值输入,您可以访问未初始化的值,并且可能不属于个人

扫描%d,&输入

您不需要检查scanf返回1,就可以知道输入是否为有效数字,您还需要检查输入是否小于10,否则您将从数组中访问,无论如何,也要检查值是否为正值以指示错误,否则看起来是个好主意

还要检查另一个scanf以了解是否完成了有效输入,千万不要假设用户输入了有效输入

字段MaxPer和MinPer不存在,但也存在

为什么要在循环中设置person[i]。平均值,而不是在循环之后


为什么是人[我].average*0.20;例如,如果您管理了5个值?

您的代码出了什么问题?我想将fidn逻辑添加到最高和最低的数字,但我很难在CPL中使用searchin方法,请您的问题添加此信息,而不是在注释中回答。请同时显示您使用的输入、实际得到的输出以及y是什么您希望获取示例输入的。
 person[i].MaxPer = person[i].percentage;

 printf("\n");
 //input quiz
 for ( k = 0; k < 4; k++) {
   printf("Input Quiz%d : ",k );
   scanf("%d",&person[k].quiz[i] );
   count2+=person[k].quiz[i];
   person[i].average = count2/4;
 }
 person[i].sum = person[i].average*0.10;
 person[i].MinPer = person[i].percentage;
 for ( j = 0; j < 3; j++) {
   printf("Input Assignment%d : ",j );
   scanf("%d",&person[i].assignment[j] );
   count+=person[i].assignment[j];
   person[i].average = count/3;
 }
 person[i].percentage = person[i].average*0.20;