现有100位学生成绩,请利用冒泡法对成绩从高到低进行排序,100位学生成绩要求从健盘输入,且数据类型为单精度浮点型。
【以下回答由 GPT 生成】
根据问题描述,我们需要实现一个使用冒泡法对100位学生成绩进行排序的C程序。下面是一个简单的实现过程:
float scores[100];
for (int i = 0; i < 100; i++) {
printf("请输入第 %d 位学生的成绩: ", i+1);
scanf("%f", &scores[i]);
}
for (int i = 0; i < 100 - 1; i++) {
for (int j = 0; j < 100 - i - 1; j++) {
if (scores[j] < scores[j+1]) {
// 交换元素
float temp = scores[j];
scores[j] = scores[j+1];
scores[j+1] = temp;
}
}
}
printf("学生成绩从高到低排序为:\n");
for (int i = 0; i < 100; i++) {
printf("%.2f\n", scores[i]);
}
这样,我们就完成了一个使用冒泡法对学生成绩从高到低排序的C程序。
完整代码如下:
#include<stdio.h>
int main() {
float scores[100];
for (int i = 0; i < 100; i++) {
printf("请输入第 %d 位学生的成绩: ", i+1);
scanf("%f", &scores[i]);
}
for (int i = 0; i < 100 - 1; i++) {
for (int j = 0; j < 100 - i - 1; j++) {
if (scores[j] < scores[j+1]) {
// 交换元素
float temp = scores[j];
scores[j] = scores[j+1];
scores[j+1] = temp;
}
}
}
printf("学生成绩从高到低排序为:\n");
for (int i = 0; i < 100; i++) {
printf("%.2f\n", scores[i]);
}
return 0;
}
请注意,以上代码只是一个简单的冒泡排序的实现,实际开发中可能使用更高效的排序算法。但对于只有100个学生成绩的情况,冒泡排序已足够。
【相关推荐】
以下是一个可能的解答:
#include <stdio.h>
#define NUM_STUDENTS 100
int main()
{
float grades[NUM_STUDENTS];
int i, j;
float tmp;
// Input grades
for (i = 0; i < NUM_STUDENTS; i++) {
printf("Enter grade for student %d: ", i + 1);
scanf("%f", &grades[i]);
}
// Bubble sort
for (i = 0; i < NUM_STUDENTS - 1; i++) {
for (j = 0; j < NUM_STUDENTS - i - 1; j++) {
if (grades[j] < grades[j+1]) {
// Swap grades[j] and grades[j+1]
tmp = grades[j];
grades[j] = grades[j+1];
grades[j+1] = tmp;
}
}
}
// Print sorted grades
printf("Sorted grades (from high to low):\n");
for (i = 0; i < NUM_STUDENTS; i++) {
printf("%5.1f", grades[i]);
if ((i+1) % 10 == 0) {
printf("\n"); // Print a newline every 10 grades
}
}
return 0;
}
解释如下:
grades
用来存放学生成绩。for
循环逐个输入学生的成绩。for
循环实现冒泡排序,每次将未排序部分的相邻两个元素进行比较交换。for
循环逐个输出排序后的成绩,并在每10个成绩后输出一个换行符。注意,为了方便查看,这里使用了%5.1f
格式化输出,表示每个成绩占5个字符宽度(不足5个用空格填充),小数点后保留1位。