C语言程序设计 随机出十道题有加减乘除求出结果求平均值选出最大值和最小值由小到大排列和由大到小排列
时间: 2024-03-05 18:47:41 浏览: 74
好的,您需要一个程序,能够随机产生十道题目,包括加、减、乘、除四则运算,并求出这十道题目的结果的平均值,选出其中的最大值和最小值,并将它们按照从小到大和从大到小的顺序排列。以下是一个实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int cmp(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int cmp_reverse(const void *a, const void *b) {
return (*(int *)b - *(int *)a);
}
int main() {
int i, num1, num2, result, sum = 0;
int max = 0, min = 100000; // 初始化最大值最小值
int arr[10];
srand(time(NULL)); // 初始化随机数生成器
for (i = 0; i < 10; i++) {
num1 = rand() % 100; // 生成 0~99 的随机数
num2 = rand() % 100;
switch (rand() % 4) { // 生成 0~3 的随机数,分别代表加减乘除
case 0:
result = num1 + num2;
printf("%d + %d = %d\n", num1, num2, result);
break;
case 1:
result = num1 - num2;
printf("%d - %d = %d\n", num1, num2, result);
break;
case 2:
result = num1 * num2;
printf("%d * %d = %d\n", num1, num2, result);
break;
case 3:
result = num1 / num2;
printf("%d / %d = %d\n", num1, num2, result);
break;
}
arr[i] = result;
sum += result;
if (result > max) max = result;
if (result < min) min = result;
}
printf("平均值为:%d\n", sum / 10);
printf("最大值为:%d\n", max);
printf("最小值为:%d\n", min);
qsort(arr, 10, sizeof(int), cmp); // 从小到大排序
printf("从小到大排序:");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
qsort(arr, 10, sizeof(int), cmp_reverse); // 从大到小排序
printf("从大到小排序:");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个程序和前一个程序类似,不同的是它将计算结果存储到数组中,并且使用了两个自定义的比较函数 `cmp` 和 `cmp_reverse` 来分别进行从小到大和从大到小的排序。排序使用了 C 语言标准库中的 `qsort` 函数。
阅读全文