• 结对子作业 四则运算 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("
    请选择!");
        printf("
    1)整数运算.");
        printf("
    2)分数运算.--");
        scanf("%d",&xz);
    
        if(xz==1)
        {
            zhengshu();
        }
        else
        {
            fenshu();
        }
        printf("
    一共%d道题,答对%d道题!
    ",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("答对了!
    ");
                    dt++;
                }
                else
                {
                    printf("答错了!
    ");
                }
            }
            else
            {
                scanf("%d",&x);
                if(x==y)
                {
                    printf("答对了!
    ");
                    dt++;
                }
                else        
                {
                printf("答错了!
    ");
                }
            }
        }
    }
    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("答对了!
    ");
                dt++;
            }
            else
            {
                printf("答错了!
    ");
            }
    
        }
    }

    开发环境:Eclipse

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

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

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

    总结:

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

  • 相关阅读:
    记录
    Remote System Upgrade With Cyclone III Devices
    【Diary】Noip2020 游记
    【Diary】CSP-S 2020 游记
    【Diary】JZSC 2020 旅 游 记(迫真
    【题解】Luogu P2671 【求和】
    51nod 1153 选择子序列
    Luogu P4116 Qtree3
    Luogu P4114 Qtree1
    【Contest】Nowcoder 假日团队赛1 题解+赛后总结
  • 原文地址:https://www.cnblogs.com/linhaixin/p/4411013.html
Copyright © 2020-2023  润新知