zoukankan      html  css  js  c++  java
  • 程序生成30道四则运算(包括整数和真分数)

    题目:

    花二十分钟写一个能自动生成小学四则运算题目的命令行 “软件”, 分别满足下面的各种需求。下面这些需求都可以用命令行参数的形式来指定:

     除了整数以外,还要支持真分数的四则运算。 (例如:  1/6 + 1/8 = 7/24)

     

    在软件工程课上,对于这道题目看了之后发现还是很简单的主要注意:

    (1)使用随机函数生成运算数

    (2)运算符号的随机确定

    (3)考虑除数是否为0若为0将如何处理

    (4)真分数的生成方法

    思考之后我写了如下代码:

     1 #include<iostream>
     2 using namespace std;
     3 #include<time.h>
     4 #include<string>
     5 
     6 int main()
     7 {
     8     int count=0 ;
     9     srand(time(NULL));//用系统当前时间设置rand()随机序列种子,保证每次运行随机序列不一样 
    10     char ch;
    11     while(count<30)
    12     {
    13         cout<<"选择做整数运算(输入'a')或真分数运算(输入'b')"<<endl;
    14         //产生整数的运算
    15         cin>>ch;
    16         if(ch=='a')
    17         {cout<<"开始产生四则运算:"<<endl;
    18         int shu1=0,shu2=0;
    19     //随机数产生0-100
    20     //shu1=srand(1000);
    21 
    22     
    23     shu1=0+rand()%100;
    24     shu2=0+rand()%100;
    25 
    26     int sum=0;
    27     int fushu=0;
    28     string fuhao[4]={"+","-","*","/"};
    29     fushu=((0+rand()%4)+4)%4;
    30     //cout<<fushu<<endl;
    31 
    32     //判断shu2是否为0和是否为除法 若为则重新生成
    33     while(shu2==0&fushu==3)
    34     {
    35         shu2=0+rand()%100;
    36     }
    37     //随机产生的符号
    38     switch(fushu)
    39     {
    40     case 0:cout<<shu1<<fuhao[fushu]<<shu2<<endl;break;
    41     case 1:cout<<shu1<<fuhao[fushu]<<shu2<<endl;break;
    42     case 2:cout<<shu1<<fuhao[fushu]<<shu2<<endl;break;
    43     case 3:cout<<shu1<<fuhao[fushu]<<shu2<<endl;break;
    44     }
    45         }
    46 
    47     //产生真分数的运算
    48         if(ch=='b')
    49         {
    50     int zhenfens1_m=0,zhenfens1_z=0,zhenfens2_m=0,zhenfens2_z=0;
    51     
    52     zhenfens1_m=0+rand()%100;
    53     zhenfens1_z=0+rand()%100;
    54 
    55     //判断产生的真分数正确性
    56     while(zhenfens1_m<zhenfens1_z)
    57     {
    58         zhenfens1_m=0+rand()%100;
    59         zhenfens1_z=0+rand()%100;
    60     }
    61 
    62     zhenfens2_m=0+rand()%100;
    63     zhenfens2_z=0+rand()%100;
    64 
    65     //判断产生的真分数正确性
    66     while(zhenfens2_m<zhenfens2_z)
    67     {
    68         zhenfens2_m=0+rand()%100;
    69         zhenfens2_z=0+rand()%100;
    70     }
    71 
    72     string fuhao[4]={"+","-","*","/"};
    73     int fushu=((0+rand()%4)+4)%4;
    74     //cout<<fushu<<endl;
    75 
    76     //判断shu2是否为0和是否为除法 若为则重新生成
    77     //随机产生的符号
    78     switch(fushu)
    79     {
    80     case 0:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<endl;break;
    81     case 1:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<endl;break;
    82     case 2:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<endl;break;
    83     case 3:cout<<"("<<zhenfens1_z<<"/"<<zhenfens1_m<<")"<<fuhao[fushu]<<"("<<zhenfens2_z<<"/"<<zhenfens2_m<<")"<<endl;break;
    84     }
    85 
    86         }
    87     count++;
    88     }
    89 }

    但是我写的程序没有类的封装还有也不好扩展,所以还有很大缺陷,若有朋友看了我的代码可以给我一下建议。

  • 相关阅读:
    【剑指offer】不使用新变量,交换两个变量的值,C++实现
    【剑指offer】不用加减乘除做加法,C++实现
    【剑指offer】求1+2+…+n,C++实现
    【剑指offer】左旋转字符串,C+实现
    给记事本添加接口,并通过菜单来执行自定义的功能
    修改PE文件的入口函数OEP
    360搜集隐私程序员级分析,供方舟子及大众参考
    Android窃取用户信息新思路
    如何整治那些敢偷用你Wi-Fi的人
    保护WIFI无线网络的安全
  • 原文地址:https://www.cnblogs.com/ly199553/p/5247658.html
Copyright © 2011-2022 走看看