简单四则运算

#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);

}

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

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

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

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

你可能感兴趣的:(四则运算)