标题:小学生测验问题,高手帮忙解决一下!有些功能实现不了
只看楼主
耨人
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2012-4-1
结帖率:100%
 问题点数:0 回复次数:1 
小学生测验问题,高手帮忙解决一下!有些功能实现不了
程序代码:
#include  <stdio.h>
#include  <stdlib.h> /* 随机库函数 */
#include  <time.h>    /* 时间库函数 */
int count=0, ok=0;        /* count表示回答次数, ok表示回答正确次数 */

int add(int x,int y)
{
    int result = 0;
    printf("%d + %d = ",x,y);
    scanf("%d",&result);
    count++;
    if(result==(x+y))  return 1;
    else  return 0;

}
int minus(int m,int n)
{
int result = 0;
printf("%d - %d = ",m,n);
scanf("%d",&result);
count++;
if(result==(m-n)) return 1;
else return 0;
}
void print(int flag)
{
    if(flag==1)  printf("回答正确!\n");
    else printf("回答错误!\n");
}
void main()
{  int x, y, m, n, p, op, flag=0,i;   
   srand(time(NULL));/* 随机函数初始化 */

 
   for(i=0;i<10;i++)
      { p=rand()%1;
        if (p==1)
   {   
       x=rand()%50;
       y=rand()%50;

       flag=add(x,y);
       print(flag);
     
       if(flag==1) ok++;
   }

 
  else
   {  m=1+rand()%50;
      n=1+rand()%50;
      flag=minus(m,n);
      print(flag);
      if(flag==1)  ok++;
   }
   }
   printf("您总共回答了%d道题,答对%d道题,总得分: %d\n",count,ok,ok*10);
   printf("\n");
}
题目是这样的
小学生测验,面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。要求至少具有如下功能:
(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以下“TRY AGAIN”。
提示:可以利用随机数生成函数rand()。


我写的一部分代码……

为什么rond函数只能随机出减法,不能随机出加法。别的功能根本没有头绪,能不能给一点提示啊

搜索更多相关主题的帖子: 小学生 
2012-04-07 19:08
苦寒
Rank: 2
等 级:论坛游民
帖 子:18
专家分:55
注 册:2012-3-22
得分:0 
#include  <stdio.h>
#include  <stdlib.h> /* 随机库函数 */
#include  <time.h>    /* 时间库函数 */

void main()
{  
    int x, y, op,i,j,result,score=0,temp,input,count=0;
   
    srand(time(NULL));/* 随机函数初始化 */
    for(i=0;i<10;i++)
    {
       op=rand()%2;
       x=rand()%51;
       y=rand()%51;
       if (op)
       {   
           result=x+y;
           if(result>50)
           {
               i--;
               continue;
           }
           printf("%d + %d = ",x,y);

       }
       else
       {           
           if(x<y)
           {
               temp=x;
               x=y;
               y=temp;
           }
           result=x-y;
           printf("%d - %d = ",x,y);
       }
       for(j=0;j<3;j++)
       {
           scanf("%d",&input);
           if(input==result)
           {
               printf("回答正确!\n");
               count++;
               score=score+10-(j*2+(j==0?0:1));
               break;
           }
           else
           {
               if(j<2)
                  printf("回答错误!请重新输入答案。\n");
               else
                  printf("回答错误!请做下一题!\n");
           }
       }
    }
   printf("您总共回答了%d道题,答对%d道题,总得分: %d\n",i,count,score);   
}


2012-04-07 21:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-365331-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023383 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved