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

作业要求来源: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.1Personal Software Process StagesTime Senior StudentTime
Planning计划515
 Estimate估计这个任务需要多少时间1012
Development开发2530
Analysis需求分析 (包括学习新技术)250
Design Spec生成设计文档45
Design Review设计复审33
Coding Standard代码规范11
 Design具体设计1012
 Coding具体编码1050
Code Review代码复审22
Test测试(自我测试,修改代码,提交修改)11
Reporting报告33
 测试报告11
 计算工作量23
 并提出过程改进计划11

转载于:https://www.cnblogs.com/hesz/p/9790526.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值