|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
从键盘输入某班学生某门课程的成绩(每班人数最多不超过40人),当输入为负值时,表示输入结束。本题要求实现用选择排序法将分数从高到低排序(并输出每趟排序结果)的函数。
函数接口定义:
void DataSort(int score[], int n);
其中 score 是用户传入的学生成绩数组, n是学生人数。
裁判测试程序样例:
#include <stdio.h>
#define N 40
int ReadScore(int score[]);
void DataSort(int score[], int n);
void PrintScore(int score[], int n);
int main()
{
int score[N], n;
n = ReadScore(score);
printf("n=%d\n", n);
if(n)
{ DataSort(score, n);
printf("After sort: ");
PrintScore(score, n);
}
return 0;
}
int ReadScore(int score[])
{
int i = -1;
do{
i++;
scanf("%d", &score[i]);
}while (score[i] >= 0);
return i;
}
/* 你的代码将被嵌在这里 */
void PrintScore(int score[], int n)
{
int i;
for (i=0; i<n; i++)
{ if (i!=0) printf(" ");
printf("%d", score[i]);
}
printf("\n");
}
输入样例:
64 85 73 99 92 -1
输出样例:
n=5
第1趟:99 85 73 64 92
第2趟:99 92 73 64 85
第3趟:99 92 85 64 73
第4趟:99 92 85 73 64
After sort: 99 92 85 73 64
这题怎么写
- #include <stdio.h>
- void DataSort(int score[], int n) {
- int i, j, temp;
-
- for (i = 0; i < n - 1; i++) {
- for (j = 0; j < n - i - 1; j++) {
- if (score[j] < score[j+1]) {
- temp = score[j];
- score[j] = score[j+1];
- score[j+1] = temp;
- }
- }
- // 输出每趟排序结果
- for (j = 0; j < n; j++) {
- printf("%d ", score[j]);
- }
- printf("\n");
- }
- }
- int main() {
- int score[40];
- int n = 0;
-
- // 读入分数,直到输入为负值结束
- while (1) {
- scanf("%d", &score[n]);
- if (score[n] < 0) {
- break;
- }
- n++;
- if (n == 40) {
- break;
- }
- }
-
- printf("n=%d\n", n);
-
- if (n > 0) {
- DataSort(score, n);
- printf("After sort: ");
- for (int i = 0; i < n; i++) {
- printf("%d ", score[i]);
- }
- printf("\n");
- }
-
- return 0;
- }
- 以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
复制代码
|
|