首页 > 技术文章 > 随机四则运算的改进

xuegu 2015-04-01 16:17 原文

#include<stdio.h>
int Menu()
{
    int choic;
    printf("\n\n\n******************************************\n");
    printf("1.四则运算整数习题(试卷型)\n");
    printf("2.四则运算真分数习题(试卷型)\n");
    printf("3.四则运算整数习题(同步练习型)\n");
    printf("4.四则运算真分数习题(同步练习型)\n");
    printf("5.退出程序\n");
    printf("请选择菜单号(1——5):\n");
    printf("******************************************\n");
    while((!scanf("%d",&choic))||(choic<1)||(choic>5))
    {
        getchar();
        printf("\t输入错误!!!!!!!!!!!!请重新输入\n");
        printf("******************************************\n");
        printf("1.四则运算整数习题(试卷型)\n");
        printf("2.四则运算真分数习题(试卷型)\n");
        printf("3.四则运算整数习题(同步练习型)\n");
        printf("4.四则运算真分数习题(同步练习型)\n");
        printf("5.退出程序\n");
        printf("请选择菜单号(1——5):\n");
        printf("******************************************\n");
    }
    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=\t\t",c,d);
            else if(a[b]==a[1])
                printf("%d-%d=\t\t",c,d);
            else if(a[b]==a[2])
                printf("%d×%d=\t\t",c,d);
            else if(a[b]==a[3])
                printf("%d÷%d=\t\t",c,d);
            if(i%5==0)
                printf("\n");
        }
        printf("\n\n是否要继续?(1表示是,0表示否):");
        while(!scanf("%d",&q)||q<0||q>1)
        {
            getchar();
            printf("输入错误!!!!!请重新输入\n");
            printf("\n是否要继续?(1表示是,0表示否):");
        }
        printf("\n");
    }
    printf("\n");
}
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=\t",c,d,e,f);
                else if(a[b]==a[1])
                    printf("%d/%d-%d/%d=\t",c,d,e,f);
                else if(a[b]==a[2])
                    printf("(%d/%d)×(%d/%d)=\t",c,d,e,f);
                else if(a[b]==a[3])
                    printf("(%d/%d)÷(%d/%d)=\t",c,d,e,f);
            }
            else
            {
                i--;
                continue;
            }
               if(i%3==0)
                   printf("\n\n");
        }
        printf("\n\n是否要继续?(1表示是,0表示否):");
        while(!scanf("%d",&q)||q<0||q>1)
        {
            getchar();
            printf("输入错误!!!!!请重新输入\n");
            printf("\n是否要继续?(1表示是,0表示否):");
        }
        printf("\n");
    }
    printf("\n");
}
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("真棒,答对了!\n");
                    sum=sum+per;
                }
                else
                {
                    printf("真遗憾,答错了!\n");
                    printf("正确答案是%.2f\n",result1);
                }
            }
            else if(a[b]==a[1])
            {
                printf("%d-%d=",c,d);
                scanf("%f",&result);
                result1=c-d;
                if(result==result1)
                {
                    printf("真棒,答对了!\n");
                    sum=sum+per;
                }
                else
                {
                    printf("真遗憾,答错了!\n");
                    printf("正确答案是%.2f\n",result1);
                }
            }
            else if(a[b]==a[2])
            {
                printf("%d×%d=",c,d);
                scanf("%f",&result);
                result1=c*d;
                if(result==result1)
                {
                    printf("真棒,答对了!\n");
                    sum=sum+per;
                }
                else
                {
                    printf("真遗憾,答错了!\n");
                    printf("正确答案是%.2f\n",result1);
                }
            }
            else if(a[b]==a[3])
            {
                printf("%d÷%d=",c,d);
                scanf("%f",&result);
                result1=(float)c/d;
                if(result==result1)
                {
                    printf("真棒,答对了!\n");
                    sum=sum+per;
                }
                else
                {
                    printf("真遗憾,答错了!\n");
                    printf("正确答案是%.2f\n",result1);
                }
            }
        }
        if(sum==n*per)
            printf("\n恭喜你这次测试满分!\n本次的成绩:%d分\n",sum);
        else if(sum==0)
            printf("\n真遗憾,你本次测试分数不理想,请继续努力!\n本次成绩:%d分\n",sum);
        else if(sum>0&&sum<n*per)
            printf("\n你本次成绩:%d分\n",sum);
        printf("\n\n是否要继续?(1表示是,0表示否):");
        while(!scanf("%d",&q)||q<0||q>1)
        {
            getchar();
            printf("输入错误!!!!!请重新输入\n");
            printf("\n是否要继续?(1表示是,0表示否):");
        }
        printf("\n");
    }
    printf("\n");
}
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("真棒,答对了!\n");
                        sum=sum+per;
                    }
                    else
                    {
                        printf("真遗憾,答错了!\n");
                        printf("正确答案是%.2f\n",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("真棒,答对了!\n");
                        sum=sum+per;
                    }
                    else
                    {
                        printf("真遗憾,答错了!\n");
                        printf("正确答案是%.2f\n",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("真棒,答对了!\n");
                        sum=sum+per;
                    }
                    else
                    {
                        printf("真遗憾,答错了!\n");
                        printf("正确答案是%.2f\n",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("真棒,答对了!\n");
                        sum=sum+per;
                    }
                    else
                    {
                        printf("真遗憾,答错了!\n");
                        printf("正确答案是%.2f\n",result1);
                    }
                }
            }
            else
            {
                i--;
                continue;
            }
        }
        if(sum==n*per)
            printf("\n恭喜你这次测试满分!\n本次的成绩:%d分\n",sum);
        else if(sum==0)
            printf("\n真遗憾,你本次测试分数不理想,请继续努力!\n本次成绩:%d分\n",sum);
        else if(sum>0&&sum<n*per)
            printf("\n你本次成绩:%d分\n",sum);
        printf("\n\n是否要继续?(1表示是,0表示否):");
        while(!scanf("%d",&q)||q<0||q>1)
        {
            getchar();
            printf("输入错误!!!!!请重新输入\n");
            printf("\n是否要继续?(1表示是,0表示否):");
        }
        printf("\n");
    }
    printf("\n");
}
void quit()
{
    printf("谢谢使用该程序!\n");
    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;
        }
    }
}

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

推荐阅读