四则运算2代码

一、问题描述:

一、要求:
    1、题目避免重复
    2、可定制(数量/打印方式)
    3、可以控制下列参数:是否有乘除法,是否有括号,数值范围,加减有无负数,除法有无余数,是否支持分数(真分数假分数),

         是否支持小数(精确到多少位),打印中每行的间隔。

二、问题分析:

  问题一:题目避免重复

    srand(time(NULL))函数;
  问题二:可定制(数量/打印方式)

    数量:将题目数量以数组的形式让用户输入;
    打印方式:以用户的输入数字来选择打印方式,几行几列...;

  问题三:可以控制:是否有乘除法、是否有括号、数值范围、加减有无负数、除法有无余数、是否支持分数(真假分数,、、、)
      是否支持小数(精确带多少位)、打印中每行间隔可调整

    在选则有无上述各种数,用数字0,1表示有无。

三、源代码:

#include<iostream.h>
#include<stdlib.h>
#include<time.h>

void main( )
 {
     srand(time(NULL));//避免题目重复
     int i,j, x,y,t,b;//x,y表示两个数随机数
     int a[7];
      cout<<"请输入要打印的题目数:"<<endl;  
      cin>>a[0];
      while(a[0]<=0)  //题目数必须为正数
      {
          cout<<"请重新输入有效的题目数:"<<endl;
          cin>>a[0];
      };
      cout<<"请选择否有乘除法(是1;否0):"<<endl;
      cin>>a[1];
      while((a[1]!=1)&&(a[1]!=0)) //只能选择1或0
      {
          cout<<"请重新输入有效的数值:"<<endl;
          cin>>a[1];
      };
      cout<<"请输入运算数的范围:"<<endl;
      cin>>a[2];
      while(a[2]<=0)  //运算数必须为正数
      {
          cout<<"请重新输入有效的范围:"<<endl;
          cin>>a[2];
      };
     cout<<"请选择结果有无负数(是1;否0):"<<endl;
     cin>>a[3];
     while((a[3]!=1)&&(a[3]!=0))  //只能选择1或0
     {
         cout<<"请重新输入有效的数值:"<<endl;
         cin>>a[3];
     };
     cout<<"请选择结果有无余数(是1;否0):"<<endl;
     cin>>a[4];
     while((a[4]!=1)&&(a[4]!=0))  //只能选择1或0
     {
         cout<<"请重新输入有效的数值:"<<endl;
         cin>>a[4];
     };
     cout<<"请输入要打印的列数: "<<endl;
     cin>>a[5];
     while(a[5]<=0)
     {
         cout<<"请重新输入有效列数:  "<<endl;
         cin>>a[5];
     };
     cout<<"请输入每行间隔数: "<<endl;
     cin>>a[6];

for(i=0;i<a[0];i++)
    {
        if(a[1]==1)//有乘除法的运算
        {
            t=rand()%4;
        }
        else//无乘除法的运算
        {
            t=rand()%2;
        }
        x=rand()%a[2]+1;
        y=rand()%a[2]+1;
        if(t==0)//加法
        {
           
         
           if((i+1)%a[5]==0)//判断是否换行
           {
               cout<<endl;
           if(a[6]!=0)
           {
               for(j=0;j<a[6];j++)
               {
                   cout<<‘\t‘;
               }
           }
           }
           cout<<i+1<<"·"<<x<<"+"<<y<<"="<<endl;
          
        }
        if(t==1)//减法,考虑是否存在负数
        {
            if(a[3]==0)//不存在结果负数
            {
                b=x;
                x=y;
                y=b;

}
            if(a[3]==1)//存在结果是负数
            {

}
           
           
             if((i+1)%a[5]==0)//判断是否换行
             {
                 cout<<endl;
            
              
               if(a[6]!=0)//如果间隔数不是零
               {

for(j=0;j<a[6];j++)
                   {
                       cout<<‘\t‘;
                   }
               }
             }
             cout<<i+1<<"·"<<x<<"-"<<y<<"="<<endl;
        }
        if(t==2)//乘法
        {
           
           
             if((i+1)%a[5]==0)//判断是否换行
           {
             
               if(a[6]!=0)
               {
                   cout<<endl;
              
                   for(j=0;j<a[6];j++)
                   {
                       cout<<‘\t‘;
                   }
               }
             }
             cout<<i+1<<"·"<<x<<"*"<<y<<"="<<endl;

}
        if(t==3)//除法,考虑结果是否有余数
        {
            if(a[4]==1)//结果有余数
            {}
            else
            {
                while(x%y!=0)//不能整除,重新生成随机函数
                {
                    x=rand()%a[2]+1;
                    y=rand()%a[2]+1;
                };

}
       
           
             if((i+1)%a[5]==0)//判断是否换行
           {
               cout<<endl;
            
               if(a[6]!=0)
               {
                   for(j=0;j<a[6];j++)
                   {
                       cout<<‘\t‘;
                   }
               }
             }
        cout<<i+1<<"·"<<x<<"/"<<y<<"="<<endl;
        }
    }
    cout<<"结束,欢迎下次使用"<<endl;
}

运行结果截图:

五、总结

  在本次编程中,有很多小的问题,但是确实我们平时不注意的问题,本来最初的想法是一层一层函数的调用,但是调用函数学的不是很明白,所以造成很多错误,后来又想用if或者switch语句各种嵌套,但是又出现很多代码重复,虽然思路不难,但是没什么技术含量,最后我又分情况讨论,把各种限制条件加到加减乘除每种情况下,这样只是打印输出需要重复写,其余的限制条件就不必了。所以我知道每次编写程序前,必须做到胸中有沟壑,并把详情仔细的过滤下,从中找到最好的解决方案。

六、周活动总结表


项目计划总结

周活动总结表

姓名:唐仙迪                                                       日期:2015/3/15


任务

日期


听课


编程


阅读课外数目


锻炼身体


写老师留得作业


业余活动


日总计

(分钟)


周日


100


30


130


周一


400


30


430


周二


200


30


60


290


周三


100


60


30


60


120


370


周四


200


30


30


40


300


周五


200


100


30


40


370


周六


40


30


40


120


230


阶段时间和效率

周数:1


总计


60


415


410


370


420


490


230


平均


30


69


68


61


70


67


46


最大


30


400


200


100


200


200


60


最小


30


15


30


30


30


30

2,时间记录日志:

学生:唐仙迪                                                                     日期:2015/3/15

老师:王建民                                                                      课程:PSP


日期


开始时间


结束时间


中断时间


净时间


活动


备注


3/10


08:00


12:00


40


200


上课


14:30


15:30


60


构思程序


16:00


17:00


60


写作业


21:00


21:30


30


读梦断代码


3/11


08:00


10:00


20


100


听课


11:00


12:00


60


编程


14:00


15:00


60


写作业


21:00


21:30


30


读梦断代码


3/12


10:00


12:00


20


100


听课


14:00


14:30


30


编程


15:00


16:00


60


写作业


21:00


21:30


30


读梦断代码


3/13


08:00


12:00


40


200


听课


14:00


15:40


100


编程


21:00


21:30


30


读梦断代码

3,缺陷记录日志:

学生:唐仙迪                                                                    日期:2015/3/15

老师:王建民


日期


编号


类型


引入阶段


排除阶段


修复阶段


修复缺陷


3/10


1


001


编程


编译


15min


描述:函数定义错误


2


002


编程


编译


10min


描述:函数调用出现错误


3/11


3


003


编程


编译


2


描述:switch语句掌握不好


4


004


编程


编译


10min


描述:输入时换行,导致错误


3/12


5


005


编程


编译


5min


描述:输出混乱


3/13


6


006


编程


编译


5min


描述:

在运行时,输出的格式不是按要求的输出的,原因是if语句插入的位置不正确

时间: 2024-09-16 06:41:52

四则运算2代码的相关文章

十进制四则运算计算器代码,输入为字符串

转发个严蔚敏老师的<数据结构及应用算法教程>里的十进制四则运算计算器代码,实习生笔试遇到过不会写,特此做个记录. ************************** 文件:calculator.c ************************** #define NonEmpty 0#define PLUS -1 // '+'#define MINUS -2 // '-'#define ASTERISK -3 // '*' #define SLANT -4 // '/'#define M

对随机产生分数或整数的四则运算的代码实现

一设计思想: 一.完成如何实现随机调取两个数和一个四则运算符号 二.如何实现以四则运算题的形式输出 三.如何实现选择性输出多少题 四.如何补加输出分数的功能 二.代码实现 package com.minirisoft; import java.util.*; public class Yunsuan { public static void main(String[] args){ Scanner input=new Scanner(System.in); System.out.println(

四则运算2代码测试

思路:每个变量,例如:(打印方式)有0/1两种选择,因此进行代码测试时要每种情况都试一下 前提:本程序每次需要输入的变量依次为:1,题目数量:2,数值范围:3,打印方式(0/1):4,有无乘除运算(0/1):5,加减运算中运算结果有负数(0/1) 测试数据: 第一组:10,10,0,0,0 第二组:10,10,1,0,0 第三组:10,10,0,0,1 第四组:10,10,0,1,0 第五组:10,10,1,1,1 第六组:10,10,1,0,0 第七组:20,20,1,0,1 总结:经过代码测

四则运算app代码上传GITHUB

团队: 郭志豪:http://www.cnblogs.com/gzh13692021053/ 杨子健:http://www.cnblogs.com/yzj666/ 刘森松:http://www.cnblogs.com/lssh/ 谭宇森:http://www.cnblogs.com/dalaotan/ GITHUB地址:https://github.com/Sub-key/1/tree/master/app app功能实现                         主要类代码: Cacul

四则运算2代码实现

1.设计思想: 主要运用switch语句进行选择,运用随机函数避免题目重复,其他思想在上一篇有所陈述. 2.源程序代码: 1 //信1305 郭婷 20132916 2 #include <iostream> 3 #include <time.h> 4 using namespace std; 5 6 int main() 7 { 8 srand(time(NULL)); 9 int x1,x2,flag,i,j; 10 int x3,x4; 11 int a1,a2; 12 ch

四则运算界面代码1

package opar; import java.awt.Dimension;import java.awt.Toolkit;import java.awt.event.ActionListener;import java.util.*; import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.Color;import java.awt.Font; public class T {    private st

关于四则运算的代码debug测试

1.首先检测题目是否能为负数,0? 截图: 总结:如图所示出题数目为0的时候,并没提示重新输入,而是输出空白,而当输出题目为负数的时候系统提示错误,并且提示终止 2.检测操作值得范围:   总结:当操作数范围为负数的时候,系统并未提示出错,但是范围为负数的绝对值,而当把范围设置为0的时候,系统提示停止工作 3.当输入(Y/N)意外的字符时会出现什么结果? 截图: 总结:如图所示当输入字母或者数字的时候系统出错,输出空格,并无运算式输出 4.当运算式的个数和间隔输入字母或者数字的时候系统有无报错?

个人作业1——四则运算题目生成程序(基于控制台)

No.1 四则运算题目生成程序(基于控制台) 程序代码 需求分析: 能够根据用户自身对题目数量的需求自动生成一定数量的包含分数的四则运算题目的命令行程序. 功能设计: 除了整数以外,还要支持真分数的四则运算,真分数的运算 并且要求能处理用户的输入,并判断对错,打分统计正确率 要求能处理用户输入的真分数 使用 -n 参数控制生成题目的个数 设计实现: 程序是用c++实现的,主要有四个函数,主函数随机生成整数或者分数算法,divisor(int i, int j)计算最大公约数,zs为计算整数算法,

自动生成小学生四则运算(C语言)

我写的这个自动生成小学生四则运算的代码是根据我在百度上看到的一篇博客改的,地址为http://www.cnblogs.com/ys1101/p/4368103.html.它的功能不够完整,只有整数的加.减.乘.除,我在此基础上增加了真分数的加.减.乘.除,及统计分数.我把我写的代码放在了GitHub上,地址为https://github.com/cygoodboy/helloworld.