随机四则运算的改进

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

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

时间: 2024-08-07 16:58:43

随机四则运算的改进的相关文章

随机四则运算 C语言

设计思想:出三十道一百以内数的随机四则运算题目,先随机两个一百以内的数字,再通过随机数确定四则运算算符,最后通过for循环输出三十道 源代码程序: #include <stdlib.h>#include <iostream.h>#include <conio.h>#include <time.h>int main(){ int a = 0; int b = 0; int mode = 0;//0:加 1:减 2:乘 3:除 int i = 0; srand(

300道随机四则运算小程序(java编写)

这是由Java编写的300道随机四则运算小程序, 运算数范围为0~100(不包括100),运算结果保留两位小数. 程序代码: import java.util.*; class Yunsuan{ public static void main(String[] args){ Random rand = new Random(); for(int i = 0; i < 300; i++){ int num1 = (int)(rand.nextDouble() * 100); int num2 =

C#窗体-&gt;&gt;随机四则运算

用户需求: 程序能接收用户输入的整数答案,并判断对错程序结束时,统计出答对.答错的题目数量.补充说明:0——10的整数是随机生成的用户可以选择四则运算中的一种用户可以结束程序的运行,并显示统计结果.在此基础上,做增量开发.增量内容:1)处理用户的错误输入,比如输入字母或符号等,处理除法运算中分母为0的情况,处理结果为负数的情况,保证是小学水平不出现负数,比如不能出现5-8=-3这种情况:               2)用户可以设定倒计时:               3)用户可以设定随机整数的

随机四则运算1.1版

之前写的四则运算1.0版,现在继续扩充 : <四则运算>题目的功能,要求: 题目避免重复:可以定制数量和打印方式: 可以控制下列参数 (1) 是否有乘除法 (2) 是否有括号 (3) 数值范围 (4) 加减有无负数 (5) 除法有无余数 (6) 是否支持分数(真分数.假分数…) (7) 是否支持小数(精确到多少位?) (8) 打印中每行的间隔 先上图看主要界面,及功能区,如下: 1: 一如既往的用JS来写,自认为在界面上可以做到更美观,功能也可以完全做到, 那么找几个功能来演示,那么就从默认条

四则运算最新改进

一.设计思路 1.设计要求 1.题目避免重复: 2.可定制(数量/打印方式): 3.可以控制下列参数: 是否有乘除法.是否有括号. 数值范围.加减有无负数.除法有无余数.否支持分数 (真分数, 假分数, …).是否支持小数 (精确到多少位).打印中每行的间隔可调整: 2.设计思路 1.数量可以用控制循环次数来控制: 2.可定制n列的,当循环n的倍数时,回车: 3.控制输出结果switch(n)中n的大小来控制,如果为2,或3,n-1就可以把乘除转换为加减: 4.数值范围用rand函数控制: 5.

随机四则运算的生成

这是一道简单的编程,随机的生成四则运算,不过还是不是很完美,还有一些欠缺! 源代码: #include<iostream.h>#include<time.h>#include<stdlib.h>void main(){ int a,b,i,op,r;//r记录回答结果 int flag=1; while(flag) { for(i=0;i<30;i++) { srand(time(0)); a = rand() % 100+1; b = rand() % 100+

10个操作数的随机四则运算(二)

上一个版本有一点小问题,插括号时考虑的太少了,丢掉了几种情况,所以导致括号的数量稀少,所以我稍微改进了一下,还有,我按照老师的标准把格式也稍微改了一下 下面是我改进后的代码 #include<iostream> #include<cstdlib> #include<set> #include<ctime> #include<string.h> #include<string> #include<sstream> using

软件工程随堂练习——随机四则运算

题目要求随机生成30道四则运算题目,则主体部分采用循环结构,运算符的随机产生则用随机数的模运算控制 源代码: #include<iostream>using namespace std;void main(){ for(int i=0;i<30;i++) {  int a=rand()%100;  int b=rand()%100;  int c=rand()%4;  switch(c)  {  case(0):   cout<<a<<"+"&

随机四则运算

题目:二柱子要为上二年级的儿子编写一个程序.本程序要求随机产生30道四则运算的题目. 编程思路:在这道题中一共有三个需要随机产生的变量,即第一操作数.符号(+.-.*./)和第二操作数.第一操作数和第二操作数的随机产生比较简单,并将其设置在100以内.但遇到随机符号的时候,我也将其转化成了对数字的随机,即运用if函数,通过对四个数的随机来对应指定的符号.最后用for函数将整体循环输出30次即可. 程序代码: #include<iostream.h> #include<stdlib.h&g