个人项目-小学四则运算初版

作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186

github地址:https://github.com/sizhanhe/-

一、题目要求

像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:23 - 3 * 4 = 11

扩展要求:

1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。

2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。


二、设计思路

编程语言:c语言

工具:

设计思路:主函数让用户输入要练习的题目数量;而后随机产生随机数和随即运算符并产生运算式;判别用户输入的结果是否与正确答案一致,提示输入值是否正确,答题继续。答题完毕后,统计错对情况给出判别数据。

类。

四、主要代码

    srand((unsigned int)time(NULL));
    for(i=1;i<=n;i++){
        lab1:

        //随机生成三个数
        oneNum = rand()%100;
        twoNum = rand()%100;
        threeNum = rand()%100;

        //随机生成运算符
        firstSymbol = rand()%4;
        secondSymbol = rand()%4;

        //判断运算符优先级
        if(firstSymbol < secondSymbol ){
            sum = operation(twoNum,threeNum,secondSymbol);
            sum = operation(oneNum,sum,firstSymbol);
        }else{
            sum = operation(oneNum,twoNum,secondSymbol);
            sum = operation(sum,threeNum,firstSymbol);
        }

        //看结果是否为负数,负数重新生成
        if(sum <= 0) goto lab1;

        //打印出题目
        printf("%d %c %d %c %d = ",oneNum,Symbol(firstSymbol),twoNum,Symbol(secondSymbol),threeNum,sum);

        //比对答案是否正确
        scanf("%f",&answer);
        if((int)(100*sum+0.5)/100 == (int)(100*answer+0.5)/100){
            printf("回答正确!!!\n");
            right++;
        }else{
            printf("回答错误!!!正确答案是%.2f\n",((100*sum+0.5)/100));
        }
    }

/*
函数名:opreation
函数功能:进行+、-、*、/运算
参数:a,b运算数,symbol运算符号
返回值:运算结果 sum
*/
float operation(int a,int b,int symbol){
    float sum;

    if(symbol == 0) sum = a+b;
    else if(symbol == 1) sum = a-b;
    else if(symbol == 2) sum = a*b;
    else sum = (float)a/(float)b;

    return (sum);
}

/*
函数名:Symbol
功能:将随机数转换为对应得运算符号
参数:numSymbol
返回值:symbol
*/
char Symbol(int numSymbol){
    char symbol;
    if(numSymbol == 0) symbol = '+';
    else if (numSymbol == 1) symbol = '-';
    else if (numSymbol == 2) symbol = '*';
    else symbol = '/';
    return symbol;
}

  


 五、运行结果

 


 六、个人软件过程耗时估计与统计表

 

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 计划 5 15
 Estimate 估计这个任务需要多少时间 10 12
Development 开发 25 30
Analysis 需求分析 (包括学习新技术) 2 50
Design Spec 生成设计文档 4 5
Design Review 设计复审 3 3
Coding Standard 代码规范 1 1
 Design 具体设计 10 12
 Coding 具体编码 10 50
Code Review 代码复审 2 2
Test 测试(自我测试,修改代码,提交修改) 1 1
Reporting 报告 3 3
  测试报告 1 1
  计算工作量 2 3
  并提出过程改进计划 1 1
posted @ 2018-10-15 13:38  sizhanhe  阅读(235)  评论(2编辑  收藏  举报