用C语言编写程序: 从键盘上输入若干学生的成绩,以-1作为结束标志,统计并输出其中的最高成绩及平均成绩
时间: 2024-06-13 12:03:41 浏览: 184
这个问题可以通过以下步骤解决:
1. 定义变量,包括成绩变量、计数器变量、总成绩变量、最高成绩变量。
2. 使用while循环,输入学生的成绩,每输入一个成绩,就将其加到总成绩变量中,并将计数器变量加1。
3. 在循环中,判断输入的成绩是否大于最高成绩变量,如果是,则将其赋值给最高成绩变量。
4. 当输入-1时,跳出循环,计算平均成绩。
5. 输出最高成绩和平均成绩。
下面是代码实现:
```
#include <stdio.h>
int main() {
float score, total = 0, avg;
int count = 0, max = 0;
printf("请输入学生成绩:\n");
scanf("%f", &score);
while (score >= 0) {
total += score;
count++;
if (score > max) {
max = score;
}
scanf("%f", &score);
}
if (count > 0) {
avg = total / count;
printf("最高成绩为:%d\n平均成绩为:%.2f\n", max, avg);
} else {
printf("没有输入成绩!\n");
}
return 0;
}
```
相关问题
编写程序,实现如下任务:从键盘输入若干个整数,输入整数的个数小于100,其值在-100~100 范围内,用-1作为输入结束的标志。统计每个整数的个数并从大到小排序,输出排序后的结果。用printf输出,用适合初学者的方法,用冒泡排序和for循环
好的,我们可以编写如下的C语言程序来完成这个任务:
```c
#include <stdio.h>
#include <stdlib.h>
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 交换元素
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int count[100] = {0}; // 初始化计数数组
int num, i = 0;
printf("请输入整数(-1结束输入),最多输入99个:\n");
while ((num = getchar()) != EOF && num != -1) {
// 检查是否在指定范围内
if (-100 <= num && num <= 100) {
count[i]++;
i++;
}
}
// 输出每个整数及其个数
for (int k = 0; k < i; k++) {
printf("%d 的个数:%d\n", k, count[k]);
}
// 使用冒泡排序对计数数组进行排序
bubbleSort(count, i);
printf("\n按数值大小排序后的结果(从大到小):\n");
for (i = 0; i < i; i++) {
printf("%d 的个数:%d\n", i, count[i]);
}
return 0;
}
```
在这个程序中,我们首先通过`getchar()`函数读取用户的输入,并统计每个整数的个数。然后,我们使用冒泡排序算法对计数数组进行降序排列,最后输出排序后的结果。
编写程序,实现如下任务:从键盘输入若干个整数,输入整数的个数小于100,其值在﹣100~100范围内,用﹣1作为输入结束的标志。统计每个整数的个数并从大到小排序,输出排序后的结果。 提示:定义两个数组,一个用来存放输入整数,另一个用来存放统计信息。
要完成这个任务,你可以按照以下步骤编写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;
}
```
阅读全文