用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()

}

1.新建一个Excel文件打开它,随便一个单元格输入下面的公式

=RANDBETWEEN(0,9)

这是一个随机函数,随机生成一个0到9的数字。连续按F9试试。

2.用这个函数来出一套最简单的题:一位数乘法。

在最左上角的单元格,就是A1单元格输入下面的公式:

=RANDBETWEEN(1,9)&"×"&RANDBETWEEN(1,9)&"="

设置16号字体,在第一行每隔一列复制一个一共复制5个,然后下拉20行,行高34.5。

3.一套100道的题出好了,预览一下打印效果!

记住:如果要求打印出来的每一份题都不一样,每打印一份前先按F9刷新一下。

4.接下来看一下除法题怎么出。如果不考虑有没有余数,也就是说是整除的或是带余数的都行,这种题比照第4步的方法即可,两位数除以一位数公式如下:

=RANDBETWEEN(10,99)&"÷"&RANDBETWEEN(1,9)&"="

如果只要整除的不要带余数的,需要先随机生成一个整数作为除数,然后用它乘以另外一个整数得到被除数,步骤如下:

1) A1单元格输入公式:=RANDBETWEEN(1,9)

生成一个1到9之间的除数。等公式全部做好以后,需要把它隐藏起来。

2) B1单元格输入公式:=RANDBETWEEN(1,9)*A1&"÷"&A1&"="

这才是最终的公式。

3)把A1和B1单元格向右复制5份,中间要隔开一个单元格。

4)下拉20行,行高34.5

5)把生成被除数的那些列隐藏起来。

5.两位数整除一位数100道打印预览:

6.竖式题怎么出呢?下面举一个除法竖式的例子。

7.除法竖式出题步骤:

1) M1单元格输入公式:=RANDBETWEEN(10,999)

这是被除数种子,最后需要隐藏起来。

2)N1单元格输入公式:=RANDBETWEEN(2,9)

这是除数种子,最后需要隐藏起来。

3) P1单元格输入公式:=M1&"÷"&N1&"="

这是横式题目。

4) P3单元格输入公式:=") "&M1

需要加上“上边框”,和左边的“)”一起构成除法竖式的框架。

5) O3单元格输入公式:=N1

这是竖式题目中的除数。

6)隐藏M列和N列。

8.P1单元格的公式变一下:

=M1&"÷"&N1&"="&INT(M1/N1)&"…"&M1-INT(M1/N1)*N1

这样就带上答案了。当然,答案是给家长检查判钩钩用的。


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

原文地址: http://outofmemory.cn/yw/8107117.html

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

发表评论

登录后才能评论

评论列表(0条)

保存