练习一(升级版)

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

void main()

{

    int c,d,e,f;

    int x,right=0,wrong=0;

    float a,a1,a2,a3;

    int flag=0;

    char cc;

    srand((unsigned int)time(NULL));

    do{

        flag=0;

        x=rand()%4;

        c=rand()%10+1;

        d=rand()%10+1;

        e=rand()%10+1;

        f=rand()%10+1;

        if(c<=d&&e<=f&&d!=0&&f!=0)

        {   

            a1=(float)c/d;

            a2=(float)e/f;

             switch(x)

            {

            case 0:

                printf("(%d/%d)  +  (%d/%d) = ",c,d,e,f);

                break;

            case 1:

                printf("(%d/%d)  -  (%d/%d) = ",c,d,e,f);

                break;

            case 2:

                printf("(%d/%d)  *  (%d/%d) = ",c,d,e,f);

                break;

            case 3:

                printf("(%d/%d)  ÷ (%d/%d) = ",c,d,e,f);

                break;

            }

            scanf("%f",&a);

            switch(x)

            {

            case 0:

                if(a1+a2==a)

                {

                    printf("计算正确!\n");right++;

                }

                else

                { 

                    a3=a1+a2;

                    printf("计算错误!答案应为:%f\n",a3);wrong++;

                }

                break;

            case 1:

                if(a==a1-a2)

                {

                    printf("计算正确!\n");right++;

                }

                else

                {

                    a3=a1-a2;

                    printf("计算错误!答案应为:%f\n",a3);wrong++;

                }

                break;

             case 2:

                 if(a==a1*a2)

                 {

                    printf("计算正确!\n");right++;

                 }

                 else

                 {

                     a3=a1*a2;

                     printf("计算错误!答案应为:%f\n",a3);wrong++;

                 }

                 break;

             case 3:

                 if(a==a1/a2)

                 {

                     printf("计算正确!\n");right++;

                 }

                 else

                 {

                     a3=a1/a2;

                     printf("计算错误!答案应为:%f\n",a3);wrong++;

                 }

                 break;

            }

            printf("按任意键继续,q则退出!\n");

        //  scanf("%d",&quit);

       //  if(quit==0)

            cc=getchar();

            printf("\n");

        }

    }while(cc!='q');

    printf("共答对%d道题,共答错%d道题\n",right,wrong);

}
   在练习1的基础上,添加真分数,判断是否为真分数,前提是分子不大于分母切分母不为0。
一开始运行的时候,输入正确答案,可是判断的答案是显示错误的。找到输入答案的那一行代码,发现输入格式是错的,应为%f。
在原基础上修改花了半个小时。 

你可能感兴趣的:(升级)