这个作业属于哪个课程 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/
这个作业要求在哪里 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11377
这个作业的目标 <你理解的作业目标具体内容>
学号 3180701141
二.题目要求

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

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

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

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

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

三.代码提交

include <stdio.h>

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);

//main函数

void main()

{

while(1)

{

    takeTest();

}

}

//获取随机运算符

char getSignal()

{

char signal[CALC_KIND]={'+','-','*','/'};

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:

    res=0;

    printf("运算符不符合规则\n");

}

return res;

}

//列出题目

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));

}

}

//回答正确打印信息

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;

}

}

//回答错误打印信息

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;

}

}

四.个人小结

1)在软件开发中,掌握时间是一个很重要的技能,请通过psp表格做到:

a.理清开发的完整环节,争取在每个环节都有实际的工作,一开始边界不清楚是正常的,但请尝试按照自己的理解努力对应每个环节的实际工作

b.预估每个环节的时间,并真实统计这些环节的耗时,在完成后填写完整的psp耗时表

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 20 8
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 18
Development 开发 100 150
Analysis 需求分析(包括学习新技术) 15 5
Design Spec 生成设计文档 5 5
Design Review 设计复审 5 5
Coding Standard 代码规范 3 2
Design 具体设计 10 19
Coding 具体编码 36 29
Code Review 代码复审 5 7
Test 测试(自我测试,修改代码,提交修改) 10 10
Reporting 报告 9 6
Test Report 测试报告 3 2
Size Measurement 计算工作量 2 1
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 3 3