首页 > 技术文章 > 练习一(升级版)

ZeJuan 2015-04-01 19:48 原文

#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。
在原基础上修改花了半个小时。 

推荐阅读