码迷,mamicode.com
首页 > 其他好文 > 详细

软工第一个程序:像二柱子那样,花二十分钟写一个能自动生成小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。

时间:2015-03-07 13:40:37      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:

程序设计思想  

      本程序的设计主要基于对C/C++中产生随机数的应用,在产生算数符号部分主要采用了switch语句,通过随机产生0-3的数值来随机产生"+-*/"字符,并进行相应的处理;在处理整数操作部分时,使用try/throw语句,避免除法分母为0,语句采用一维数组,记录答案结果;在处理真分数部分,采用while语句产生合理的真分数,采用二维数组记录答案结果。

程序源代码

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

void DealFenshu(int m, int a[][2])
{
    for(int p=0;p<m;p++)
    {
        int i=(int)rand()%10;
        int j=(int)rand()%10;
        while(j==0||i>=j)
        {
            i=(int)rand()%10;
            j=(int)rand()%10;
        }
        int x=(int)rand()%10;
        int y=(int)rand()%10;
        while(y==0||x>=y)
        {
            x=(int)rand()%10;
            y=(int)rand()%10;
        }
        int k=(int)rand()%100/25;
        switch(k)
        {
            case 0:
                cout<<"("<<i<<"/"<<j<<")"<<"+"<<"("<<x<<"/"<<y<<")"<<"=";
                a[p][0]=i*y+x*j;
                a[p][1]=j*y;
                break;
            case 1:
                cout<<"("<<i<<"/"<<j<<")"<<"-"<<"("<<x<<"/"<<y<<")"<<"=";
                a[p][0]=i*y-x*j;
                a[p][1]=j*y;
                break;
            case 2:
                cout<<"("<<i<<"/"<<j<<")"<<"*"<<"("<<x<<"/"<<y<<")"<<"=";
                a[p][0]=i*x;
                a[p][1]=j*y;
                break;
            case 3:
                a[p][0]=i*y;
                a[p][1]=j*x;
                cout<<"("<<i<<"/"<<j<<")"<<"/"<<"("<<x<<"/"<<y<<")"<<"=";
            }
            
            if(p%5==4)
            {
                cout<<endl;
            }
            else
            {
                cout<<\t;
            }
    }

}
void DisplayFenshu(int a[][2],int w,int m)
{
    if(w==1)
    {
        for(int q=0;q<m;q++)
        {
            if(a[q][0]==0)
                cout<<"0"<<\t;
            else
                cout<<a[q][0]<<"/"<<a[q][1]<<\t;
            if(q%5==4)
            {
                cout<<endl;
            }
        }
    }
    else
    {};
}
void DealInt(int m,int a[])
{
        
    for(int p=0;p<m;p++)
    {
    int i=(int)rand()%10;
    int j=(int)rand()%10;
    int k=(int)rand()%100/25;
    switch(k)
    {
    case 0:
        cout<<i<<"+"<<j<<"=";
            a[p]=i+j;
        break;
    case 1:
        cout<<i<<"-"<<j<<"=";
        a[p]=i-j;
        break;
    case 2:
        cout<<i<<"*"<<j<<"=";
        a[p]=i*j;
        break;
    case 3:
        try
        {
        a[p]=i/j;
        cout<<i<<"/"<<j<<"=";
        }
        catch(...)
        {
            p--;
        }
        

    }
        
        if(p%5==4)
        {
            cout<<endl;
        }
        else
        {
            cout<<\t;
        }
    }
}
void DisplayInt(int a[],int w,int m)
{
    if(w==1)
    {
        for(int q=0;q<m;q++)
        {
            cout<<a[q]<<\t;
            if(q%5==4)
            {
                cout<<endl;
            }
        }
    }
    else
    {};
}
void main()
{
    int p;
    do
    {
        system("cls");
        int a[1000],b[1000][2];
        int m,n,w;
        cout<<"请输入生成的四则运算题个数:";
        cin>>m;
        cout<<endl;
        cout<<"请输入要生成的四则运算种类(输入1为整数,否则为真分数):";
        cin>>n;
        cout<<endl;
        if(n==1)
        {
            DealInt(m,a);
            cout<<endl;
        }
        else
        {
            DealFenshu(m,b);
            cout<<endl;
        }
        cout<<"是否输出答案(输入1则输出答案否则不输出答案)"<<endl;
        cin>>w;
        if(n==1)
        {
            DisplayInt(a,w,m);        
        }
        else
        {
            DisplayFenshu(b,w,m);
        }
        cout<<endl;
        cout<<"是否继续生成运算题(输入1则生成否则不生成)"<<endl;
        cin>>p;
        cout<<endl;
    }while(1==p);

}

技术分享技术分享

程序截图上课未按时完成的原因:   忘掉了C/C++中的产生随机数的语句rand()语句

软工第一个程序:像二柱子那样,花二十分钟写一个能自动生成小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。

标签:

原文地址:http://www.cnblogs.com/tianma-0/p/4320020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!