永发信息网

C语言问题2: 为小学生设计一个测验简单四则运算的系统

答案:3  悬赏:10  手机版
解决时间 2021-03-03 12:21
,功能为:完成10道题的解答,每道题10分,测完10道题后,给出总成绩。
说明:
(1)这个题目我要求得很笼统,目的是想看看谁在设计系统的时候考虑得更周全;
(2)据库函数中有一个函数rand可以生成伪随机数,结合srand函数后可以生成真随机数,通过下列说明(含程序或程序段)验证这两个函数的使用并尽可能灵活地应用到本系统的设计中。
最佳答案
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define YES 1
#define NO 0
#define NUM_PROBLEM 10 //题目的数量
#define LIMIT_ADDSUB 100 //加法和减法操作数的上限
#define LIMIT_MULDIV 20 //乘法和除法操作数的上限

int expressionCount = 0;
struct expression
{
int num1;
int num2;
char op;
}expr[NUM_PROBLEM];

int createProblem(void);
int createAddProblem(void);
int createSubProblem(void);
int createMulProblem(void);
int createDivProblem(void);
int expressionExist(int num1, int num2, char op);

int main()
{
int i, answer, result;
float score;

srand((unsigned)time(NULL));
score = 0.0;
for (i = 1; i <= NUM_PROBLEM; ++i)
{
printf("第%2d题: ", i);
result = createProblem();
scanf("%d", &answer);
getchar();
if (result == answer)
score += 100.0/NUM_PROBLEM;
}
printf("Final Score:%.0f\n", score);

return 0;}
int createProblem(void)
{
char op;
int result;

op = rand()%4+1;
switch (op)
{
case 1: //加法
result = createAddProblem();
break;
case 2: //减法
result = createSubProblem();
break;
case 3: //乘法
result = createMulProblem();
break;
case 4: //除法
result = createDivProblem();
break;
default:
exit(1);
}

return result;}
int createAddProblem(void)
{
int num1, num2;

do
{
num1 = rand()%LIMIT_ADDSUB+1;
num2 = rand()%LIMIT_ADDSUB+1;
} while (expressionExist(num1, num2, '+'));
printf("%3d + %3d = ", num1, num2);

return (num1+num2);}
int createSubProblem(void)
{
int num1, num2, temp;

do
{
num1 = rand()%LIMIT_ADDSUB+1;
num2 = rand()%LIMIT_ADDSUB+1;
if (num1 < num2)
{
temp = num1;
num1 = num2;
num2 = temp;
}
} while (expressionExist(num1, num2, '-'));
printf("%3d - %3d = ", num1, num2);

return (num1-num2);}
int createMulProblem(void)
{
int num1, num2;

do
{
num1 = rand()%LIMIT_MULDIV+1;
num2 = rand()%LIMIT_MULDIV+1;
} while (expressionExist(num1, num2, '*'));
printf("%3d * %3d = ", num1, num2);

return (num1*num2);}
int createDivProblem(void)
{
int num1, num2;

do
{
num1 = rand()%LIMIT_MULDIV+1;
num2 = rand()%LIMIT_MULDIV+1;
} while (expressionExist(num1, num2, '/'));
printf("%3d / %3d = ", num1*num2, num1);

return num2;}
int expressionExist(int num1, int num2, char op)
{
int i;

for (i = 0; i < expressionCount; ++i)
{
if (expr[i].num1 == num1 && expr[i].num2 == num2 && expr[i].op == op)
return YES;
}

expr[i].num1 = num1;
expr[i].num2 = num2;
expr[i].op = op;
++expressionCount;

return NO;}
先拿去调试,把问题和需要补充的功能发给我,明天再帮你完善。
全部回答
私信我 我给你写
你说呢...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
射、的读音、请教。
想知道腾讯视频会员在那里买最便宜
永达玻璃总汇怎么去啊,有知道地址的么
白酒啤酒一起喝在吃扇贝有什么后果
2016贵州省岑巩县《快乐暑假》英语作文
红蔚广场地址在哪,我要去那里办事
请问营运助理是做什么的?
某钟表的分针长10厘米,从中午12时到下午3时,
井子冲于医师寓所怎么去啊,有知道地址的么
怎么防止qq克隆好友
安以轩与陈荣炼婚礼日期另有深意是怎么回事?
淘宝咸鱼卖东西怎么设置成不包邮
2分之1+6分之1+12分之1 20分之1+…+9900分之1
荒糖甜品NO.3外卖店在哪里啊,我有事要去这个
问几个单老三侠剑的问题
推荐资讯
人读书是为了什么?为什么老师不教学生如何赚
重庆市九龙坡区石桥长城五金厂我想知道这个在
魔兽世界7.0恶魔猎手为什么不能创建
去宁夏沙湖要带些什么食物
网易魔兽角色分离绑定账号物品还在么?
e代商务酒店这个地址在什么地方,我要处理点
营养素推荐每日摄入量的参考指标
芳姐化妆品宝坻店地址有知道的么?有点事想过
武汉知名的期货公司有哪些
蓓蕾钢琴行地址有知道的么?有点事想过去
张家口市环城农贸有限公司地址有知道的么?有
Wie spaet ist es jetzt?A Es ist fuenf vor
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?