首页 > 解决方案 > 我只需要一个输出,但它是两个或更多

问题描述

我想找到最大的 cgpa,它只有一个 cgpa,但是当我输入相同的 cgpa 作为输入时它显示 2 个或更多。

如何只找到一个最大的 cgpa?

我如何找到确切的答案?

      **I want to find the largest cgpa which is only one cgpa but it's shows 2 or more when I enter same cgpa as input.** 

如何只找到一个最大的 cgpa?

输入:输入学生人数:3

       Enter records for Student 1
       Enter Student ID : 2
       Enter student name: s
       Enter CGPA : 3

       Enter records for Student 2
       Enter Student ID : 201311
       Enter student name: A
       Enter CGPA : 4

       Enter records for Student 3
       Enter Student ID : 201312
       Enter student name: B
       Enter CGPA : 4

     output:
     201311 A has got the highest CGPA: 4.00
     201312 B has got the highest CGPA: 4.00

代码


  #include<stdio.h>
  struct student
  {
  int ID;
  char name[50];
  float cgpa;
  };
  int main()
  {
 struct  student s[5000];
 int i,num;
 float large;
 printf("Enter the number of student: ");
 scanf("%d",&num);
 for(i=0; i<num; i++)
  {
    printf("Enter records for Student %d\n",i+1);
    printf("Enter Student ID : ");
    scanf("%d",&s[i].ID);
    getchar();
    printf("Enter student name: ");
    gets(s[i].name);
    printf("Enter CGPA : ");
    scanf("%f",&s[i].cgpa);
    getchar();
   }
  large=s[0].cgpa;
  for(i=0; i<num; i++)
   {
    if(s[i].cgpa>large)
    {
        large=s[i].cgpa;
    }
   }
   for(i=0; i<num; i++)
   {
    if(s[i].cgpa==large)
    {
        printf("%d %s has got the highest CGPA: %.2f\n",s[i].ID,s[i].name,s[i].cgpa );


     }
 }

}

标签: c

解决方案


当多个答案与最大答案并列时,它会打印多个答案。但是,如果您希望它在打印第一个之后停止,您需要做的就是在break之后添加一条语句printf

if(s[i].cgpa==large)
{
    printf("%d %s has got the highest CGPA: %.2f\n",s[i].ID,s[i].name,s[i].cgpa );
    break;
}

推荐阅读