• 初级四则运算


    一、时间计划与实际使用时间

    PSP2.1 Personal Software Process Stages Time Senior Student Time
    Planning 计划 12 8
    · Estimate 估计这个任务需要多少时间 10 6
    Development 开发 82 88
    · Analysis 需求分析 (包括学习新技术) 6 10
    · Design Spec 生成设计文档 5 6
    · Design Review 设计复审 4 6
    · Coding Standard 代码规范 4 4
    · Design 具体设计 10 12
    · Coding 具体编码 36 21
    · Code Review 代码复审 7 9
    · Test 测试(自我测试,修改代码,提交修改) 15 30
    Reporting 报告    
    · 测试报告    
    · 计算工作量 3 2
    · 并提出过程改进计划 4 3

    二、题目要求

      任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数。

    三、代码提交

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    
    char getSignal();                      //获取随机运算符的函数
    int random(double,double);             //获取随机数函数
    int getResult(int,int,char);           //结果计算函数
    int takeTest();                        //题目生成函数
    
    void main() 
    {
             int i,n,a,right=0;
             double percent;
             printf("请输入题目的数量:");
             scanf("%d",&n);
             for(i=0;i<n;i++)
             {
                 a=takeTest();
                 right=right+a;
             }
             printf("回答正确!
    ");
             printf("正确答案为:%d
    ",right);
             percent=((double)right*100.00)/(double)n;
             printf("正确率为:%0.2f %%
    ",percent);
    }
    
    char getSignal()
    {
        char signal[4]={'+','-','*','/'};
        srand((unsigned)time(NULL));
        return signal[rand()%4];
    }
    
    
    
    int random(double start, double end)
    {
        return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));
    }
    
    
    int getResult(int num1,int num2,char signal)
    {
        int res;
        switch(signal)
        {
        case '+':
            res=num1+num2;break;
        case '-':
            res=num1-num2;break;
        case '*':
            res=num1*num2;break;
        case '/':
            res=num1/num2;break;
        default:
            printf("运算符错误!
    ");
        }
        return res;
    }
    
    int takeTest()
    {
        int get;
        int num1,num2,a;
        char signal;
    
        srand((unsigned)time(NULL));
        signal=getSignal();
        num1=random(0,1000);
        num2=random(1,1000);
    if(signal=='-')
        {
            if(num1<num2)
            {
                int temp;
                temp=num1;
                num1=num2;
                num2=temp;
            }
        }
        if(signal=='/')
        {
            if(num2==0)
            {
                int temp;
                temp=num1;
                num1=num2;
                num2=temp;
            }
        }
        printf("%d%c%d=",num1,signal,num2);
        scanf("%d",&get);
        fflush(stdin);   //清空输入缓冲区
        if(getResult(num1,num2,signal)==get)
            {
            printf("回答正确!
    ");
            a=1;
            }
        else
        {
            printf("回答错误!
    ");
            printf("正确答案为: %d
    ",getResult(num1,num2,signal));
            a=0;
        }
        return a;
    }

    四、需求分析

    用户控制生成题目的个数,并能够自动随机生成加减乘除四则运算,运算包括整数的运算,答完题后生出正确答案,并在最后能统计答题正确数与正确率。

    五、设计

    开发工具:Visio c++ 6.0

    编程语言:C语言

    函数设计:char getSignal()用于获取随机运算符函数

                      int random(double,double)用于获取随机数函数
                      int getResult(int,int,char)用于结果计算函数
                      int takeTest()用于题目生成函数

    五、遇到的问题与解决

    对C语言的编辑代码已经忘了很多了,写代码的时候遇到了很多问题,一个小小的代码写了好久都有很多问题,最后在同学的帮助下进行了更正。

  • 相关阅读:
    LeetCode 127. Word Ladder 单词接龙(C++/Java)
    LeetCode 681. Next Closest Time 最近时刻 / LintCode 862. 下一个最近的时间 (C++/Java)
    LeetCode 682. Baseball Game 棒球比赛(C++/Java)
    LeetCode 218. The Skyline Problem 天际线问题(C++/Java)
    小数据池,编码
    字典
    列表
    常见的数据类型
    while循环
    初始python
  • 原文地址:https://www.cnblogs.com/Tily/p/9772510.html
Copyright © 2020-2023  润新知