请编写C程序,输入5个不同的且为字符格式的学生编号,将其先由大到小排序,再将最大的学生编号和最小的学生编号互换位置,然后输出此时5位学生的编号。
时间: 2023-08-31 08:43:28 浏览: 91
### 回答1:
以下是一个简单的实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 10
#define NUM_STUDENTS 5
void sort(char (*students)[MAX_LEN]) {
int i, j;
char temp[MAX_LEN];
for (i = 0; i < NUM_STUDENTS - 1; i++) {
for (j = i + 1; j < NUM_STUDENTS; j++) {
if (strcmp(students[i], students[j]) < 0) {
strcpy(temp, students[i]);
strcpy(students[i], students[j]);
strcpy(students[j], temp);
}
}
}
}
int main() {
char students[NUM_STUDENTS][MAX_LEN];
int i;
// 输入学生编号
for (i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的编号:", i + 1);
scanf("%s", students[i]);
}
// 排序
sort(students);
// 互换最大和最小值
char temp[MAX_LEN];
strcpy(temp, students[0]);
strcpy(students[0], students[NUM_STUDENTS - 1]);
strcpy(students[NUM_STUDENTS - 1], temp);
// 输出学生编号
printf("排序后的学生编号为:\n");
for (i = 0; i < NUM_STUDENTS; i++) {
printf("%s\n", students[i]);
}
return 0;
}
```
输入示例:
```
请输入第1个学生的编号:A001
请输入第2个学生的编号:B003
请输入第3个学生的编号:C005
请输入第4个学生的编号:D002
请输入第5个学生的编号:E004
```
输出示例:
```
排序后的学生编号为:
C005
E004
B003
D002
A001
```
### 回答2:
以下是编写的C程序:
```c
#include <stdio.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void sort(char arr[]) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4 - i; j++) {
if (arr[j] < arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);
}
}
}
}
int main() {
char student_ids[5];
printf("请输入5个不同的学生编号:\n");
for (int i = 0; i < 5; i++) {
scanf("%c", &student_ids[i]);
getchar();
}
sort(student_ids);
swap(&student_ids[0], &student_ids[4]);
printf("排序后的学生编号为:\n");
for (int i = 0; i < 5; i++) {
printf("%c ", student_ids[i]);
}
printf("\n");
return 0;
}
```
程序的运行过程如下:
1. 首先,程序提示用户输入5个不同的学生编号。
2. 用户输入5个字符之后,程序调用`sort`函数对学生编号进行由大到小的排序。
3. 排序完成后,程序调用`swap`函数将最大的学生编号和最小的学生编号之间进行位置互换。
4. 最后,程序输出排序后的学生编号。
注意:为了输入5个不同的字符并以换行符结束输入,每一个输入字符后我们需要调用`getchar()`函数来读取输入字符后的换行符。
### 回答3:
#include <stdio.h>
void bubbleSort(char arr[], int n) {
int i, j;
char temp;
for (i = 0; i < n-1; i++) {
for (j = 0; j < n-i-1; j++) {
if (arr[j] < arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
int main() {
char studentIds[5];
printf("请输入5个不同的学生编号:\n");
for (int i = 0; i < 5; i++) {
scanf(" %c", &studentIds[i]);
}
bubbleSort(studentIds, 5);
char temp = studentIds[0];
studentIds[0] = studentIds[4];
studentIds[4] = temp;
printf("排序后的学生编号为:\n");
for (int i = 0; i < 5; i++) {
printf("%c ", studentIds[i]);
}
return 0;
}