• 软件工程第一次作业 四则运算程序编写


    2016年3月10日  晴 沈阳

    一、程序制作初衷以及功能介绍

    制作初衷:本次四则运算程序我使用的是C语言,考虑到考研报考学校专业课考的是C语言所以打算借此好好复习C语言语法。

    本程序主要功能是:1、自动生成30道题和其答案

                             2、支持整数四则运算

                             3、支持分数四则运算

    二、程序演示

    1、初始界面

    2、输入1后按回车键进入出题与答案界面

    3、按任意键位进入下一界面

    4、按任意键位进入下一界面

    三、编写代码想法与过程

    首先,我先在草稿质上把四则运算的数学方法整理清楚,然后确定下来把整数运算和真分数运算分开进行编写,

    于是便诞生了两个子函数Simple和Real。接着先书写主函数,主函数主要通过if语句对输入的数字进行判断从

    而选择是否进入子函数Shengcheng中。由于要生成30道题所以在Shengcheng函数中利用for循环实现30次

    循环产生30道题,并利用随机函数使整数m要么值为1要么值为2以此来判断使用Simple函数还是Real函数,

    因此生成整数运算和真分数运算的几率是对半开的。

    Simlpe函数中利用随机函数来实现使整数四种运算出现的几率相同,在四则运算中特别的是 1.减法运算需要

    判断下随机产生的两个数大小,查看其是否需要交换,因为所得到的值必须是正数;2.除法运算则是利用乘法

    运算来完成,为了不让出现小数,例如先随机产生2个整数a、b相乘得到整数c,再将c的值与a的值交换则能实

    现a/b=c,c一定是整数。

    Real函数中同样利用随机函数来实现使整数四种运算出现的几率相同,在四则运算中与整数不同的是:1.加减

    法运算需要先通过分数运算,合成一个真分数,再上下同除通过MaxGYS函数得出最大公约数最终得到答案。

    2.除法则需要将被除数分子与分母交换值后根据乘法运算编写。

    完成30次运算后,我考虑到是给小学2年级学生使用,所以建立了一个友好的鼓励界面,如果推出程序则还会提

    示用户如果有意见发送至邮箱。

    四、代码附录

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include<math.h>
    void Shengcheng();
    void Simple();
    void real();
    int MaxGYS(int a,int b);
    int system(const char *string);

    int main(void)
    {
    int n;
    Loop1: printf(" *欢迎来到朴宝英的每日练习* [1] 生成小学数学四则运算30题练习 [2] 退出程序 请输入相应的选项,按回车键确定:");
    scanf("%d",&n);
    system("cls");
    if (n==1)
    Shengcheng();
    else
    if (n==2)
    {
    printf(" 感谢您对朴宝英软件公司的支持 如果您对软件有意见请把意见以邮件形式发至 295793858@qq.com 我们将会尽快给您答复! ");
    return 0;
    }
    else
    printf("输入错误请重新输入");
    goto Loop1;
    return 0;
    }

    void Shengcheng()
    {
    int m,i;
    for(i=0;i<30;i++)
    {
    m=rand()%2+1;
    if (m==1)
    Simple();
    else
    real();
    }
    system("pause");
    system("cls");
    printf(" 宝英欧尼:宝宝今天全做对了吗? 宝英欧尼:全对摸摸头哦~ 宝英欧尼:做错也没关系,按任意键回到主页再来一次!Fighting~-0- ");
    system("pause");
    system("cls");
    return ;
    }

    void Simple()
    {
    int m,b,c,d,t;
    m=rand()%3+1;
    b=rand()%20+1;
    c=rand()%20+1;
    switch(m)
    {
    case 1:{
    d=b+c;
    printf("%d+%d= %d ",b,c,d);
    }break;
    case 2:{
    if(b>c)
    {
    t=b;
    b=c;
    c=t;
    }
    d=b-c;
    printf("%d-%d= %d ",b,c,d);
    }break;
    case 3:{
    d=b*c;
    m= rand()%2+1;
    if(m==1)
    printf("%d*%d= %d ",b,c,d);
    else
    printf("%d/%d= %d ",d,b,c);
    } break;
    }
    return ;
    }

    void real()
    {
    int a,b,c,d,e,f,g,h,t;
    a=rand()%4+1;
    b=rand()%9+1;//第一个数字分子
    c=rand()%9+1;//第一个数字分母
    d=rand()%9+1;//第二个数字分子
    e=rand()%9+1;//第二个数字分母
    if(b>c)
    {
    t=b;
    b=c;
    c=t;
    }
    if(d>e)
    {
    t=d;
    d=e;
    e=t;
    }

    switch(a)
    {
    case 1:{
    f=c*e;
    g=b*e+d*c;
    h=MaxGYS(g,f);
    f=f/h;
    g=g/h;
    printf("(%d/%d)+(%d/%d)= (%d/%d) ",b,c,d,e,g,f);
    }break;
    case 2:{
    f=c*e;
    g=b*e-d*c;
    if(g>0)
    {
    h=MaxGYS(g,f);
    f=f/h;
    g=g/h;
    printf("(%d/%d)-(%d/%d)= (%d/%d) ",b,c,d,e,g,f);
    }
    else
    {
    g=abs(g);
    h=MaxGYS(g,f);
    f=f/h;
    g=g/h;
    printf("(%d/%d)-(%d/%d)= (%d/%d) ",d,e,b,c,g,f);
    }
    }break;
    case 3:{
    f=c*e;
    g=b*d;
    h=MaxGYS(g,f);
    f=f/h;
    g=g/h;
    printf("(%d/%d)*(%d/%d)= (%d/%d) ",b,c,d,e,g,f);
    }break;
    case 4:{
    f=b*e;
    g=c*d;
    h=MaxGYS(g,f);
    f=f/h;
    g=g/h;
    printf("(%d/%d)/(%d/%d)= (%d/%d) ",b,c,d,e,g,f);
    }
    default:break;
    }
    return ;
    }


    int MaxGYS(int a,int b)
    {
    int c,t;
    if(a<b)
    {
    t=a;
    a=b;
    b=t;
    }
    while(b!=0)
    {
    c=a%b;
    a=b;
    b=c;
    }
    return a;
    }

  • 相关阅读:
    javascript学习笔记
    c++输入文件流ifstream用法详解
    如何退出while(cin >> s)
    【赵渝强老师】利用Python完成数据分布特征的分析
    PG 的 AWR pg_profile
    java构建树形结构
    docker安装mongodb 数据备份和还原
    通过经纬度计算不同模型图瓦片坐标
    linux常用命令
    docker 常用命令
  • 原文地址:https://www.cnblogs.com/bigchicken/p/5263732.html
Copyright © 2020-2023  润新知