编写程序,实现如下任务:从键盘输入若干个整数,输入整数的个数小于100,其值在﹣100~100范围内,用﹣1作为输入结束的标志。统计每个整数的个数并从大到小排序,输出排序后的结果。 提示:定义两个数组,一个用来存放输入整数,另一个用来存放统计信息。
时间: 2024-12-15 13:19:57 浏览: 18
要完成这个任务,你可以按照以下步骤编写C语言程序:
1. 定义两个数组:`int inputArray[100]` 和 `int countArray[100]`。第一个数组用于存储输入的整数,第二个数组用于存储每个整数出现的次数。
2. 使用一个循环来读取用户的输入,直到遇到 `-1`。同时更新计数数组。
3. 对输入的整数进行计数时,遍历 `inputArray` 并检查每个元素是否已经在 `countArray` 中。如果不在,初始化相应的计数值为1;如果已经存在,将其对应的计数值加1。
4. 输入结束后,使用标准库函数对 `countArray` 进行排序(这里我们假设你打算使用冒泡排序或快速排序算法),以便从大到小排列。
5. 最后,遍历排序后的 `countArray`,输出每个整数及其出现的次数。
下面是基本的C代码实现:
```c
#include <stdio.h>
#define MAX_VALUES 100
// 冒泡排序函数,从大到小
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int inputArray[MAX_VALUES], countArray[MAX_VALUES] = {0};
int num, index = 0;
while (true) {
scanf("%d", &num);
if (num == -1) break;
inputArray[index++] = num;
}
// 计算每个整数的出现次数
for (index = 0; index < index_; index++) {
countArray[inputArray[index]]++;
}
// 排序并输出结果
bubbleSort(countArray, MAX_VALUES);
for (int i = MAX_VALUES - 1; i >= 0; i--) {
if (countArray[i] > 0) {
printf("%d appears %d times.\n", i, countArray[i]);
}
}
return 0;
}
```
阅读全文