简单四则运算

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
main()
{
    int i,j,k,e,d,d1,e1,l;
    int a,b,c;
    int q=0,w=0,q1=0,w1=0;
    float sum;
    srand((int)time(0));
    do{
        a=rand()%100+1;
        b=rand()%100+1;
        k=rand()%4+1;
        c=max(a,b);
        a=min(a,b);
        switch(k){
        case 1:printf("%d*%d=",c,a);d=c*a;    break;
        case 2:
            {
                printf("%d/%d=",a,c);
                (float)d=(float)a/(float)c;    
                for(i=1;i<=c;i++)
                    for(j=1;j<=a;j++)
                    {
                        (float)l=(float)j/(float)i;
                        if(l==d)
                        {
                            c=i;
                            a=j;
                            break;
                        }
                    }
                break;
            }
        case 3:printf("%d+%d=",c,a);d=c+a;    break;    
        case 4:printf("%d-%d=",c,a);d=c-a;  break;
        }
        if(k==2)
        {
            scanf("%d/%d",&e,&e1);
            (float)d1=(float)e/(float)e1;
            if(e==a&&e1==c)
            {
                printf("回答正确!\n\n");
                q++;
            }
            else
            {
                printf("回答错误!\n\n");
                w++;
            }
        }
        if(k!=2)
        {
            scanf("%d",&e);
            if(e==d)
            {
                printf("回答正确!\n\n");
                q1++;
            }
            else
            {
                printf("回答错误!\n\n");
                w1++;
            }
        }
    }while(e!=-1);
    sum=((float)(q+q1)/(float)(q+q1+w+w1-1))*100;
    printf("此次答题正确率为 %.2f%%\n",sum);
}

关于小数的与整数的没有什么大的出入,基本就是重复一遍,暂时没有想到更好的办法

这次的程序的时间最主要是消耗在产生不同在运行结果,导致程序在效率不是很高。

最后是在网上找到了关于随时间变化的类,解决了程序运行结果单一的问题,大大提高了程序的实用性。

对于真分数只做出了分数的最简约分。

原文地址:https://www.cnblogs.com/esom/p/4367064.html