用C语言写一个 小学生口算出题系统

用C语言写一个 小学生口算出题系统,第1张

一、设计的流程:

1. 主界面设计,选择练习或测试,按ESC结束程序。

2. 题型选择界面设计,选择加、减、乘、除或混合运算,按ESC返回主界面。

3. 系统随机出题,运算数及结果均在100以内,乘、除法应能整除,显示算式。

4. 练习时脊樱,系统随机出题,键入结果,正确错误均有提示,出错时允许再输入,最多三次机会,若还不正确,给出答案。继续出题,按ESC,显示总题数,正确数和正确率。

5. 测试时,系统自动出10道题,每题只给一次机会,每题10分,统计得分。结束后,给出总分,显示各题的对错信息,错误的给出答案。中间按ESC键结束。显示已作题的对错信息,错误的给出答案,不显示得分,按任意键返回题型选择界面。

相关知识:按键 *** 作、数组、指针、结构体等

二、例程:

#include<stdlib.h>

#include<stdio.h>

#include<conio.h>

#include<time.h>

void main()

{

  int a[10],b[10],d[10],c[10],num=0,result,add=0

  float val

  char fa[5]={'+','-','*','/'}

  

  /* 出10道题 */

  while(1)

  {

   srand((unsigned)time(NULL))

   d[num]=abs(rand())%4/* 保证出题算法的随机性 */

   while(1)   /* 保证出题成功 */

   {

   c[num]=-1

   a[num]=abs(rand())%100

   b[num]=abs(rand())%100

   if(d[num]==0) c[num]=a[num]+b[num]

   else if(d[num]==1) c[num]=a[num]-b[num]

   else if(d[num]==2) c[num]=a[num]*b[num]

   else if(d[num]==3) 

     {

       if(b[num]>0)val=1.0*a[num]/b[num]

       else val=-1

     }

   if(d[num]<=2)

      { 

       if(c[num]>=0 && c[num]<=100) break

  纤野旅     }

   else

      { 

    if(a[num]==int(val)*b[num] && val>=0)

       {c[num]=val break}

   毁凳    }

   }

   num++

   if(num==10) break

  }

  /* 回答 */

  num=0

  while(1)

  {

   printf("%d %c %d= ",a[num],fa[d[num]],b[num])

   scanf("%d",&result)

   if(result==c[num])

   {

    printf("回答正确!\n")

    add+=10

   }

   else

    printf("错误,正确答案: %d\n",c[num])

      num++

      if(num==10) break

    }

  printf("\n得分:%d\n",add)

  getch()

}

复制粘贴到记事本,另存为xx.vbs,编码选ANSI

rem 两位数加法口算/心算练习小程序

number1="10~99"

number2="10~99"

operators=Array("+")

count=10

a=split(number1,"~"):b=split(number2,"~")

For i=1 to count

    Randomize

    o=Int(rnd * (Ubound(operators) + 1))

    If operators(o) = "x" Then

        operators(o)="*"

    End If

    If operators(o) = "÷" Then

        operators(o)="/"

    End If

    Do While True

        n1=Int(rnd * (a(1)-a(0)+1)+a(0))

        n2=Int(rnd * (b(1)-b(0)+1)+b(0))

        formula=CStr(n1) & operators(o) & CStr(n2)

        If operators(o) = "/" Then

  告陵          t=n1 Mod n2

            If t=0 Then

                Exit Do

            End If

        Else

            Exit Do

        End If

    Loop

 带友嫌  蠢手 Do While True

        n=inputbox(CStr(i) & "、" & formula & "=?", "Mental Arithmetic")

        If n = "" Then

            Exit Do

        Else

            If n = CStr(Eval(formula)) Then

                msgbox "correct" & vbCrLf & formula & "=" & n,,"Bingo"

                Exit Do

            Else

                msgbox "incorrect",,"Sorry"

            End If

        End If

    Loop

Next

应该有规定是多少范围内整数吧 还有就是加减乘除吧 随机就用math.random()乘范围出数 然后取整 加减乘数也用随机数switch判断1234分别是加减乘除 倒数用timer和timertask类实现 那个手机的得响游裂应一个向下获取焦点事件 类似的onKeyReleaseDown吧 下一个组件.setFocus 提交就是onSubmit事孙裂件 处理action或直接跳到ftl或者jsp上处理 传入结果参数程序分别判断下正确个数 然后显示就则磨闭行了 正确率乘5就是分数


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12301588.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存