小学生300道练习题程序及问题

题目要求:自动生成一百以内数的四则运算;同时也支持真分数的四则运算;

根据题目要求,决定使用随机数函数srand(),rand()函数来产生操作数,rand()%100即可产生一百以内的数。rand()%4来产生0~3四个数来选择四则运算。

#include<stdio.h>
#include<time.h>
#include<Windows.h>
#include<stdlib.h>
void main()
{
   int a, b,c,d,i,op,x;
   srand(unsigned(time(NULL)));
   printf("请选择类型:\n1 整数四则运算;\n2 真分数四则运算;\n");
   scanf("%d", &x);
  switch (x)
  {
   case 1:
   {
   for (i = 0; i < 30; i++)
   {
      a = rand() % 100;
      b = rand() % 100;
      op = rand() % 4;
      if (op == 0)
       printf("%d + %d =\n", a, b);
      else if (op == 1 && a>b)
       printf("%d - %d =\n", a, b);
      else if (op == 2)
       printf("%d * %d =\n", a, b);
      else if (op == 3 && b != 0)
       printf("%d ÷ %d =\n", a, b);
     }
  break;
   }
  case 2:
  {
      for (i = 0; i < 30; i++)
   {
      a = rand() % 100;
      b = rand() % 100;
      while (b==0)
       b = rand() % 100;
      c = rand() % 100;
      while (c==0)
       c = rand() % 100;
      d = rand() % 100;
      while (d==0)
       d = rand() % 100;
      if (a < b && c < d)
    {
       op = rand() % 4;
       if (op == 0)
       printf("%d/%d + %d/%d =\n", a, b, c, d);
       else if (op == 1 && (a / b) >= (c / d))
       printf("%d/%d - %d/%d =\n", a, b, c, d);
       else if (op == 2)
       printf("%d/%d * %d/%d =\n", a, b, c, d);
     else if (op == 3)
             printf("%d/%d ÷ %d/%d =\n", a, b, c, d);
    }
      else i--;
     }
     break;
    }
 }
 system("pause");
}

程序运行结果:

 

程序基本满足了题目要求,可以根据需要选择整数运算或者真分数运算。

但是因为学术不精,程序不够简洁。耗时半天。

编程期间遇到黑框闪退问题,询问同学,网上查找通过添加头函数#include<windows.h>,以及冻结屏幕system("pause")问题解决。真分数运算过程中if对于两个操作数的判断时,不满足运算条件时计数变量i也增加,是程序运行结果出题的数目不够要求。通过else语句,不满足条件时执行i--,问题解决。程序没有考虑分数运算时分数可以约分的情况,为用户的计算增加了工作量,也是对用户计算能力的训练吧!

希望经过编程训练,能力可以有所提高。

posted @ 2016-03-12 12:09  崔露露  阅读(594)  评论(1编辑  收藏  举报