用c语言对一维数组中的数进行降序排列
时间: 2024-05-04 08:15:54 浏览: 13
您可以使用以下C语言代码对一维数组中的数进行降序排列:
```
#include <stdio.h>
#define SIZE 10
int main()
{
int arr[SIZE], i, j, temp;
printf("请输入%d个整数:\n", SIZE);
for(i=0; i<SIZE; i++)
scanf("%d", &arr[i]);
for(i=0; i<SIZE-1; i++)
{
for(j=i+1; j<SIZE; j++)
{
if(arr[i] < arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
printf("降序排序后的数组为:\n");
for(i=0; i<SIZE; i++)
printf("%d ", arr[i]);
return 0;
}
```
这段代码首先用户输入10个整数,然后使用两个循环嵌套对这些数进行比较和交换,从而实现降序排列。最后将排序后的数组输出给用户。
相关问题
C语言只使用一维数组二维数组按降序输出学生姓名学号成绩
假设有一个结构体类型为`Student`,包含学生的姓名、学号和成绩三个字段,可以按照以下方式定义:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 100
typedef struct {
char name[20];
int id;
int score;
} Student;
```
接下来,我们可以定义一个包含多个`Student`类型元素的一维数组或二维数组,然后按照成绩的降序输出学生的姓名、学号和成绩。
一维数组示例代码如下:
```c
int main() {
Student students[MAX_STUDENTS];
int n, i, j;
printf("请输入学生个数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名、学号、成绩:", i + 1);
scanf("%s%d%d", students[i].name, &students[i].id, &students[i].score);
}
// 冒泡排序按成绩降序排列
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j].score < students[j + 1].score) {
Student tmp = students[j];
students[j] = students[j + 1];
students[j + 1] = tmp;
}
}
}
// 输出结果
printf("按成绩降序输出学生信息:\n");
for (i = 0; i < n; i++) {
printf("%s %d %d\n", students[i].name, students[i].id, students[i].score);
}
return 0;
}
```
二维数组示例代码如下:
```c
int main() {
Student students[MAX_STUDENTS][3];
int n, i, j;
printf("请输入学生个数:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名、学号、成绩:", i + 1);
scanf("%s%d%d", students[i][0].name, &students[i][1].id, &students[i][2].score);
}
// 冒泡排序按成绩降序排列
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (students[j][2].score < students[j + 1][2].score) {
Student tmp[3];
memcpy(tmp, students[j], sizeof(Student) * 3);
memcpy(students[j], students[j + 1], sizeof(Student) * 3);
memcpy(students[j + 1], tmp, sizeof(Student) * 3);
}
}
}
// 输出结果
printf("按成绩降序输出学生信息:\n");
for (i = 0; i < n; i++) {
printf("%s %d %d\n", students[i][0].name, students[i][1].id, students[i][2].score);
}
return 0;
}
```
C语言,对二维数组排序
如果想要在 C 语言中对二维数组进行排序,你可以使用 qsort 函数。 qsort 函数是 C 语言标准库中的一个函数,它可以用来对数组中的元素进行排序。
下面是一个使用 qsort 函数对二维数组进行排序的示例:
```
#include <stdio.h>
#include <stdlib.h>
#define NROWS 3
#define NCOLS 4
int array[NROWS][NCOLS] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int compare(const void *a, const void *b)
{
int *x = (int *)a;
int *y = (int *)b;
return *x - *y;
}
int main(void)
{
int i, j;
qsort(array, NROWS * NCOLS, sizeof(int), compare);
for (i = 0; i < NROWS; i++)
{
for (j = 0; j < NCOLS; j++)
{
printf("%d ", array[i][j]);
}
printf("\n");
}
return 0;
}
```
这个程序将二维数组中的元素按照升序排列。如果你想按照降序排列,可以将 `compare` 函数中的 `return *x - *y;` 改为 `return *y - *x;`。
需要注意的是,qsort 函数是针对一维数组的,所以在调用 qsort 函数时,需要将二维数组转换为一维数组。这可以通过将二维数组名指定为首地址来实现。
此外,qsort 函数需要一个用于比较数组元素的函数。这个函数(在上面的示例中为 `compare`)需要接受