四则运算题目的程序

此次作业要求:

编写一个能自动生成小学四则运算题目的程序。

除了整数以外,还能支持分数的四则运算。

对实现的功能进行描述,并且对实现结果要求截图。

题目:自动生成四则运算

主要功能:可以简单方便快的练习加减乘除的运算,完成一些自测的练习。编程软件选择了Visual Studio 2015。

会有三个界面:有分数,整数和退出选项

当选择整数时会有十道题目,如果做对会提示“恭喜你答对了做的不错!“如果做错会提示"答案错误请继续努力”十道题都做完时会出现成绩和分数,整数和退出选项。

分数四则运算里会有随机的题供做后面是答案可以参考。

退出选项点击后会有个再见的文字界面。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
void Shengcheng();
void Simple();
void real();
void result();
int MaxGYS(int a, int b);
int system(const char *string);

int main(void)
{
    int n;
Loop1: printf("\n\n\n\n\t\t\t耿丹13计科-1胡新宇\n\n\t\t\t[1] 小学数学无分数十道四则运算练习题\n\n\t\t\t[2]小学数学分数四则运算练习题\n\n\t\t\t[3] 退出程序\n\n\t\t\t请输入相应的选项,按回车键确定:");
    scanf_s("%d", &n);
    system("cls");
    if (n == 1)
        Shengcheng();//到整数十道题界面
    else
        if (n == 2)
            result();//分数界面
    else
        if (n == 3)
        {
            printf("\n\n\n\n\n\n\t\t再见\n\n\t\t");//退出界面
            return 0;
        }
        else
            printf("输入错误请重新输入");//错误提示
    goto Loop1;//回到主界面
    return 0;
}

void Shengcheng()//整数十道运算随机题
{
    int i, a, b, p, q, r, c, sum = 0, d = 0, e = 0;
    srand((unsigned)time(NULL));
    printf("请做下面十道四则运算题,加油哦!\n\n");
    for (i = 0; i < 10; i++)   {
        a = rand() % 50;
        b = rand() % 50;
        p = rand() % 50;
        q = rand() % 50;
        r = rand() % 50;
        while (r == 0)
        {
            i--;
        }
        while (r != 0)
        {
            printf("请输入你的答案:%d+%d-%d*%d/%d=", a, b, p, q, r);
            scanf_s("%d", &c);
            printf("\n");
            if ((a + b - p*q / r) == c)

            {
                printf("恭喜你答对了!干的不错!\n\n");
                sum = sum + 10;
                e = e + 1;
            }
            else
            {
                printf("答案错误!请继续努力!\n\n");
                d = d + 1;
            }
            break;//返回
        }
        continue;
    }
    printf("你总共答对了%d道题,答错了%d道题。\n\n", e, d);

    printf("你的得分为:%d分继续努力哟!\n\n", sum);
    return ;
}

void Simple()
{
    int m, b, c, d, t;
    m = rand() % 3 + 1;
    b = rand() % 20 + 1;
    c = rand() % 20 + 1;
    switch (m)
    {
    case 1: {
        d = b + c;
        printf("%d+%d=\t\t\t\t\t\t\t\t\t%d\n", b, c, d);
    }break;
    case 2: {
        if (b>c)
        {
            t = b;
            b = c;
            c = t;
        }
        d = b - c;
        printf("%d-%d=\t\t\t\t\t\t\t\t\t%d\n", b, c, d);
    }break;
    case 3: {
        d = b*c;
        m = rand() % 2 + 1;
        if (m == 1)
            printf("%d*%d=\t\t\t\t\t\t\t\t\t%d\n", b, c, d);
        else
            printf("%d/%d=\t\t\t\t\t\t\t\t\t%d\n", d, b, c);
    } break;
    }
    return;
}
void real()//分子分母
{
    int a, b, c, d, e, f, g, h, t;
    a = rand() % 4 + 1;
    b = rand() % 9 + 1;//第一个数字分子
    c = rand() % 9 + 1;//第一个数字分母
    d = rand() % 9 + 1;//第二个数字分子
    e = rand() % 9 + 1;//第二个数字分母
    if (b>c)
    {
        t = b;
        b = c;
        c = t;
    }
    if (d>e)
    {
        t = d;
        d = e;
        e = t;
    }    switch (a)
    {
    case 1: {
        f = c*e;
        g = b*e + d*c;
        h = MaxGYS(g, f);
        f = f / h;
        g = g / h;
        printf("(%d/%d)+(%d/%d)=\t\t\t\t\t\t\t\t(%d/%d)\n", b, c, d, e, g, f);
    }break;
    case 2: {
        f = c*e;
        g = b*e - d*c;
        if (g>0)
        {
            h = MaxGYS(g, f);
            f = f / h;
            g = g / h;
            printf("(%d/%d)-(%d/%d)=\t\t\t\t\t\t\t\t(%d/%d)\n", b, c, d, e, g, f);
        }
        else
        {
            g = abs(g);
            h = MaxGYS(g, f);
            f = f / h;
            g = g / h;
            printf("(%d/%d)-(%d/%d)=\t\t\t\t\t\t\t\t(%d/%d)\n", d, e, b, c, g, f);
        }
    }break;
    case 3: {
        f = c*e;
        g = b*d;
        h = MaxGYS(g, f);
        f = f / h;
        g = g / h;
        printf("(%d/%d)*(%d/%d)=\t\t\t\t\t\t\t\t(%d/%d)\n", b, c, d, e, g, f);
    }break;
    case 4: {
        f = b*e;
        g = c*d;
        h = MaxGYS(g, f);
        f = f / h;
        g = g / h;
        printf("(%d/%d)/(%d/%d)=\t\t\t\t\t\t\t\t(%d/%d)\n", b, c, d, e, g, f);
    }
    default:break;
    }
    return;
}
int MaxGYS(int a, int b)//定义a,b中的最大值为整型变量
{
    int c, t;
    if (a<b)
    {
        t = a;
        a = b;
        b = t;
    }
    while (b != 0)
    {
        c = a%b;
        a = b;
        b = c;
    }
    return a;
}
void result()//分数四则随机题
{
    int m, i;
    for (i = 0; i<30; i++)
    {
        m = rand() % 2 + 1;
        if (m == 1)
            Simple();
        else
            real();
    }
    system("pause");
    system("cls");
    system("pause");
    system("cls");
    return  ;

}

调试运行结果:

选择1会进入如下界面

当你做完第一个就会有正确错误的提示

做完十道题会有得分

重新选择要进入的项目选择2如下图:

前面是题目后面是答案可以方便做题人审核。

选择第三项退出后会出现下图:

因为本人并不能自己打出代码只能在网上搜索,因为学习也是一种积累,以前都是老师给代码自己照着打,但是这次是自己去寻找代码,不停的调试调试,来运行出程序,感觉又是一种不同的体验,在这篇代码中有调试不出来的就在百度中搜索也能了解不少知识。在借鉴中学习,不断地积累,把更多的知识去消化转化为自己的知识,让自己也可以编出代码,来更好地完成老师布置的作业,使自己有更大的提升,上课跟随着老师的脚步,一步一步的学好软件工程这门课程。

时间: 2024-12-15 20:36:19

四则运算题目的程序的相关文章

Individual Project &quot;写一个能自动生成小学四则运算题目的程序&quot;

一.题目简介 写一个能自动生成小学四则运算题目的程序. 初步拟定要实现的功能后,估计一下自己需要花多长时间.编程过程中记录自己实际用了多长时间. 然后和同学们比较一下各自程序的功能.实现方法的异同等等. 二.源码的github链接 https://github.com/gaino1/IndividualProject 三.所设计的模块测试用例.测试结果截图 四.问题及解决方案.心得体会 要想学好C语言,要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自

能自动生成小学四则运算题目的程序

题目要求 能自动生成小学四则运算题目 除了整数外,还要支持真分数的四则运算 支持多个运算符,也就是混合运算 程序支持判断对错,累计分数并倒计时 分析 分为几个函数功能模块:int getChoice() :    功能:用户选择功能 void showMenu():  功能:显示功能的菜单 void doExercise(int n):  功能:计分器 int test(int n);    功能:进行一道题的测试过程 int main();  主函数 源代码转载于李思雨,博客链接:http:/

自动生成小学四则运算题目的程序心得

#include<stdio.h>#include<math.h>#include<windows.h>int right=0;int wrong=0;void add(){int a,b,c;a=rand()%100;b=rand()%100;printf("请回答:\n\t\t %d + %d = ",a,b);scanf("%d",c);if(a+b==c){printf("回答正确!\n");right

自动生成小学四则运算题目的程序.心得体会

http://t.cn/RAS67B0 源代码 #include<stdio.h> #include<stdlib.h>#include<time.h>main(){int a,b,op,os; printf(" [天天练,Baby们来挑战吧!]\n");aq1: printf("选择您想挑战的运算法则\n");printf("1.加法 2.减法 3.乘法 4.除法\n");scanf("%d&quo

作业二:自动生成小学四则运算题目的程序

主要功能:生成四则运算 设计思想:运用所学知识和算法,设计四则运算,除了整数以外,还涉及了真分数. 源代码: #include<iostream> using namespace std; #include<time.h> #include<string> int main() { int count=0 ; srand(time(NULL));//用系统当前时间设置rand()随机序列种子,保证每次运行随机序列不一样 char ch; while(count<3

作业二: 编写自动生成小学四则运算题目的程序

主要功能: 可自动随机生成加.减.乘.除四则运算,输入答案是,可直接判断正误. 设计思想:利用C语言,使用随机函数生成运算数 源代码: #include<stdio.h> #include<stdlib.h> #include<time.h> int i=0,j=0; void jia() { int a,b,m; srand(time(NULL)); a=1+rand()%100; b=1+rand()%100; printf("%d\n",a);

构建之法1:编写一个生成四则运算题目的程序

import java.util.*; public class ArithmeticTopic { private static Random random = new Random(); public ArithmeticTopic() { // TODO Auto-generated constructor stub } private String createNumber() { int number1 =1+random.nextInt(100); int point1 = 0; S

3月10号周二课堂练习:关于自动生成四则运算题目的程序的延伸

对题目要求进行初步的分析: 1.判断两次随机数是否相同    将产生的题目保存(循环)下来,然后将结果进行(循环)比较. 2.多加入一个变量Num,来控制题目数量 3.在每一个switch选择的语句,进行选择判断  3.1选择是否有乘除法,  3.2是否有括号 判断是否加减乘除是否都存在,加减在算式中的位置,然后进行选择是否添加括号 3.3数值范围 主要控制随机数产生器模余的大小(如a=rand()%n,n可以取任意值)    3.4加减有无负数 比较减数和被减数的大小  3.5除法有无余数 将

20150324 练习1 四则运算题目的程序 升级版

#include<stdio.h> #include<stdlib.h> main() {int a,b,op,os; printf(" [每课一练 妈妈再也不用担心我的学习]\n"); aq1: printf("选择您想挑战的运算法则\n");/*新版本跟新如下*/ printf("0.退出 1.加法 2.减法 3.乘法 4.除法 5.做分数题\n");/*添加退出功能*//*增加分数计算*//*增加随机数范围0~100