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

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

时间:2015-04-09 21:16:20      阅读:170      评论:0      收藏: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/

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

总结:

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

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

标签:

原文地址:http://www.cnblogs.com/linhaixin/p/4411013.html

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