• 个人作业-四则运算题目生成程序


    一、作业信息
    | 作业班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
    | ---- | ---- | ---- |
    | 作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377 |
    | 作业目标 | 能对需求进行分析并实现;编码格式规范;学习博客撰写 |
    | 学号 | 3180701338 |

    二、作业要求
    写一个能自动生成小学四则运算题目的程序,然后在此基础上扩展:

    1)除了整数以外,还要支持真分数的四则运算,例如:1/6+1/8=7/24

    2)程序要求能处理用户的输入,判断对错,累积分数

    3)程序支持可以由用户自行选择加、减、乘、除运算

    4)使用-n参数控制生成题目的个数,例如Myapp.exe -n 10,将生成10个题目

    三、代码提交与运行截图
    1.源代码

    #include <stdio.h>
    #include <stdlib.h>
    #include<time.h>
    #define Num 10         /*Num为参数,控制生成题目的个数*/
    void menu();           /*声明菜单函数*/
    int add();             /*声明加法函数*/
    int sub();             /*声明减法函数*/
    int multi();           /*声明乘法函数*/
    int divi();            /*声明除法函数*/
    
    int main()
    {
        int i,y=0;
        int op;
        srand((unsigned)time(NULL));
        menu();
        scanf("%d",&op);
        switch(op)
        {
        case 1:
            for(i=0;i<Num;i++)
            {
                if(add()==1)                         /*调用加法函数*/
                y++;
            }
            break;
        case 2:
            for(i=0;i<Num;i++)
            {
                if(sub()==1)                         /*调用减法函数*/
                y++;
            }
            break;
        case 3:
            for(i=0;i<Num;i++)
            {
                if(multi()==1)                       /*调用乘法函数*/
                y++;
            }
            break;
        case 4:
            for(i=0;i<Num;i++)
            {
                if(divi()==1)                        /*调用除法函数*/
                y++;
            }
            break;
        }
        printf("***正确率为%.0f%%***
    ",100.0*y/Num);   /*计算正确率,用百分比显示*/
        return 0;
    }
    
    
    /*菜单函数*/
    void menu()
    {
        printf("
    ----欢迎进入小学四则运算练习系统----
    ");
        printf("*********1.加法运算*********
    ");
        printf("*********2.减法运算*********
    ");
        printf("*********3.乘法运算*********
    ");
        printf("*********4.除法运算*********
    ");
        printf("---您计算的结果统一用分数[如:1/4+3/15=27/60]来表示(输入),注意不用化简!谢谢!---
    ");
        printf("请输入数字1-4来选择您要进行的四则运算:");
    }
    
    
    /*加法函数*/
    int add()
    {
        int a1,b1,a2,b2,ans1,res1,ans2,res2;
        printf("---您选择的是加法运算!---");
        printf("---请进行加法运算---
    ");
        /*随机生成两个要参与运算的数*/
        a1=rand()%9+1;
        b1=rand()%9+1;
        a2=rand()%9+1;
        b2=rand()%9+1;
        /*如遇假分数,下面两个if选择条件负责把假分数转化为真分数*/
        if(a1<b1)
        {
        int t;
    	t=a1;
    	a1=b1;
    	b1=t;
         } 
         if(a2<b2)
         {
    	int t;
    	t=a2;
    	a2=b2;
    	b2=t;
          }
        res1=a1*b2+a2*b1;
        res2=a1*a2;
        printf("%d/%d+%d/%d=",b1,a1,b2,a2);
        scanf("%d/%d",&ans1,&ans2);
        if(ans1==res1&&ans2==res2)
        {
            printf("Very Good!
    ");
            return 1;
        }
        else
        {   printf("Wrong Answer!
    ");
            return 0;
        }
    }
    /*减法函数*/
    int sub()
    {
        int a1,b1,a2,b2,ans1,res1,ans2,res2;
        printf("--您选择的是减法运算!--");
        printf("--请进行减法运算--
    ");
        /*随机生成两个要参与运算的数*/
        a1=rand()%9+1;
        b1=rand()%9+1;
        a2=rand()%9+1;
        b2=rand()%9+1;
        /*如遇假分数,下面两个if选择条件负责把假分数转化为真分数*/
       if(a1<b1)
       {
       int t;
    	t=a1;
    	a1=b1;
    	b1=t;
       } 
       if(a2<b2)
       {
    	int t;
    	t=a2;
    	a2=b2;
    	b2=t;
        } 
        res1=a2*b1-a1*b2;
        res2=a1*a2;
        printf("%d/%d-%d/%d=",b1,a1,b2,a2);
        scanf("%d/%d",&ans1,&ans2);
        if(ans1==res1&&ans2==res2)
        {
            printf("Very Good!
    ");
            return 1;
        }
        else
        {   printf("Wrong Answer!
    ");
            return 0;
        }
    }
    /*乘法函数*/
    int multi()
    {
        int a1,b1,a2,b2,ans1,res1,ans2,res2;
        printf("--您选择的是乘法运算!--");
        printf("--请进行乘法运算--
    ");
        /*随机生成两个要参与运算的数*/
        a1=rand()%9+1;
        b1=rand()%9+1;
        a2=rand()%9+1;
        b2=rand()%9+1;
        /*如遇假分数,下面两个if选择条件负责把假分数转化为真分数*/
        if(a1<b1)
        {
    	int t;
    	t=a1;
    	a1=b1;
    	b1=t;
        } 
        if(a2<b2)
        {
    	int t;
    	t=a2;
    	a2=b2;
    	b2=t;
        } 
        res1=b1*b2;
        res2=a1*a2;
        printf("%d/%d*%d/%d=",b1,a1,b2,a2);
        scanf("%d/%d",&ans1,&ans2);
        if(ans1==res1&&ans2==res2)
        {
            printf("Very Good!
    ");
            return 1;
        }
        else
        {   printf("Wrong Answer!
    ");
            return 0;
        } 
    }
    /*除法函数*/
    int divi()
    {
        int a1,b1,a2,b2,ans1,res1,ans2,res2;
        printf("--您选择的是除法运算!--");
        printf("--请进行除法运算--
    ");
        /*随机生成两个要参与运算的数*/
        a1=rand()%9+1;
        b1=rand()%9+1;
        a2=rand()%9+1;
        b2=rand()%9+1;
        /*如遇假分数,下面两个if选择条件负责把假分数转化为真分数*/
        if(a1<b1)
        {
    	int t;
    	t=a1;
    	a1=b1;
    	b1=t;
         } 
         if(a2<b2)
         {
       int t;
    	t=a2;
    	a2=b2;
    	b2=t;
         } 
        res1=b1*a2;
        res2=a1*b2;
        printf("(%d/%d)/(%d/%d)=",b1,a1,b2,a2);
        scanf("%d/%d",&ans1,&ans2);
        if(ans1==res1&&ans2==res2)
       {
            printf("Very Good!
    ");
            return 1;
       }
        else
        {
            printf("Wrong Answer!
    ");
            return 0;
        } 
    }
    

    2.运行截图

    四、个人小结
    首先,第一次接触博客园,许多使用方法很陌生,但是通过这一次的实际操作,慢慢地学会了一些基本的操作,感觉markdown编辑器挺有趣的,希望能在平时多多练习使用它。
    其次,感觉自己的算法相关能力还不足,希望以后自己多加练习。

    (PSP表格)

    psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 10 20
    Estimate 估计这个任务需要多少时间,并规划大致工作步骤 5 5
    Development 开发 100 150
    Analysis 需求分析(包括学习新技术) 10 15
    Design Spec 生成设计文档 20 22
    Design Review 设计复审 10 10
    Coding Standard 代码规范 5 10
    Design 具体设计 15 20
    Coding 具体编码 40 42
    Code Review 代码复审 3 4
    Test 测试(自我测试,修改代码,提交修改) 15 20
    Reporting 报告 10 17
    Test Report 测试报告 4 4
    Size Measurement 计算工作量 3 3
    Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 5
  • 相关阅读:
    1006 Sign In and Sign Out
    1005 Spell It Right
    1004 Counting Leaves
    1003 Emergency
    PAT甲级练习题1001、1002
    翻转字符串.
    JavaScript实现弹幕效果
    SSI技术
    c#事务处理(sqlTransaction)
    Fiddler查看接口响应时间
  • 原文地址:https://www.cnblogs.com/666888ZWL/p/13940418.html
Copyright © 2020-2023  润新知