zoukankan      html  css  js  c++  java
  • 四则运算之C++版

    一、设计思想

      之前的版本是用Java语言实现的,在这次的练习中,我用C++语言将其功能逐一实现,其实C++与Java有很多相似之处,只是一些书写格式不同,思路还是一样的。

    二、源代码

      1 #include<iostream.h>
      2 #include<stdlib.h>
      3 #include<math.h>
      4 
      5 int random_1(int n)
      6 {
      7     return rand()%n;
      8 }
      9 int random_2(int n1,int n2)//自定义产生两数之间的随机数
     10 {
     11     int temp = 0,b = 0;
     12     while((temp=rand()%n2)>=n1)//如果产生的随机数大于n1,就将其返回,否则就继续
     13     {
     14         b = temp;            
     15     }    
     16     if(b==0)
     17         b = b + 2*n1;
     18     return b;
     19 }
     20 
     21 void jianfa(int a,int b)//因为小学二年级没有学负数,所以相减不能为负数
     22 {
     23     if(a>=b)
     24         cout<<a<<" - "<<b<<" = 	";
     25     else
     26     {
     27         cout<<b<<" - "<<a<<" = 	";
     28     }
     29 }
     30 void chufa(int a,int b)//为了使除法有意义,除数不能为零,
     31 {
     32     if(b>0)        
     33         cout<<a<<" ÷ "<<b<<" = 	";
     34     //如果除数为零,就将其加上10,再进行运算
     35     else
     36     {
     37         b = b + 10;
     38         cout<<a<<" ÷ "<<b<<" = 	";
     39     }
     40 }
     41 char zhenfenshu(int a,int b)//产生真分数的方法
     42 {
     43     if(a<=b)
     44         cout<<a<<"/"<<b;
     45     else
     46         cout<<b<<"/"<<a;
     47     return 0;
     48 }
     49 void main()
     50 {
     51     bool flag = true;
     52     while(flag)
     53     {
     54         cout<<"<---小学生二年级课后作业,每天30道四则运算练习--->"<<endl;
     55 
     56         cout<<"
    1、请输入今日想完成的题目数量:";
     57         
     58         int num;
     59         cin>>num;
     60 
     61         cout<<"
    2、请选择是否有乘除运算:(有/否:1/0):";
     62 
     63         int num1;
     64         cin>>num1;
     65 
     66         cout<<"
    3、请选择是否需要真分数运算:(有/否:1/0):";
     67 
     68         int num2;
     69         cin>>num2;
     70 
     71         cout<<"
    4、请输入每行打印的个数:";
     72 
     73         int num4;
     74         cin>>num4;
     75 
     76         cout<<"
    5、请选择需要几位数的运算:(请输入大于1的位数,
    如不需要定制,输入1,随机产生不大于1000的运算):";
     77 
     78         int t,num3;
     79         cin>>t;
     80         num3 = t-1;
     81         
     82         int count = 0,d1,d2,k1,k2,k3,k4;//计数器
     83 
     84         for (int i=0;i<num ;i++ )
     85         {    
     86             if(num3==0)//如果输入为1,就将随机产生不大于1000的数
     87             {
     88                 d1 = random_1(1000);
     89                 d2 = random_1(1000);
     90                 k1 = random_1(1000);
     91                 k2 = random_1(1000);
     92                 k3 = random_1(1000);
     93                 k4 = random_1(1000);
     94             }
     95             else
     96             {
     97                 d1 = random_2((int)pow(10,num3),(int)pow(10,num3+1)-1);//自定义的产生随机数
     98                 d2 = random_2((int)pow(10,num3),(int)pow(10,num3+1)-1);
     99                 k1 = random_2((int)pow(10,num3),(int)pow(10,num3+1)-1);
    100                 k2 = random_2((int)pow(10,num3),(int)pow(10,num3+1)-1);
    101                 k3 = random_2((int)pow(10,num3),(int)pow(10,num3+1)-1);
    102                 k4 = random_2((int)pow(10,num3),(int)pow(10,num3+1)-1);
    103             }            
    104             
    105             int k = 0,r = 0;//声明两个变量
    106             if(num1==0 && num2==0)//都没有
    107             {
    108                 r = random_1(4);
    109                 if(r%2!=0)//将产生的奇数随机数取出
    110                     k=r;
    111                 if(k==0)//即使已经将k判断为奇数了,但还是会等于0,所以就再判断一次,如果为0,就将其+1;
    112                     ++k;
    113             }
    114             else if(num1==0 && num2==1)//没乘除,有分数
    115                 k = random_1(4);
    116             else if(num1==1 && num2==0)//有乘除,没分数
    117             {
    118                 r = random_1(8);
    119                 if(r%2!=0)
    120                     k=r;
    121                 if(k==0)
    122                     ++k;
    123             }
    124             else//都有
    125                 k = random_1(8);                
    126             switch(k)//前两个是加法,2,3是减法,4,5是乘法,6,7是除法
    127             {
    128                 case 0:
    129                     cout<<zhenfenshu(k1,k2)<<" + ";
    130                     cout<<zhenfenshu(k3,k4)<<" = 	";
    131                 break;
    132                 case 1:
    133                     cout<<d1<<" + "<<d2<<" = 	";
    134                 break;
    135                 case 2:
    136                     cout<<zhenfenshu(k1,k2)<<" - ";
    137                     cout<<zhenfenshu(k3,k4)<<" = 	";
    138                 break;
    139                 case 3:
    140                     jianfa(d1,d2);
    141                 break;
    142                 case 4:
    143                     cout<<zhenfenshu(k1,k2)<<" * ";
    144                     cout<<zhenfenshu(k3,k4)<<" = 	";
    145                 break;
    146                 case 5:
    147                     cout<<d1<<" * "<<d2<<" = 	";
    148                 break;
    149                 case 6:
    150                     cout<<zhenfenshu(k1,k2)<<" ÷ ";
    151                     cout<<zhenfenshu(k3,k4)<<" = 	";
    152                 break;
    153                 case 7:
    154                     chufa(d1,d2);
    155                 break;                
    156             
    157                 default:
    158                     cout<<"duang,duang,daung";
    159                 break;
    160             }
    161             count++;
    162             if(count%num4==0)
    163                 cout<<endl;
    164         }        
    165         cout<<"以上共有:"<<count<<"道题。"<<endl;
    166         int s;
    167         cout<<"是否继续(是1/否0)";
    168         cin>>s;
    169         if(s==1)
    170             flag = true;
    171         else
    172             flag = false;
    173     }
    174 }

    三、运行结果

    (有乘除,没分数)

    (乘除,分数都没有)

    (没乘除,有分数)

    (有乘除,有分数)

    四、心得体会

      由于之前使用的是Java语言编写的程序,代码的风格也都是Java语言的风格,但是c++在很多方面也跟Java有相似之处,在改动的过程中疏忽了c++在调用函数的使用,必须要在前面声明函数,否则会报错,还有就是,c++中没有String数据类型,所以要将其改成char类型的。

    五、PSP表格

  • 相关阅读:
    JS监听组合按键
    XSS初体验
    debuggap,移动端调试新方式
    简析分页逻辑
    【译】Javascript中的数据类型
    【译】typeof null的前世今生
    一个跨域请求的XSS漏洞再续
    H5页面音频自动播放问题
    一个跨域请求的XSS续
    成功自我管理之压力管理
  • 原文地址:https://www.cnblogs.com/KevinBin/p/4357794.html
Copyright © 2011-2022 走看看