班上有n位同学,依次输入每位同学的身高,然后对他们从矮到高进行排序输出。\n\n(提示:用数组和指针实现)\n\n输入:\n\n多组输入,每组的第一行是一个正数n(1<=n<=50)表示人数,第二行是n个数表示每
时间: 2023-05-01 13:06:23 浏览: 395
本题要求输入同学们的身高,并按照从矮到高的顺序输出。提示:用数组和指针实现。
输入:
多组输入,每组输入的第一行是一个正整数n(1<=n<=50),表示身高相同的同学数。接下来n行每行一个正整数,表示一个人的身高,保证不超过100。
输出:
多组输出,每组输出n个整数,表示身高从矮到高的同学的身高。每个数占一行,无需输出任何其他字符。
举例:
输入:
3
175
180
170
输出:
170
175
180
相关问题
用c++实现以下:题目描述 班上选K名先进个人,由同学们投票选出,现已按序号汇总N名同学(序号依次为1,2,…,N)所得到的投票数(已知每位同学的票数不同),按照得票数从高到低输出前K名同学对应的序号。 输入 第一行输入N和K,第二行依次输入这N名同学对应的票数。 输出 前K名同学的序号。
好的,这是一道简单的排序题,可以使用 STL 中的 `pair` 和 `sort` 操作来实现。以下是 C++ 的代码实现:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, k;
cin >> n >> k;
vector<pair<int, int>> votes(n); // 定义一个 vector,存储每位同学的序号和票数
for (int i = 0; i < n; i++) {
int num;
cin >> num;
votes[i] = make_pair(num, i + 1); // 将序号和票数存储到 vector 中
}
sort(votes.rbegin(), votes.rend()); // 按照票数从高到低排序
for (int i = 0; i < k; i++) {
cout << votes[i].second << " "; // 输出前 k 名同学的序号
}
return 0;
}
```
解释一下代码:
首先,我们输入两个正整数 N 和 K。
然后,我们定义一个 `vector`,用于存储每位同学的序号和票数。我们使用 `make_pair` 函数将每位同学的序号和票数存储到 `vector` 中。
接着,我们使用 `sort` 函数将 `vector` 按照票数从高到低排序。由于 `sort` 函数默认是从小到大排序,因此我们需要使用 `rbegin` 和 `rend` 函数反转 `vector`。
最后,我们使用 `for` 循环输出前 k 名同学的序号。
希望这个答案能够帮到您,如果您还有其他问题,欢迎继续提问。
c语言编程:班上有n个同学。现在同学们排成了一队,每个同学都想知道在自己前面有多少个同学比自己高。现在告诉你班上同学们排好队后每个同学的身高,请告诉每个人在他们前面有多少人比他们高。
以下是一种解法:
1. 定义一个结构体Student表示每个同学的信息,包括身高和比他高的人数count。
2. 读入n个同学的身高,存入一个数组中。
3. 对身高数组进行排序,从高到低。
4. 遍历排序后的身高数组,对每个同学的count进行累加,表示在他前面比他高的人数。
5. 按照原来的顺序输出每个同学的count。
具体实现如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int height;
int count; // 比他高的人数
} Student;
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
int main() {
int n;
scanf("%d", &n);
int height[n];
for (int i = 0; i < n; i++) {
scanf("%d", &height[i]);
}
qsort(height, n, sizeof(int), cmp); // 排序
Student students[n];
for (int i = 0; i < n; i++) {
students[i].height = height[i];
students[i].count = 0;
}
for (int i = n-2; i >= 0; i--) { // 从倒数第二个开始遍历
for (int j = i+1; j < n; j++) {
if (students[j].height > students[i].height) {
students[i].count++;
}
}
}
for (int i = 0; i < n; i++) {
printf("%d ", students[i].count);
}
printf("\n");
return 0;
}
阅读全文