结对子作业 四则运算 V2.0

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int cc,i,n,z;//操作数
int count;//题目数目
int max,min;//数据的最大值、最小值
int dt=0;//记录做对题目的数目
int shu[4];
char fh[4]={‘+‘,‘-‘,‘*‘,‘/‘};
void zhengshu();
void fenshu();
int main(void)
{
    int xz;//操作数
    srand((unsigned)time(NULL));

    printf("输入题目题数!--");//输入题目总数
    scanf("%d",&count);

    printf("是否有乘除法!(1/否,2/是.)--");//决定是否产生乘除法
    scanf("%d",&cc);

    printf("数值范围!(1 100)--");//输入数值范围
    scanf("%d %d",&min,&max);

    printf("\n请选择!");
    printf("\n1)整数运算.");
    printf("\n2)分数运算.--");
    scanf("%d",&xz);

    if(xz==1)
    {
        zhengshu();
    }
    else
    {
        fenshu();
    }
    printf("\n一共%d道题,答对%d道题!\n",count,dt);

}
void zhengshu()
{
    int x=0,y=0;//用户输入答案、正确答案
    int fz0,fm0;//已约分正确分子、分母
    int fz,fm;//用户输入分子、分母
    int jlfz,jlfm;//操作数
    int ys;
    char ch;
    for(i=0;i<count;i++)
    {
        for(n=0;n<2;n++)//生成等式
        {
            shu[n]=rand()%(max-min+1)+min;
            printf(" %d ",shu[n]);
            if(n<1)
            {
                z=rand()%(cc*2);
                printf("%c",fh[z]);
            }
            else
            {
                printf("=");
            }
        }
        switch(z)//算数正确答案
        {
        case 0:
            y=shu[0]+shu[1];
            break;
        case 1:
            y=shu[0]-shu[1];
            break;
        case 2:
            y=shu[0]*shu[1];
            break;
        case 3:
            y=shu[0]/shu[1];
            break;
        default:
            break;
        }
        if(z==3)
        {
            jlfz=shu[0];//约分
            jlfm=shu[1];

            while(shu[1]!=0)
            {
                ys=shu[0]%shu[1];
                shu[0]=shu[1];
                shu[1]=ys;
            }
            fz0=jlfz/shu[0];
            fm0=jlfm/shu[0];
            if(fm0<0)
            {
                fz0=fz0*-1;
                fm0=fm0*-1;
            }

            scanf("%d%c%d",&fz,&ch,&fm);
            if(fz==fz0&&fm==fm0)
            {
                printf("答对了!\n");
                dt++;
            }
            else
            {
                printf("答错了!\n");
            }
        }
        else
        {
            scanf("%d",&x);
            if(x==y)
            {
                printf("答对了!\n");
                dt++;
            }
            else
            {
            printf("答错了!\n");
            }
        }
    }
}
void fenshu()
{
    int fz,fm;//用户输入分子、分母
    int fz0,fm0;//已约分正确分子、分母
    int fz1,fm1;//未约分正确分子、分母
    int jlfz,jlfm;//操作数
    int temp,ys;//操作数
    char ch;
    for(i=0;i<count;i++)
    {
        for(n=0;n<4;n++)//产生四个随机数
        {
            shu[n]=rand()%(max-min+1)+min;
        }
        if(shu[0]>shu[1])//确保分母大于分子
        {
            temp=shu[1];
            shu[1]=shu[0];
            shu[0]=temp;
        }

        if(shu[2]>shu[3])//确保分母大于分子
        {
            temp=shu[3];
            shu[3]=shu[2];
            shu[2]=temp;
        }
        z=rand()%(cc*2);

        switch(z)
        {
        case 0:
            fz1=shu[0]*shu[3]+shu[1]*shu[2];
            fm1=shu[1]*shu[3];
            break;
        case 1:
            fz1=shu[0]*shu[3]-shu[1]*shu[2];
            fm1=shu[1]*shu[3];
            break;
        case 2:
            fz1=shu[0]*shu[2];
            fm1=shu[1]*shu[3];
            break;
        case 3:
            fz1=shu[0]*shu[3];
            fm1=shu[1]*shu[2];
            break;
        default:
            break;
        }

        jlfz=fz1;//约分
        jlfm=fm1;
        while(fm1!=0)
        {
            ys=fz1%fm1;
            fz1=fm1;
            fm1=ys;
        }
        fz0=jlfz/fz1;
        fm0=jlfm/fz1;
        if(fm0<0)
        {
            fz0=fz0*-1;
            fm0=fm0*-1;
        }

        printf("%d/%d %c %d/%d = ",shu[0],shu[1],fh[z],shu[2],shu[3]);//打印分式
        printf("----|%d/%d|----",fz0,fm0);
        scanf("%d%c%d",&fz,&ch,&fm);
        if(fz==fz0&&fm==fm0)
        {
            printf("答对了!\n");
            dt++;
        }
        else
        {
            printf("答错了!\n");
        }

    }
}

开发环境:Eclipse

做的是3.4.6.8,/*8没成功*/

结对同伴的学号:201306114335  姓名:何武鹏    博客地址:http://www.cnblogs.com/hewupeng/

这个结对编程过程中,我和同伴轮流编程,轮流检测,轮流查阅资料,并没说谁是主编,谁是副编。

总结:

在这次结对子编程实验中,有时同伴在编程某个东西,感觉我的方法会更好,我就会在后面指指点点,导致把他的思路直接打断。所以以后出现这种情况我会先让他编完,在跟他做比较,取我们公认最好的。虽然这次实验是挺辛苦的,流过汗,熬过夜。可是在这次实验中收获也挺多的。

时间: 2024-09-30 04:17:37

结对子作业 四则运算 V2.0的相关文章

作业四:结对编程——四则运算

项目名称:结对编程——四则运算(GUI) 同学小伙伴:张富彬 博客园地址:http://www.cnblogs.com/legend07/ GitHub代码地址:https://github.com/8561549/Arithmetic2.0/tree/master/Arithmetic2.0 需求分析: 首先是实现GUI的界面设计,主要有两个窗体,一个窗体进行参数设计,另一个窗体负责显示题目.两个窗体之间实现自由跳转.在参数设置窗口可以获取各个控件中的信息,能对出题窗口的出题情况进行限制,其中

结对编程——四则运算(第一周)

结对编程--四则运算(第一周) 需求分析 题目要求 一个命令行程序实现: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确率 需求理解 输入:需要计算的式子数.计算结果 输出:判断后的答案(true/false) 满足真分数的运算如:1/3 + 1/4 = 7/12 处理的运算符为 +, ?, ×, ÷ 能处理用户的输入,并判断对错,统计正确率. 设计思路 自动生成四则运算,需要用到随机数,用随机数随机生成数字,以及随机

20165312 结对学习 四则运算(第二周)

20165312 结对学习 四则运算(第二周) 代码托管 需求分析 手动输入进行计算的题目数量n 自动生成n道四则运算题目 整数 真分数 进行判断对错,并计算正确率 能多次进行计算,知道用户不想练习 深层次需求分析 进行多运算符计算 随机生成的题目以及正确答案保存至一个文件 完成题目后从文件读入并判题 多语言支持:简体中文, 繁體中文, English 生成题目去重 将前缀表达式转化为后缀表达式 相比上周本周的进步 实现真分数的加减乘除运算 分类实现程序,使不同的要求分类实现,使得变动代码时更容

结对编程--四则运算(Java实现)

结对编程--四则运算(Java实现) 四则运算 (JAVA ) By 梅进鹏 欧思良 Github项目地址:https://github.com/MeiJinpen/Arithmetic 功能要求 题目:实现一个自动生成小学四则运算题目的命令行程序 功能(已全部实现) 使用 -n 参数控制生成题目的个数 使用 -r 参数控制题目中数值(自然数.真分数和真分数分母)的范围(此处感觉一个参数不太合理,因此改用 -r 参数控制自然数.带分数整数部分的范围,又额外添加了 -d 参数控制分数分母的范围,增

结对项目--四则运算生成器(Java) 刘彦享+龙俊健

结对项目--四则运算生成器(Java) GitHub地址 合作者 刘彦享(3118005010) 龙俊健(3118005011) https://github.com/LYX708194/calculate 一.项目简介 说明 自然数:0, 1, 2, -. 真分数:1/2, 1/3, 2/3, 1/4, 1'1/2, -. 运算符:+, ?, ×, ÷. 括号:(, ). 等号:=. 分隔符:空格(用于四则运算符和等号前后). 算术表达式: e = n | e1 + e2 | e1 ? e2

原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0

visual studio编译出现错误:错误 2 任务失败,原因是未找到“sgen.exe”,或未安装 .NET Framework SDK v2.0.该任务正在注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 的 SDKInstallRootv2.0 值中指定的位置下的“bin”子目录中查找“sgen.exe”.您可以通过执行下列操作之一,来解决这一问题: 1.) 安装 .NET Framework SDK v2.0.2.) 将上

Atitit jquery &#160;1.4--v1.11 &#160;v1.12 &#160;v2.0 &#160;3.0 的新特性

Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性 1.1. Jquery1.12  jQuery 2.2 和 1.12 新版本发布 - OPEN资讯.html   2016.11 1.1.1. jQuery.htmlPrefilter()1 1.2. 2016.7  jq3.0 新特性1 1.3. Jq3.1新特性 jQuery 3.1.1 发布了,该版本包括一些 BUG 修复和改进.3 1.1. Jquery1.12  jQuery 2.2 和

heatmap.js v1.0 到 v2.0,详细总结一下:)

前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下. 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文 关于heatmap.js介绍,请看这里: http://www.oschina.net/p/heatmap-js 目前,对于热力图的开发,百度.高德开发平台上使用的都是这款JS开源库.当然,现在还有我们公司:P 百度示例:http://developer.baidu.com/map/jsdemo.htm#c1_15 高德示例:http

从零开始制作H5应用(2)——V2.0版,多页单张图片滑动,透明过渡及交互指示

上一次,我们制作了我们第一个H5场景应用的V1.0版,这次我们趁热打铁,在上一版的基础上对层序进行修改和扩展. 任务 1.页面数量由3张增加至9张: 2.每张页面中放入一张全屏自适应的图片: 3.修复页面过渡中的白场,并在过渡时加入页面的透明效果 4.给予用户"向上滑动"的交互提示: 分析 老规矩,拿到任务需求后,我们还是要先具体分析每一步的实现思路: 1.页面数量由3张增加至9张 这个太简单啦,就是再复制出来6个div,并给他们添加类名就可以啦:) 2.每张页面中放入一张全屏自适应的