四则运算


一、作业信息


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

二、作业要求


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

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

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

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

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


三、代码提交



#include <ctype.h>  

#include <time.h>  

#include <stdlib.h>  

#include <windows.h>  

#define IDNO_LENGTH 6  

#define CALC_KIND 4  

char getSignal();
int getResult(int,int,char);
void takeTest();
void falsePrint(int);
void correctPrint(int);

3.1 main函数

int main()
{
    while(1)
    {
        takeTest();
    }
}

3.2获取随机运算符

char getSignal()
{
    char signal[CALC_KIND]={'+','-','*','/'};
    srand((unsigned)time(NULL));
    return signal[rand()%4];
}

3.3获取随机数

int random(double start, double end)
{
    return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));
}

3.4运算

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:
        res=0;
        printf("运算符不符合规则\n");
    }
    return res;
}

3.5列出题目

void takeTest()
{
    int giveRes;
    int num1;
    int num2;
    char signal;
    int printFlag;
    srand((unsigned)time(NULL));
    signal=getSignal();
    num1=random(0,100);
    num2=random(1,100);
    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",&giveRes);
    fflush(stdin);
    if(getResult(num1,num2,signal)==giveRes)
    {
        printFlag=random(1,5);
        correctPrint(printFlag);
    }
    else
    {
        printFlag=random(1,4);
    	falsePrint(printFlag);
        printf("正确答案:%d\n",getResult(num1,num2,signal));
    }
}

3.6回答正确打印信息

void correctPrint(int num)
{
    switch(num)
    {
    case 1:
        printf("You're right!\n");break;
    case 2:
    	printf("It's OK!\n");break;
    case 3:
        printf("Correct!\n");break;
    case 4:
        printf("Perfect!\n");break;
    case 5:
        printf("Good!\n");break;
    default:
        printf("Powerful!\n");break;
    }
}

3.7回答错误打印信息

void falsePrint(int num)
{
    switch(num)
    {
    case 1:
        printf("You're lost!");break;
    case 2:
        printf("Failure!");break;
    case 3:
        printf("Come on!");break;
    case 4:
        printf("It's wrong!");break;
    default:
       printf("Incorrect!");break;
    }
}

四、运行截图

五、个人小结

此次的博客园注册与作业的完成,都打开了我学习的新大门,了解了另一个学习的窗口,通过博客园可以更好地表达自己所学习到的知识,哪怕知识一点点,都可以更好地分享出去,
四则运算的编写也是最为基础的算法,但是在写的时候,仍然会出现大量的问题,这些问题有大有小,都是值得自己关注的,还是要不断地来编写代码来提升自己的编程能力。

附:PSP表格

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 15 20
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 20 24
Development 开发 200 243
Analysis 需求分析(包括学习新技术) 15 11
Design Spec 生成设计文档 7 7
Design Review 设计复审 6 4
Coding Standard 代码规范 5 7
Design 具体设计 30 38
Coding 具体编码 45 40
Code Review 代码复审 8 7
Test 测试(自我测试,修改代码,提交修改) 5 6
Reporting 报告 6 12
Test Report 测试报告 5 8
Size Measurement 计算工作量 3 4
Size Measurement 事后总结,并提出过程改进计划 4 9
posted @ 2020-11-08 15:30  Giannis  阅读(222)  评论(1编辑  收藏  举报