用C语言编写一个为小学生随机出10道算术题,每题10分,输入答案后,程序自动判断对错,最后给出总分,算术运算中有加,减,乘,除四种运算,得出结果后,求平均值,并把最大数和最小数输出,并用由大到小,由小到大的顺序给结果排序
时间: 2024-05-17 11:16:25 浏览: 65
好的,我可以为您解答这个问题。以下是一个实现上述功能的C语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int i, ans, score = 0, sum = 0, max, min;
int num1, num2, op;
srand((unsigned int)time(NULL)); // 设置随机种子
printf("请回答以下10道算术题:\n");
for (i = 1; i <= 10; i++) {
num1 = rand() % 100; // 生成0~99的随机数
num2 = rand() % 100;
op = rand() % 4; // 生成0~3的随机数,分别对应加减乘除
switch (op) {
case 0:
ans = num1 + num2;
printf("%d、%d + %d = ", i, num1, num2);
break;
case 1:
ans = num1 - num2;
printf("%d、%d - %d = ", i, num1, num2);
break;
case 2:
ans = num1 * num2;
printf("%d、%d * %d = ", i, num1, num2);
break;
case 3:
ans = num1 / num2;
printf("%d、%d / %d = ", i, num1, num2);
break;
}
int user_ans;
scanf("%d", &user_ans);
if (user_ans == ans) {
printf("正确!\n");
score += 10;
} else {
printf("错误,正确答案为%d!\n", ans);
}
}
printf("总分为:%d分\n", score);
float average = (float)score / 10;
printf("平均分为:%.1f分\n", average);
int arr[10];
for (i = 0; i < 10; i++) {
arr[i] = rand() % 100;
sum += arr[i];
}
max = arr[0];
min = arr[0];
for (i = 1; i < 10; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
printf("随机数组为:\n");
for (i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
printf("从大到小排序为:\n");
for (i = 0; i < 10; i++) {
int j;
for (j = i+1; j < 10; j++) {
if (arr[i] < arr[j]) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
printf("%d ", arr[i]);
}
printf("\n");
printf("从小到大排序为:\n");
for (i = 0; i < 10; i++) {
int j;
for (j = i+1; j < 10; j++) {
if (arr[i] > arr[j]) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
printf("%d ", arr[i]);
}
printf("\n");
printf("最大值为:%d\n", max);
printf("最小值为:%d\n", min);
return 0;
}
```
程序中使用 `rand()` 函数生成随机数,并使用 `switch` 语句随机生成加减乘除四种运算。用户输入答案后,程序判断对错并计算总分。计算平均数和最大值最小值时,使用了一个长度为10的随机数组,然后进行排序和计算。
希望这个程序能够帮到您!
阅读全文