c - 我只需要一个输出,但它是两个或更多
问题描述
我想找到最大的 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 );
}
}
}
解决方案
当多个答案与最大答案并列时,它会打印多个答案。但是,如果您希望它在打印第一个之后停止,您需要做的就是在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;
}
推荐阅读
- apache-spark - 如何理解拼花文件名称的每个部分
- c# - 客户端未找到 .Net Framework 4.5 下的 SignalR Hub
- javascript - 如何在 html 中设置脚本输出的样式?
- java - 如何从 myRef.addValueEventListener 实例化一个全局变量
- javascript - 关闭可点击菜单
- c# - 是否可以从 Azure 网络作业访问 UNC 路径?
- ruby-on-rails - 带有嵌套的 ActiveRecord 条件查询
- makefile - 什么是 vsim 命令行?
- sql - 存储和搜索标签具有权重的标签数据的最有效方法是什么?
- php - 我的表有两个时间戳值,其余的是字符串值。我想使用 php 在 html 中显示整个表格