题目:小学数学测验题生成程序
实验要求:
从键盘输入题目数量N(3<N<=50),随机生成N道小学数学计算题,要求至少自定义2个函数,实现如下功能:
按照生成的顺序输出生成的N道题目,至少包含加、减、乘、除法运算各一题,且每种运算题目数量随机,总数为N;
模拟两个或更多个学生做该测验题,分别输出每个学生的做题情况(包括题目,结果以及对错的判定)、总的得分率以及加减乘除每种类型题目的得分率。
注意事项:
a) 不考虑混合运算,加减乘除运算的题目每道题只考虑两个操作数情况即可;如x+y、x-y、x*y、x/y形式;
b) 任何运算的结果必须是大于等于0且小于100;
c) 除法运算结果不能出现小数,只能写商几余几的形式(如5/2答案只能是商2余1,而不能是2.5;输入输出时如何表示商2余1自定,比如可以直接输出2 1表示。),且被除数需要大于除数。
提示:生成随机数函数为rand和srand函数。
c语言解答小学数学测试题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
Leodong. 2023-10-09 17:22关注该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
解析:首先需要生成N道题目,每种运算题目数量随机,至少包含加、减、乘、除法运算各一题。然后模拟两个或更多个学生做该测验题,分别输出每个学生的做题情况(包括题目,结果以及对错的判定)、总的得分率以及加减乘除每种类型题目的得分率。代码如下:
#include <stdio.h> #include <stdlib.h> #include <time.h> void generate_question(int n, int op1, int op2, int result[], char question[]) { switch (op) { case 1: question[0] = '+'; question[1] = '\0'; result[0] = op1 + op2; break; case 2: question[0] = '-'; question[1] = '\0'; result[0] = op1 - op2; break; case 3: question[0] = '*'; question[1] = '\0'; result[0] = op1 * op2; break; case 4: question[0] = '/'; question[1] = '\0'; int quotient = op1 / op2; int remainder = op1 % op2; result[0] = quotient; if (remainder * 10 + 5 <= 100) { result[1] = remainder * 10 + 5; } else { result[1] = 0; } break; } } void generate_questions(int n, int num_ops[], int results[], char questions[][]) { srand(time(NULL)); for (int i = 0; i < n; i++) { int op1 = rand() % 100; int op2 = rand() % 100; int op = rand() % 4 + 1; num_ops[i] = op; results[i] = 0; generate_question(1, op1, op2, &results[i], questions[i]); } } void student_test(char questions[][], int num_students, int scores[]) { for (int i = 0; i < num_students; i++) { for (int j = 0; j < num_questions; j++) { printf("%s ", questions[j][0]); int op1, op2; sscanf(questions[j] + 1, "%d %d", &op1, &op2); int result; switch (questions[j][0]) { case '+': result = op1 + op2; break; case '-': result = op1 - op2; break; case '*': result = op1 * op2; break; case '/': int quotient, remainder; quotient = op1 / op2; remainder = op1 % op2; result = quotient; if (remainder * 10 + 5 <= 100) { result += remainder * 10 + 5; } else { result += 0; } break; } printf(" %d", result); if (result == questions[j][2]) { printf(" 正确 "); scores[i]++; } else { printf(" 错误 "); } } printf(" "); } } int main() { int n; printf("请输入题目数量N(3<N<=50):"); scanf("%d", &n); if (n < 3 || n > 50) { printf("输入错误! "); return 1; } char questions[n][2]; int num_questions = 0; generate_questions(n, num_questions, num_questions, questions); int scores[n]; student_test(questions, n, scores); printf("正确率:"); for (int i = 0; i < n; i++) { printf("%.2f%%", (float)scores[i] / num_questions * 100); } printf(" "); return 0; }这段代码首先定义了一个
generate_question函数用于生成题目,然后定义了一个generate_questions函数用于生成题目数组。接着定义了一个student_test函数用于模拟学生做题并计算得分。最后在main函数中调用这些函数完成任务。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
解决 无用评论 打赏 举报