如果一个人超过一个,则求出每个人的最高和最低价值

时间:2019-05-02 16:33:42

标签: c

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

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个不同编号的人的所有作业,测验等,它将循环并找到三个人中的最高和最低者。最后是打印输出。

1 个答案:

答案 0 :(得分:2)

  

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

我不明白您的意思,因为每个人的许多数据都是唯一的,那么如何谈谈最小/最大?您是在所有人中谈论最小/最大吗?

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


警告两行

 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);

不在for ( i = 0; i < input; i++) {内,所以 i input ,您可以访问未初始化的值,并且可能不在 person < / p>

  

scanf(“%d”,&input);

您不检查 scanf 返回1以知道输入是否为有效数字,还需要检查 input 是否小于10,否则您将访问对于数组,无论如何也要检查该值是否为正,以指示错误,否则似乎是个好主意。

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

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

 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;

person[i].percentage;不变,因此 MaxPer MinPer 的值相同

为什么要在循环中而不是之后设置person[i].average

为什么*0.10

里面有东西

 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].average

为什么person[i].average*0.20;喜欢管理5个值?