四则运算设计03

题目要求

1学生写的程序必须能判断用户的输入答案是否正确

2程序必须能处理四则运算的混合算式

1 设计思路:

产生随机数以及题目中产生的数的个数

通过if判断是否符合条件

通过for循环来实现产生所需要的算式的个数

在具体实现过程中,通过对比用户答案和程序运行答案来判断答案的对错

2源程序代码:

#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
void main()
{
    int ProNum;
    int fanwei;
    int fushu;
    int yushu;
    int chengchu;
    int kuohao;   

    cout<<"请输入你想要出的题目的个数(请输入整数)"<<endl;
    cin>>ProNum;      

    cout<<"请输入取值范围的最小值(0~100)"<<endl;
    cin>>fanwei;  

    cout<<"请选择是否有负数选择1表示有选择0表示没有(请按要求选择1或0)"<<endl;
    cin>>fushu; 

    cout<<"请选择是否有余数 3表示有选择4表示没有(请按要求选择3或4)"<<endl;
    cin>>yushu;  

    cout<<"请选择是否有乘除 5表示有选择6表示没有(请按要求选择5或6)"<<endl;
    cin>>chengchu;  

    cout<<"请选择是否有括号 7表示有选择8表示没有(请按要求选择7或8)"<<endl;
    cin>>kuohao; 

    int num[10];
    int MyAnswer,answer;
    int RiNum=0;
    int FaNum=0;
    int zff=0, fhnum=0;
    char fs[20];
    char fuhao[20];
    int weizhi1;
    int weizhi2;   

    srand(time(0));
    for(int i=0;i<ProNum;i++)
    {
        int shuzinum=rand()%4+2;
        for(int j=0;j<=shuzinum;j++)
        {
            num[j]=rand()%100+1;
            for(;;)
            {
                if(num[j]<fanwei)
                    num[j]=rand()%100+1;
                else
                    break;
            }

            if(fushu==1){
                zff=rand()%2;
            if(zff==0)
                fs[j]=‘-‘;
            if(fs[j]==‘-‘)
                num[j]=num[j]*(-1);
            if(zff==1)
                fs[j]=‘+‘;
            }
            if(fushu==0){
               fs[j]=‘+‘;
            }

}

        for(int ii=0;ii<shuzinum;ii++)
        {
            if(chengchu==5)
            {
                fhnum=rand()%4;
                if(fhnum==0)
                    fuhao[ii]=‘+‘;
                if(fhnum==1)
                    fuhao[ii]=‘-‘;
                if(fhnum==2)
                    fuhao[ii]=‘*‘;
                if(fhnum==3)
                {
                    fuhao[ii]=‘/‘;
                    if(yushu==3)
                    {
                        weizhi1=ii;
                        for(;;)
                        {
                            if(num[ii]%num[ii+1]!=0)
                                break;
                            else
                            {
                                num[ii]=rand()%100+1;
                                num[ii+1]=rand()%100+1;
                            }
                        }
                    }
                    if(yushu==4)
                    {
                        weizhi1=ii;
                        for(;;)
                        {
                            if(num[ii]%num[ii+1]!=0)
                            {
                                num[ii]=rand()%100+1;
                                num[ii+1]=rand()%100+1;
                            }
                            else
                                break;
                        }
                    }
                }
            }
            if(chengchu==6)
            {
                fhnum=rand()%2;
                if(fhnum==0)
                    fuhao[ii]=‘+‘;
                if(fhnum==1)
                    fuhao[ii]=‘-‘;
            }
        }

        cout<<i+1<<": "<<num[0];

        if(shuzinum==2)
            kuohao=8;
        if(kuohao==7)
        {
            weizhi2 =rand()%(shuzinum-2)+1;
            for(int i=0;i<weizhi2 -1;i++)
            {
                cout<<fuhao[i]<<num[i+1];
            }
            cout<<fuhao[weizhi2 -1]<<"("<<num[weizhi2]<<fuhao[weizhi2]<<num[weizhi2 +1]<<")";
            for(int i=weizhi2 +1;i<shuzinum;i++)
            {
                cout<<fuhao[i]<<num[i+1];
            }
            answer=num[0];

            if(fuhao[weizhi2]==‘+‘)
            {
                num[weizhi2]=num[weizhi2]+num[weizhi2 +1];
                num[weizhi2 +1]=0;
            }
            if(fuhao[weizhi2]==‘-‘)
            {
                num[weizhi2]=num[weizhi2]-num[weizhi2+1];
                num[weizhi2+1]=0;
            }
            if(fuhao[weizhi2]==‘*‘)
            {
                num[weizhi2]=num[weizhi2]*num[weizhi2];
                num[weizhi2+1]=1;
            }
            if(fuhao[weizhi2]==‘/‘)
            {
                num[weizhi2]=num[weizhi2]/num[weizhi2+1];
                num[weizhi2+1]=1;
            }

            for(int i=0;i<shuzinum;i++)
            {
                if(fuhao[i]==‘*‘)
                {
                    num[i]=num[i]*num[i+1];
                    num[i+1]=1;
                }
                if(fuhao[i]==‘/‘)
                {
                    num[i]=num[i]/num[i+1];
                    num[i+1]=1;
                }
            }

            for(int i=0;i<shuzinum;i++)
            {
                if(fuhao[i]==‘+‘)
                    answer=answer+num[i+1];
                if(fuhao[i]==‘-‘)
                    answer=answer-num[i+1];
                if(fuhao[i]==‘*‘)
                    answer=answer*num[i+1];
                if(fuhao[i]==‘/‘)
                    answer=answer/num[i+1];
            }
        }
        if(kuohao==8)
        {
            for(int i=1;i<shuzinum;i++)
            {
                cout<<fuhao[i]<<num[i+1];
            }
            answer=num[0];

            for(int i=0;i<shuzinum;i++)
            {
                if(fuhao[i]==‘*‘)
                {
                    num[i]=num[i]*num[i+1];
                    num[i+1]=1;
                }
                if(fuhao[i]==‘/‘)
                {
                    num[i]=num[i]/num[i+1];
                    num[i+1]=1;
                }
            }
            for(int i=0;i<shuzinum;i++)
            {
                if(fuhao[i]==‘+‘)
                    answer=answer+num[i+1];
                if(fuhao[i]==‘-‘)
                    answer=answer-num[i+1];
                if(fuhao[i]==‘*‘)
                    answer=answer* num[i+1];
                if(fuhao[i]==‘/‘)
                    answer=answer/num[i+1];
            }
        }

        cout<<"="<<endl;
        cout<<"请输入你的计算结果"<<endl;
        cin>>MyAnswer;

        if(answer-MyAnswer<0.00001)
        {
            RiNum++;
            cout<<"恭喜你算对了"<<endl;
        }
        else
        {
            FaNum++;
            cout<<"对不起算错了"<<endl;
        }
    }
    cout<<"算对了:"<<RiNum<<"个"<<"算错了:"<<FaNum<<"个"<<endl;
}3运行结果截图

4实验总结:通过该实验,我明白了同伴的重要性。两个人的思维碰撞确实比一个人的苦思冥想要好的多。这次合作让我想到了团体的重要性,使我明白了合作的关键。

时间记录日志:


学陈晨                     日期:3/26


教师:  王建民                    课程:软件工程概论



日期


开始时间


结束时间


中段时间(分钟)


净时间

(分钟)


活动


备注


3/21


8:00


9:50


10


100


上课


课间休息


3/22


19:00


22:00


120


写程序


3/23


21:30


22:20


0


50


写程序


3/24


20:00


22:15


75


编写程序


3/25


19:30


22:30


0


30


编写程序和上网查资料学习


3/26


10:30


5:36


0


157


写程序,查资料


工作照:

时间: 2024-09-30 11:14:01

四则运算设计03的相关文章

课堂作业-四则运算-设计思路

要求: 1.题目避免重复 2.可定制(数量/打印方式) 3.可以控制下列参数:是否有除法,是否有括号,数值范围,加减有无负数,除法有无余数,是否支持分数,是否支持小数,精确到多少位,打印中每行的间隔 设计思路 根据第一次的程序实现,已经实现了打印数量上的控制,直接确定了打印列数,其他实现基本功能 第一步:避免题目重复:将打印的结果保存,此后每次生成的结果与之前的结果比较. 第二步:实现可定制:通过用户输入数量数和打印的列数,实现可定制,将间隔参数也由用户来输入.参数由用户输入,将参数传递到所需函

四则运算设计思路

设计思路 1.         题目避免重复 2.         可定制(数量/打印方式) 3.         可以控制下列参数 是否有乘除法.数值范围.加减有无负数.除法有无余数.是否支持分数. 利用for循环设置题目的数量,用三个数组分别表示两个随机数和他们之间的四则运算,利用跟之前的题目进行比较,避免出现重复的题目. 利用if语句对参数进行分类,如果有乘除法,四则运算的数组就有四个元素,反之只有两个元素. 命令a是题目的取值范围,通过输入a的值,rand()%a来确定取值范围. 对于加

四则运算设计思想2

设计思想: 题库,数据库. 1.用户从数据库中抽取题目存入数据库,存入时将后存入的与之前存入的题目作比较. 2.若有重复,则报错,若不重复,存入数据库. 3.读取数据库. 信1305-刘钧韬 2015/3/13

四则运算设计2

import java.util.*;public class 四则运算 { public static void main( String args[] ) {        for(int i=1;i<25000000;i++)    {     int a;        int b;        int sum;        a = 1 + (int) ( Math.random() * 100);        b = 1 + (int) ( Math.random() * 100

联通子数组最大值设计03

So郁闷,我先把老师提出的问题写出来; 返回一个二维整数数组中最大联通子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数. 求所有子数组的和的最大值.下面是给的示例图: 最近已经完全的陷入了编程的怪圈,自己完全没找到自己的方向吧,废话不多说,直接上问题:在子数组问题上我觉得基本都是一位子数组的变形,应该不会有特别的变化,最多是难度上去,但是基本的思想不会变,今天我发现错了,可能是我错了. 我的想法:在网上看代码找到的灵感:因为觉得老师上课讲的图的方法有些麻烦所以就想还是用一维数组的

新增功能四则运算设计思路

1.避免重复:当产生新的式子时,可以和之前已经产生的式子中数字和运算符进行逐一匹配:2.可定制:输出多少式子可以定制,设置一个用户可以输入的变量:    因为要设定许多可控参数,可以把这些参数构成一个数组,也就是一个参数集,然后对每个参数分情况进行设定: 下面是每个可控参数: 1.是否有乘除法?用户可以选择,0是没有乘除法,1是有乘除法:2.有括号?0是没有括号,1是有括号:   括号是成对出现的,两边分别是运算符和数字,或者是数字和空:3.数值范围?可以设定随机函数产生的范围:4.加减可以有正

Java精品高级课,架构课,java8新特性,P2P金融项目,程序设计,功能设计,数据库设计,第三方支付,web安全,视频教程

36套精品Java架构师,高并发,高性能,高可用,分布式,集群,电商,缓存,性能调优,设计模式,项目实战,P2P金融项目,大型分布式电商实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  cloud.Dubbo.Elasticsearch,Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.java8新特性,P2P金融项目,程序设计,

软件工程作业1——四则运算

coding 地址:http://git.oschina.net/lsrd 1.需求分析 设计一个小学生四则运算,符合加减乘除四则运算,不仅符合整事运算,还要能够进行真分数运算.整体都需求有:题数的统计,正确率的统计. 2.功能设计 主要功能设计的难点在于真分数的运算,随机生成分数进行转换成真分数,对于分数答案转换成真分数.运用一个循环体来控制生成题数及统计正确率. 3.设计实现 对于整数的四则运算设计比较简单,所以主要设计了真分数的四则运算.如果随机生成一个数为整数将其转化成真分数进行计算,如

作业二:自动生成小学四则运算题目的程序

主要功能:生成四则运算 设计思想:运用所学知识和算法,设计四则运算,除了整数以外,还涉及了真分数. 源代码: #include<iostream> using namespace std; #include<time.h> #include<string> int main() { int count=0 ; srand(time(NULL));//用系统当前时间设置rand()随机序列种子,保证每次运行随机序列不一样 char ch; while(count<3