随机四则运算的改进

#include<stdio.h>
int Menu()
{
    int choic;
    printf("


******************************************
");
    printf("1.四则运算整数习题(试卷型)
");
    printf("2.四则运算真分数习题(试卷型)
");
    printf("3.四则运算整数习题(同步练习型)
");
    printf("4.四则运算真分数习题(同步练习型)
");
    printf("5.退出程序
");
    printf("请选择菜单号(1——5):
");
    printf("******************************************
");
    while((!scanf("%d",&choic))||(choic<1)||(choic>5))
    {
        getchar();
        printf("	输入错误!!!!!!!!!!!!请重新输入
");
        printf("******************************************
");
        printf("1.四则运算整数习题(试卷型)
");
        printf("2.四则运算真分数习题(试卷型)
");
        printf("3.四则运算整数习题(同步练习型)
");
        printf("4.四则运算真分数习题(同步练习型)
");
        printf("5.退出程序
");
        printf("请选择菜单号(1——5):
");
        printf("******************************************
");
    }
    return choic;
}
void exam1()
{
    int i,b,c,d,n,q=1;
    char a[4]={'+','-','*','/'};
    while(q==1)
    {    
        printf("请输入需要四则运算整数习题(试卷型)的题数:");
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            b=rand()%4;
            c=rand()%100;
            d=rand()%100;
            if(a[b]==a[0])
                printf("%d+%d=		",c,d);
            else if(a[b]==a[1])
                printf("%d-%d=		",c,d);
            else if(a[b]==a[2])
                printf("%d×%d=		",c,d);
            else if(a[b]==a[3])
                printf("%d÷%d=		",c,d);
            if(i%5==0)
                printf("
");
        }
        printf("

是否要继续?(1表示是,0表示否):");
        while(!scanf("%d",&q)||q<0||q>1)
        {
            getchar();
            printf("输入错误!!!!!请重新输入
");
            printf("
是否要继续?(1表示是,0表示否):");
        }
        printf("
");
    }
    printf("
");
}
void exam2()
{
    int i,b,c,d,n,q=1,f,e;
    char a[4]={'+','-','*','/'};
    while(q==1)
    {    
        printf("请输入需要四则运算真分数习题(试卷型)的题数:");
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            b=rand()%4;
            c=rand()%100;
            d=rand()%100;
            f=rand()%100;
            e=rand()%100;
            if(c<=d&&e<=f&&d!=0&&f!=0)
            {
                if(a[b]==a[0])
                    printf("%d/%d+%d/%d=	",c,d,e,f);
                else if(a[b]==a[1])
                    printf("%d/%d-%d/%d=	",c,d,e,f);
                else if(a[b]==a[2])
                    printf("(%d/%d)×(%d/%d)=	",c,d,e,f);
                else if(a[b]==a[3])
                    printf("(%d/%d)÷(%d/%d)=	",c,d,e,f);
            }
            else
            {
                i--;
                continue;
            }
               if(i%3==0)
                   printf("

");
        }
        printf("

是否要继续?(1表示是,0表示否):");
        while(!scanf("%d",&q)||q<0||q>1)
        {
            getchar();
            printf("输入错误!!!!!请重新输入
");
            printf("
是否要继续?(1表示是,0表示否):");
        }
        printf("
");
    }
    printf("
");
}
void exam3()
{
    int i,b,c,d,n,q=1,sum=0,per;
    float result,result1;
    char a[4]={'+','-','*','/'};
    while(q==1)
    {    
        sum=0;
        printf("请输入要挑战四则运算整数习题(同步练习型)的题数:");
        scanf("%d",&n);
        printf("请输入每题计算题的分数:");
        scanf("%d",&per);
        for(i=1;i<=n;i++)
        {
            b=rand()%4;
            c=rand()%100;
            d=rand()%100;
            if(a[b]==a[0])
            {
                printf("%d+%d=",c,d);
                scanf("%f",&result);
                result1=c+d;
                if(result==result1)
                {
                    printf("真棒,答对了!
");
                    sum=sum+per;
                }
                else
                {
                    printf("真遗憾,答错了!
");
                    printf("正确答案是%.2f
",result1);
                }
            }
            else if(a[b]==a[1])
            {
                printf("%d-%d=",c,d);
                scanf("%f",&result);
                result1=c-d;
                if(result==result1)
                {
                    printf("真棒,答对了!
");
                    sum=sum+per;
                }
                else
                {
                    printf("真遗憾,答错了!
");
                    printf("正确答案是%.2f
",result1);
                }
            }
            else if(a[b]==a[2])
            {
                printf("%d×%d=",c,d);
                scanf("%f",&result);
                result1=c*d;
                if(result==result1)
                {
                    printf("真棒,答对了!
");
                    sum=sum+per;
                }
                else
                {
                    printf("真遗憾,答错了!
");
                    printf("正确答案是%.2f
",result1);
                }
            }
            else if(a[b]==a[3])
            {
                printf("%d÷%d=",c,d);
                scanf("%f",&result);
                result1=(float)c/d;
                if(result==result1)
                {
                    printf("真棒,答对了!
");
                    sum=sum+per;
                }
                else
                {
                    printf("真遗憾,答错了!
");
                    printf("正确答案是%.2f
",result1);
                }
            }
        }
        if(sum==n*per)
            printf("
恭喜你这次测试满分!
本次的成绩:%d分
",sum);
        else if(sum==0)
            printf("
真遗憾,你本次测试分数不理想,请继续努力!
本次成绩:%d分
",sum);
        else if(sum>0&&sum<n*per)
            printf("
你本次成绩:%d分
",sum);
        printf("

是否要继续?(1表示是,0表示否):");
        while(!scanf("%d",&q)||q<0||q>1)
        {
            getchar();
            printf("输入错误!!!!!请重新输入
");
            printf("
是否要继续?(1表示是,0表示否):");
        }
        printf("
");
    }
    printf("
");
}
void exam4()
{
    int i,b,c,d,n,q=1,f,e,sum=0,per;
    float result,result1;
    char a[4]={'+','-','*','/'};
    while(q==1)
    {    
        sum=0;
        printf("请输入要挑战四则运算真分数习题(同步练习型)的题数:");
        scanf("%d",&n);
        printf("请输入每题计算题的分数:");
        scanf("%d",&per);
        for(i=1;i<=n;i++)
        {
            b=rand()%4;
            c=rand()%100;
            d=rand()%100;
            f=rand()%100;
            e=rand()%100;
            if(c<=d&&e<=f&&d!=0&&f!=0)
            {
                if(a[b]==a[0])
                {
                    printf("%d/%d+%d/%d=",c,d,e,f);
                    scanf("%f",&result);
                    result1=(float)c/d+(float)e/f;
                    if(result==result1)
                    {
                        printf("真棒,答对了!
");
                        sum=sum+per;
                    }
                    else
                    {
                        printf("真遗憾,答错了!
");
                        printf("正确答案是%.2f
",result1);
                    }
                }
                else if(a[b]==a[1])
                {
                    printf("%d/%d-%d/%d=",c,d,e,f);
                    scanf("%f",&result);
                    result1=(float)c/d-(float)e/f;
                    if(result==result1)
                    {
                        printf("真棒,答对了!
");
                        sum=sum+per;
                    }
                    else
                    {
                        printf("真遗憾,答错了!
");
                        printf("正确答案是%.2f
",result1);
                    }
                }
                else if(a[b]==a[2])
                {
                    printf("(%d/%d)×(%d/%d)=",c,d,e,f);
                    scanf("%f",&result);
                    result1=((float)c/d)*((float)e/f);
                    if(result==result1)
                    {
                        printf("真棒,答对了!
");
                        sum=sum+per;
                    }
                    else
                    {
                        printf("真遗憾,答错了!
");
                        printf("正确答案是%.2f
",result1);
                    }
                }
                else if(a[b]==a[3])
                {
                    printf("(%d/%d)÷(%d/%d)=",c,d,e,f);
                    scanf("%f",&result);
                    result1=((float)c/d)/((float)e/f);
                    if(result==result1)
                    {
                        printf("真棒,答对了!
");
                        sum=sum+per;
                    }
                    else
                    {
                        printf("真遗憾,答错了!
");
                        printf("正确答案是%.2f
",result1);
                    }
                }
            }
            else
            {
                i--;
                continue;
            }
        }
        if(sum==n*per)
            printf("
恭喜你这次测试满分!
本次的成绩:%d分
",sum);
        else if(sum==0)
            printf("
真遗憾,你本次测试分数不理想,请继续努力!
本次成绩:%d分
",sum);
        else if(sum>0&&sum<n*per)
            printf("
你本次成绩:%d分
",sum);
        printf("

是否要继续?(1表示是,0表示否):");
        while(!scanf("%d",&q)||q<0||q>1)
        {
            getchar();
            printf("输入错误!!!!!请重新输入
");
            printf("
是否要继续?(1表示是,0表示否):");
        }
        printf("
");
    }
    printf("
");
}
void quit()
{
    printf("谢谢使用该程序!
");
    exit(0);
}
main()
{
    int choic;
    while(1)
    {
        choic=Menu();
        switch(choic)
        {
            case 1:
                exam1();
                break;
            case 2:
                exam2();
                break;
            case 3:
                exam3();
                break;
            case 4:
                exam4();
                break;
            case 5:
                quit();
                break;
        }
    }
}

本次程序是对上一次随机四则运算的改进,主要分成了两大部分:试卷型和同步练习型。在同步练习型中有相应的计算和分数统计的功能。

原文地址:https://www.cnblogs.com/xuegu/p/4384240.html