求c语言高手,帮忙设计个程序!

题目,小学生测验功能要求:1.电脑随机出10道题,每题10分,程序结束时显示学生得分2.确保算式没有超过1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差... 题目,小学生测验
功能要求:1.电脑随机出10道题,每题10分,程序结束时显示学生得分
2.确保算式没有超过1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许
3.每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次结束则会输出正确答案
4.对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次5分,否则不得分
5.总成绩90以上显示“SMART ”,80~90显示“GOOD”,70~80显示“OK”,60~70显示"PASS”,60以下“TRYAGAIN”
求高手解决,发到我邮箱 361096328@qq.com 非常感谢!
展开
 我来答
夜游神小翠
2012-05-30 · TA获得超过1795个赞
知道小有建树答主
回答量:416
采纳率:0%
帮助的人:178万
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int score = 0;
int weight[3] = {10, 7, 5};
int x, y, answer, sign, temp;
int times = 0, count = 0;
char opr[2] = {'+', '-'};
char go_on = 'Y';
while(go_on == 'Y')
{
printf("开始测试:\n");
srand((unsigned)time(NULL));
for(count = 0; count < 10; count++)
{
times = 0;
x = rand() % 50;
y = rand() % 50;
sign = rand() % 2;
if(sign == 1)
{
if(x < y)
{
temp = x;
x = y;
y = temp;
}
answer = x - y;
}
else if(sign == 0)
{
answer = x + y;
if(answer > 50)
{
count--;
continue;
}
}
printf("%d %c %d = ", x, opr[sign], y);
do
{
scanf("%d", &temp);
if(temp == answer)
{
score += weight[times];
break;
}
else
{
times++;
if(times < 3)
printf("再仔细想想,重新输入:");
}
}while(times < 3);
if(times == 3)
{
printf("正确答案应该是:%d\n", answer);
}
}
if(score >= 90)
printf("SMART\n");
else if(score >= 80)
printf("GOOD\n");
else if(score >= 70)
printf("OK\n");
else if(score >= 60)
printf("PASS\n");
else
printf("TRY AGAIN!\n");
printf("是否继续进行测试(Y/N): ");
fflush(stdin);
scanf("%c", &go_on);
if(go_on == 'Y')
score = 0;
}
}
追问
谢谢,能帮下画下设计流程图,和设计思路吗?绝对选为满意答案!
追答
设计流程图有具体要求吗?比如说画什么东西等等。。详细说明一下, 然后我给你发邮箱里。
手持锅盔奔小康
2012-05-30
知道答主
回答量:18
采纳率:0%
帮助的人:12.7万
展开全部
只是设计吧
1、随机函数
2、对随机函数取取50的余数,确定第一个数字,再确定第二个数字的范围,
3、这个就不用设计了吧
4、记录下那一次正确,给出分数,也不用说了吧
5、将得分加起来,然后算总分,得出要显示的内容。

这个相当简单。。。
追问
是课程设计,求高手解决啊,编写下程序,发到我邮箱里面,361096328@qq.com!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1277661026
2012-05-30 · TA获得超过620个赞
知道答主
回答量:321
采纳率:0%
帮助的人:64.7万
展开全部
1、随机函数
2、对随机函数取取50的余数,确定第一个数字,再确定第二个数字的范围,
3、这个就不用设计了吧
4、记录下那一次正确,给出分数,也不用说了吧
5、将得分加起来,然后算总分,得出要显示的内容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-05-30
展开全部
//---------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//TOP宏用于确定出题的数字范围
#define TOP (50)

//exam()函数会输出一道测试题目,返回值表示回答次数,如果返回-1,表示最终没有答对
//参数num表示这是第几题,op表示题目类型0为加法,1为减法
int exam(int num,int op)
{
int cnt=1;
int a,b,c,res;
char oper;

a=rand()%TOP;
if (op) {
b=rand()%(50-a)+1;
oper='+';
res=a+b;
}
else{
b=rand()%a+1;
oper='-';
res=a-b;
}
printf("*****************\nNo. %d:\n",num);
do
{
printf("%d%c%d=",a,oper,b);
scanf("%d",&c);
if (c==res) puts("Great!");
else {
if (cnt<3)puts("Sorry,try again!");
++cnt;
}
}while(cnt<=3&&c!=res);
if (res!=c) printf("Sorry! the answer is: %d%c%d=%d\n",a,oper,b,res);
puts("*****************\n");
return res==c?cnt:-1;
}

//test()函数用于输出各个测试题目,并统计成绩,
//参数total表示共需要出几道题目,返回值表示总得分
int test(int total)
{
int i;
int sco=0;
for (i = 0; i<total; i++) {

switch (exam(i+1,rand()%2)) {
case 1:sco+=10;break;
case 2:sco+=7;break;
case 3:sco+=5;break;
}
}
return sco;
}

int main(void)
{
int s;
srand(time(NULL));
s=test(10);
printf("Score :%d\n",s);
if (s>90) {
puts("SMART!");
}
else if (s>80) {
puts("GOOD!");
}
else if (s>70) {
puts("OK");
}
else if (s>=60) {
puts("PASS");
}
else puts("TRYAGAIN");
return 0;
}
//---------------------------------------------------------------------------
追问
大神,那printf("*****************\nNo. %d:\n",num);
是什么意思哦? 需要那么多****************吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式