从键盘输入若干个学生的c语言成绩,以输入负数作为输入结束标记。用数组和函数实现求解最高分和将所有成绩降序排列。
时间: 2023-05-31 12:17:49 浏览: 355
### 回答1:
可以使用以下步骤实现:
1. 定义一个数组来存储学生的成绩,数组大小可以根据需要设定。
2. 使用循环结构从键盘输入学生的成绩,直到输入负数为止。在输入时,可以使用scanf函数。
3. 定义一个函数来求解最高分,该函数接受一个数组作为参数,遍历数组并找到最高分,最后返回最高分。
4. 定义一个函数来将所有成绩降序排列,该函数接受一个数组作为参数,使用冒泡排序或快速排序等算法将数组中的元素按照降序排列。
5. 在主函数中调用上述两个函数,并输出最高分和排好序的成绩。
示例代码如下:
```c
#include <stdio.h>
#define MAX_SIZE 100
int find_max(int arr[], int n);
void sort_desc(int arr[], int n);
int main() {
int scores[MAX_SIZE];
int n = ;
int score;
printf("请输入学生的成绩(以负数作为输入结束标记):\n");
while (1) {
scanf("%d", &score);
if (score < ) {
break;
}
scores[n++] = score;
}
int max_score = find_max(scores, n);
printf("最高分是:%d\n", max_score);
sort_desc(scores, n);
printf("成绩降序排列如下:\n");
for (int i = ; i < n; i++) {
printf("%d ", scores[i]);
}
printf("\n");
return ;
}
int find_max(int arr[], int n) {
int max = arr[];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
void sort_desc(int arr[], int n) {
for (int i = ; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (arr[i] < arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
```
### 回答2:
本题要求使用数组和函数求解最高分和降序排列所有成绩。首先需要明确参数和返回值的数据类型,以便编写合适的函数。
参数包括一个数组和数组大小,返回值为整型。
接下来需要声明函数,例如:
int maxScore(int scores[], int size); // 求最高分
void sortDesc(int scores[], int size); // 降序排列
接着进行函数的具体实现,具体步骤如下:
1. 求最高分
int maxScore(int scores[], int size) {
int max = scores[0]; // 假设第一个元素为最高分
for (int i = 1; i < size; i++) { // 从第二个元素开始遍历
if (scores[i] > max) { // 如果当前元素大于最高分
max = scores[i]; // 更新最高分
}
}
return max; // 返回最高分
}
2. 降序排列
void sortDesc(int scores[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (scores[j] > scores[i]) { // 交换元素位置
int temp = scores[i];
scores[i] = scores[j];
scores[j] = temp;
}
}
}
}
最后,在主函数中调用以上函数即可。
int main() {
int scores[100], size = 0, score;
do { // 循环输入成绩
printf("请输入成绩:");
scanf("%d", &score);
if (score > 0) { // 如果成绩合法,则存入数组中
scores[size++] = score;
}
} while (score >= 0); // 当输入负数时跳出循环
printf("最高分:%d\n", maxScore(scores, size)); // 调用函数求最高分并输出
sortDesc(scores, size); // 调用函数降序排列成绩
printf("成绩降序排列:");
for (int i = 0; i < size; i++) {
printf("%d ", scores[i]); // 输出降序排列后的成绩
}
printf("\n");
return 0;
}
综上所述,使用数组和函数可以方便地实现求解最高分和降序排列所有成绩。
### 回答3:
题目描述
要求从键盘输入若干个学生的C语言成绩,以输入负数作为输入结束标记。利用数组和函数分别实现求解最高分和将所有成绩降序排列。
分析
题目要求求解最高分和成绩的降序排列,可以利用数组和函数进行处理。先输入学生成绩,利用循环取得最高分数并存储,然后对成绩数组进行降序排列。通过函数实现代码复用,以便后续调用。
实现
首先,定义成绩数组,从键盘输入学生成绩,以负数作为输入结束标记,并存储最高分数。
int score[100];
int max_score = 0;
for (int i = 0; i < 100; i++) {
scanf("%d", &score[i]);
if (score[i] < 0)
break;
if (score[i] > max_score)
max_score = score[i];
}
接着,定义一个函数实现成绩的降序排列,按照从大到小的顺序排序。
void sort_score(int score[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (score[i] < score[j]) {
int temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
}
}
最后调用函数进行降序排列即可。
sort_score(score, 100);
完整代码
以下为完整代码:
#include <stdio.h>
void sort_score(int score[], int n);
int main() {
int score[100];
int max_score = 0;
for (int i = 0; i < 100; i++) {
scanf("%d", &score[i]);
if (score[i] < 0)
break;
if (score[i] > max_score)
max_score = score[i];
}
printf("The highest score is %d\n", max_score);
sort_score(score, 100);
printf("All scores in descending order:\n");
for (int i = 0; score[i] >= 0; i++) {
printf("%d ", score[i]);
}
printf("\n");
return 0;
}
void sort_score(int score[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (score[i] < score[j]) {
int temp = score[i];
score[i] = score[j];
score[j] = temp;
}
}
}
}
阅读全文