设计思路:

1.随机函数生成两个随机数作为两个操作数。运算符按照加减乘除的顺序依次计算。
2.将操作数额运算符按照算式的顺序顺出。
3.将每一个式子的结果保存在一个数组中。
4.再讲每道题的结果依次输出。
一些细节:
1.二年级学生的题目,没学过负数,减法须大数减去小数
2.除法,被除数不能是0,并且大数除以小数的居多。
3.这是出题,题目和答案须分开写。
4.调试的时候,发现每次调用rand的时候产生的数都一样,后来用srand(time(NULL))来解决。

课上没有写出来的原因:

好长时间没有写程序了,有点生;还有忘记随机函数rand的头文件了;看到题目之后,就想把程序写的跟题目所要求的理想化的程序,比较完善的程序,以至于在一定时间内没有写完。

源程序代码:

#include "stdafx.h"

#include<iostream.h>

#include<time.h>

#include<stdlib.h>

void main()

{

  int fst=0,sed=0;//两个操作数  

  char sf;//运算符  

  int js[30],jy[30];//存放运算结果,js是结果(商),jy是余数  

  char ysf[4]={'+','-','*','/'};//运算符  

  int i=0,y=0,temp;   

  cout<<"30道四则运算的题目是:"<<endl;  

  srand(time(NULL));

  while(i<30)  

  {  

     fst=1+rand()%99;//随机生成两个0到100之间的整数   

     sed=1+rand()%99;      

     if(y==4)//运算符顺序按照+-*/的顺序   

     y=0;   sf=ysf[y];

       if(((y==1)||(y==3))&&(fst<sed))//若是减法运算,则调整操作数,是较大的数减去较小的数;  

     {    temp=fst;   

       fst=sed;

        sed=temp;   

     }  

     cout<<i+1<<". "<<fst<<sf<<sed<<"=\t";//输出算式  

     if((i+1)%4==0)    

      cout<<endl;   

    switch(sf)  

     {    

      case '+':js[i]=fst+sed,jy[i]=-1;break;    

      case '-':js[i]=fst-sed,jy[i]=-1;break;   

      case '*':js[i]=fst*sed,jy[i]=-1;break;    

      case '/':js[i]=fst/sed,jy[i]=fst%sed;break;    

      default:cout<<"出错"<<endl;  

     }  

     i++;   y++;  

  }

     cout<<endl<<"以上题目的结果是:"<<endl;

      for(i=0;i<30;i++)  

    {      if(jy[i]==-1)    

        cout<<i+1<<". "<<js[i]<<"\t\t";   

      else    

        cout<<i+1<<". "<<js[i]<<"…"<<jy[i]<<"\t";//输出除法运算的结果   

      if((i+1)%4==0)    

        cout<<endl;  

    }

}

结果截图:

 

posted on 2015-03-06 19:42  梦里侃花落  阅读(234)  评论(0编辑  收藏  举报