这个代码怎么改(数据结构的),书本上没讲怎么输出最大最小值啊
有没有人指导指导帮忙改一改,明天就要交ww
代码在下面:
void sum_grade(information im[])
{
int i, j;
information temp;
for (i = 0; i < size; i++)//遍历准考证号
{
for (j = 0; j < size - 1 - i; j++)//冒泡排序
{
if (im[j].sum_grade< im[j + 1].sum_grade)
{
temp = im[j];
im[j] = im[j + 1];
im[j + 1] = temp;
}
}
}
printf("总分从高到低排序后的结果为:\n");
for (i = 0; i < size; i++)
{
printf("名字 = %s\t准考证号 = %d\t班级 = %s\t\n计算机专业基础综合成绩 = %0.2f\t高数成绩 = %0.2f\t英语成绩 = %0.2f\t思想政治理论成绩 = %0.2f \t总成绩 = %0.2f\n\n",
im[i].student_name, im[i].student_number, im[i].student_class, im[i].student_jsj, im[i].student_math, im[i].student_ey, im[i].student_sxzz, im[i].sum_grade);
}
}
修改后的代码如下,望采纳
void sum_grade(information im[]) {
int i, j;
information temp;
int max_index = 0, min_index = 0;
// 记录最大和最小值的下标
for (i = 0; i < size; i++) // 遍历准考证号 {
for (j = 0; j < size - 1 - i; j++) // 冒泡排序 {
if (im[j].sum_grade < im[j + 1].sum_grade) {
temp = im[j];
im[j] = im[j + 1];
im[j + 1] = temp;
}
// 更新最大和最小值的下标
if (im[j].sum_grade > im[max_index].sum_grade) {
max_index = j;
}
if (im[j].sum_grade < im[min_index].sum_grade) {
min_index = j;
}
}
}
printf("总分从高到低排序后的结果为:\n");
for (i = 0; i < size; i++) {
printf("名字 = %s\t准考证号 = %d\t班级 = %s\t\n计算机专业基础综合成绩 = %0.2f\t高数成绩 = %0.2f\t英语成绩 = %0.2f\t思想政治理论成绩 = %0.2f \t总成绩 = %0.2f\n\n",
im[i].student_name, im[i].student_number, im[i].student_class, im[i].student_jsj, im[i].student_math, im[i].student_ey, im[i].student_sxzz, im[i].sum_grade);
}
// 输出最大和最小值
printf("最大值:%0.2f\n", im[max_index].sum_grade);
printf("最小值:%0.2f\n", im[min_index].sum_grade);
}
ChatGPT尝试为您解答,仅供参考
首先,冒泡排序是一种简单的排序算法,它通过重复地遍历要排序的数列来比较相邻的元素,并且交换位置来达到排序的目的。在这个代码中,通过两重循环,先把每一对相邻的元素进行比较,如果前一个比后一个大,就交换位置。这样,每一轮遍历完成之后,最大的元素就会被移到最后面。
如果您想在这个代码中输出最大最小值,您可以在排序之后,再遍历一遍数列,输出最大值和最小值即可。
例如,在 sum_grade 函数的最后加入如下代码:
float max = im[0].sum_grade;
float min = im[0].sum_grade;
for (i = 1; i < size; i++) {
if (im[i].sum_grade > max) {
max = im[i].sum_grade;
}
if (im[i].sum_grade < min) {
min = im[i].sum_grade;
}
}
printf("最大值为 %.2f,最小值为 %.2f\n", max, min);
这样就可以在输出排序之后的成绩之后,再输出最大值和最小值。
改动处见注释,供参考:
void sum_grade(information im[])
{
int i, j;
information temp;
for (i = 0; i < size - 1; i++)//修改
//for (i = 0; i < size; i++)
{
for (j = 0; j < size - 1 - i; j++)//冒泡排序
{
if (im[j].sum_grade< im[j + 1].sum_grade)
{
temp = im[j];
im[j] = im[j + 1];
im[j + 1] = temp;
}
}
}
printf("总分从高到低排序后的结果为:\n");
for (i = 0; i < size; i++)
{
printf("名字 = %s\t准考证号 = %d\t班级 = %s\t\n"
"计算机专业基础综合成绩 = %0.2f\t高数成绩 = %0.2f\t"
"英语成绩 = %0.2f\t思想政治理论成绩 = %0.2f \t总成绩 = %0.2f\n\n",
im[i].student_name, im[i].student_number, im[i].student_class,
im[i].student_jsj, im[i].student_math, im[i].student_ey,
im[i].student_sxzz, im[i].sum_grade);
}
printf("最大值为:%.2f,最小值为:%.2f\n",im[0].sum_grade,im[size-1].sum_grade);//修改
}