C语言编程—自动生成四则运算

#include<stdio.h>
#include<time.h>
main()
{
    int a,b,i,j,k,l;
    double c,d,e,f;
    while (1)
    {
        srand((int)time(0));
        //使用srand(time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒)
        printf("1:整数 2:小数 0:退出");
        printf("\n");
        scanf("%d",&j);
        switch(j)
        {
        case 1:
             printf("请选择: 1:加法运算 2:减法运算 3:乘法运算 4:除法运算\n");
             scanf("%d",&k);
             switch(k)
             {
             case 1:
                  for (i=0;i<30;i++)
                  {
                     a=rand()%100+1;
                     b=rand()%100+1;
                     printf("%d+%d=\t\t",a,b);
                  }
                    printf("\n");
                  break;
             case 2:
                 for (i=0;i<30;i++)
                 {
                    a=rand()%100+1;
                    b=rand()%100+1;
                    printf("%d-%d=\t\t",a,b);
                 }
                 printf("\n");
                 break;
             case 3:
                 for (i=0;i<30;i++)
                 {
                    a=rand()%100+1;
                    b=rand()%100+1;
                    printf("%d*%d=\t\t",a,b);
                 }
                 printf("\n");
                 break;
             case 4:
                 for (i=0;i<30;i++)
                 {
                      a=rand()%100+1;
                    b=rand()%100+1;
                    printf("%d÷%d=\t\t",a,b);
                 } 
                 printf("\n");
                 break;
             }
             break;
      case 2:
          printf("请选择: 1:加法运算 2:减法运算 3:乘法运算 4:除法运算\n");
          scanf("%d",&l);
          switch(l)
          {
          case 1:
              for (i=0;i<30;i++)
                  {
                     c=rand()%100+1;
                     d=rand()%100+1;
                     e=(rand()%100)*0.01;
                     f=(rand()%100)*0.01;
                     printf("%2.2f+%2.2f=\t",c+e,d+f);
                  }
                    printf("\n");
                  break;
          case 2:
              for (i=0;i<30;i++)
                  {
                     c=rand()%100+1;
                     d=rand()%100+1;
                     e=(rand()%100)*0.01;
                     f=(rand()%100)*0.01;
                     printf("%2.2f-%2.2f=\t",c+e,d+f);
                  }
                    printf("\n");
                  break;
          case 3:
              for (i=0;i<30;i++)
                  {
                     c=rand()%100+1;
                     d=rand()%100+1;
                     e=(rand()%100)*0.01;
                     f=(rand()%100)*0.01;
                     printf("%2.2f*%2.2f=\t",c+e,d+f);
                  }
                    printf("\n");
                  break;
          case 4:
              for (i=0;i<30;i++)
                  {
                     c=rand()%100+1;
                     d=rand()%100+1;
                     e=(rand()%100)*0.01;
                     f=(rand()%100)*0.01;
                     printf("%2.2f/%2.2f=\t",c+e,d+f);
                  }
                    printf("\n");
                  break;
          }
          break;
      case 0:
              exit(0);
              break;
        }
    }
}

感想:这个程序写出来感觉不难,但是如果要更好的话,还要继续努力。通过写这个程序,我学习到了语句:srand((int)time(0));。这条语句可以把当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒),要是没有的话,会发现每一次运行的结果都一样,即“不是随机的随机”,显然不是我们想要的。四则运算题目,需要产生随机数,那么问题来了,产生的是整数还是小数?想产生哪个区间的整数,就用rand()对几求余加1,例如想在1到100之间取整,那么可以rand()%100+1。还有,小数部分,首先要想到的是小数点后几位,我总结出了通式:(rand()%10x)*10-x。本程序还有很多优化的地方,有望继续加油!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。