zoukankan      html  css  js  c++  java
  • 可以在线答题,并且能判断对错,将错题保存起来

    问题分析:

    要求在线答题并且判断对错,就是要输出题目之后可以输入答案,然后可以与正确答案做比较,当输入的答案出现错误时,可以新建一个 一个txt文本将错题保存下来,然后继续循环。

     遇到的困难:

    1.约分,分数运算结果不是最简的。

    解决方法:写一个寻找最大公约数的函数。

    2.不会保存错题。

    解决方法:看书了解如何将printf输出的数据保存到txt文本中。

    3.分母为0。

    设置随机生成的数字,使函数不会生成数字0;

    #include<stdio.h>
    #include <stdlib.h>
    #include<conio.h>
    #include<time.h>
    #include<string.h>
    int fun(int x,int y)//求最大公约数
    {
        int z,s,u,v;
        if(x<y)
        {
            z=x;
            x=y;
            y=z;
        }
        s=x;
        u=y;
        while(u!=0)
        {
            v=s%u;
            s=u;
            u=v;
        }
        return s;
    }
    
    int main()
    {
        int a=0;
        int b=0;
        int c=0;
        int d=0;
        int m=0;
        int i,t,h,n,k,x,y,p,l,q;
        int r;
        scanf("%d",&n);
        FILE *fp;
        fp=fopen("D://a.txt","w");
        if(fp==NULL)
        printf("不能打开文件
    ");//打开文件并指定文件的存储位置以及文件名
        srand((unsigned)time(NULL));
        for(i=0;i<n;i++)
        {
            a=rand()%99+1;
            b=rand()%99+1;
            c=rand()%99+1;
            d=rand()%99+1;
            m=rand()%8;
            if(a<b)
                {
                    t=a;
                    a=b;
                    b=t;
                }//使a的值大于b的值
            if(c<d)
                {
                    h=c;
                    c=d;
                    d=h;
                }//使c的值大于d的值
           switch(m)
                {
                    case 0:
                        printf("
    %d+%d=",a,b);
                        scanf("%d",&k);
                        r=a+b;
                        if(k==r)
                            printf("right
    
    ");
                        else
                        {
                            printf("wrong
    
    ");
                            fprintf(fp,"
    %d+%d=%d",a,b,k);//如果给出的答案错误将会把错题保存在文件中
                        }
                        break;
                     case 1:
                         printf("
    %d-%d=",a,b);
                         scanf("%d",&k);
                         r=a-b;
                         if(k==r)
                             printf("right
    
    ");
                         else
                         {
                              printf("wrong
    
    ");
                              fprintf(fp,"
    %d-%d=%d",a,b,k);
                         }
                         break;
                    case 2:
                        printf("
    %d*%d=",a,b);
                        scanf("%d",&k);
                        r=a*b;
                        if(k==r)
                        printf("right
    
    ");
                        else
                        {
                           printf("wrong
    
    ");
                           fprintf(fp,"
    %d*%d=%d",a,b,k);
                        }
                        break;
                    case 3:
                        printf("
    %d/%d=",a,b);
                        scanf("%d",&k);
                        printf("");
                        scanf("%d",&p);
                        r=a/b;
                        q=a-b*r;
                        if(k*b+p==r*b+q)
                        printf("right
    
    ");
                        else
                        {
                            printf("wrong
    
    ");
                            fprintf(fp,"
    %d/%d=%d余%d",a,b,k,p);
                        }
                        break;
                    case 4:
                        {y=b*c+a*d;x=a*c;}
                        l=fun(x,y);
                        x=x/l;
                        y=y/l;
                        printf("
    %d/%d+%d/%d=",b,a,d,c);
                        scanf("%d/%d",&k,&h);
                        if(k==y&&h==x)
                        printf("right
    
    ");
                        else
                        {
                            printf("wrong
    
    ");
                            fprintf(fp,"
    %d/%d+%d/%d=%d/%d",b,a,d,c,k,h);
                        }
                        break;
                    case 5:
                        {y=b*c-a*d;x=a*c;}
                        l=fun(x,y);
                        x=x/l;
                        y=y/l;
                        printf("
    %d/%d-%d/%d=",b,a,d,c);
                        scanf("%d/%d",&k,&h);
                        if(k==y&&h==x)
                        printf("right
    
    ");
                        else
                        {
                            printf("wrong
    
    ");
                            fprintf(fp,"
    %d/%d-%d/%d=%d/%d",b,a,d,c,k,h);
                        }
                        break;
                    case 6:
                        {y=b*d;x=a*c;}
                        l=fun(x,y);
                        x=x/l;
                        y=y/l;
                        printf("
    %d/%d*%d/%d=",b,a,d,c);
                        scanf("%d/%d",&k,&h);
                        if(k==y&&h==x)
                        printf("
    right");
                        else
                        {
                            printf("
    wrong");
                            fprintf(fp,"
    %d/%d*%d/%d=%d/%d",b,a,d,c,k,h);
                        }
                        break;
                    case 7:
                        {y=b*c;x=a*d;}
                        l=fun(x,y);
                        x=x/l;
                        y=y/l;
                        printf("
    (%d/%d)/(%d/%d)=",b,a,d,c);
                        scanf("%d/%d",&k,&h);
                        if(k==y&&h==x)
                        printf("right
    
    ");
                        else
                        {
                            printf("wrong
    
    ");
                            fprintf(fp,"
    %d/%d/%d/%d=%d/%d",b,a,d,c,k,h);
                        }
                        break;
                    default:
                        printf("something is wrong!
    ");
                        break;
             printf("
    ");
          }
       }
        return 0;
    }
     
  • 相关阅读:
    .Net Remoting使用总结
    MacOS入门
    第一部分_Mac技巧
    国内安装Homebrew
    MacOS工具
    org.springframework.beans.factory.UnsatisfiedDependencyException异常
    五天一体_企业权限管理(SSM整合)
    00_02_使用Parallels Desktop创建Windos7虚拟机
    00_01_使用Parallels Desktop创建WindosXP虚拟机
    OpenCV中几何形状识别与测量
  • 原文地址:https://www.cnblogs.com/09-15/p/9883295.html
Copyright © 2011-2022 走看看