【软件工程实践】结对项目-四则运算 “软件”之升级版
【软件工程实践】结对项目-四则运算 “软件”之升级版
一、基本要求
从个人项目出发,将程序改装成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:
- 生成题目,单个题目最多不能超过4个运算符,操作数小于100。
- 用户可以输入答案。
若用户输入答案正确,则提示正确;若答案错误,则提示错误,并要提示正确答案是多少。
二、开发环境
vc++
三、编程时间
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 0.5 | 0.5 |
· Estimate | 估计这个任务需要多少时间 | 6 | 8 |
Development | 开发 | 6 | |
· Analysis | 需求分析 (包括学习新技术) | 1.5 | 1.5 |
· Design Spec | 生成设计文档 | 0.5 | 0.5 |
· Design Review | 设计复审 | 0 | 0 |
· Coding Standard | 代码规范 | 0.2 | 0.1 |
· Design | 具体设计 | 2 | 2 |
· Coding | 具体编码 | 2 | 2 |
· Code Review | 代码复审 | 0.5 | 1 |
· Test | 测试(自我测试,修改代码,提交修改) | 1 | 2.5 |
Reporting | 报告 | 0 | |
· | 测试报告 | 0 | |
· | 计算工作量 | 0 | |
· | 并提出过程改进计划 | 0 |
|
四、代码展示
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "windows.h"
void main(void)
{
char s = '=';//=号
char ch[5]="+-*/";
char symbol;//运算符
int operand[2]={0};//两个操作数
int num;//题目数
int i;//循环变量
int answer;
float fanswer;
int ret=0;
int Ret=0;
int symbol_index;//操作符索引,0->+ 1->- 2->* 3->/
system("color f4");
system("pause");
while(1)
{
printf("请输入你想得到几组随机题目(输入0退出程序):");
scanf("%d",&num);
if(!num)
{
break;
}
srand((unsigned int)time(0));
for(i=0; i<num; i++)
{
symbol_index = rand()%4;//产生操作符的索引
symbol = ch[symbol_index];//操作符
operand[0] = rand()%100+1;//第一个操作数
operand[1] = rand()%100+1;//第二个操作数
ret=rand()%10+1;
switch(symbol_index)
{
case 0:
printf("%d%c%d%c\n",operand[0],symbol,operand[1],s);
printf("请输入答案:");
scanf("%d",&answer);
if(answer==operand[0]+operand[1])
{
printf("恭喜你答对了!\n");
}
else
{
printf("回答错误!正确答案是%d\n",operand[0]+operand[1]);
}
break;
case 1:
printf("%d%c%d%c\n",operand[0],symbol,operand[1],s);
printf("请输入答案:");
scanf("%d",&answer);
if(answer==operand[0]-operand[1])
{
printf("恭喜你答对了!\n");
}
else
{
printf("回答错误!正确答案是%d\n",operand[0]-operand[1]);
}
break;
case 2:
printf("%d%c%d%c\n",operand[0],symbol,operand[1],s);
printf("请输入答案:");
scanf("%d",&answer);
if(answer==operand[0]*operand[1])
{
printf("恭喜你答对了!\n");
}
else
{
printf("回答错误!正确答案是%d\n",operand[0]*operand[1]);
}
break;
case 3:
printf("%d%c%d%c\n",operand[0],symbol,operand[1],s);
printf("请输入答案:");
scanf("%f",&fanswer);
if(fanswer==operand[0]*1.0/operand[1])
{
printf("恭喜你答对了!\n");
}
else
{
printf("回答错误!正确答案是%f\n",operand[0]*1.0/operand[1]);
}
break;
case 4:
printf("%d!",ret);
for (i = 1; i <= ret; i++)
{
Ret=ret*i;
}
printf("请输入答案:");
scanf("%d",&answer);
if(answer==Ret)
{
printf("恭喜你答对了!\n");
}
else
{
printf("回答错误!正确答案是%d\n",Ret);
}
break;
default:
break;
}
}
}
}
五、总结与体会
这次的实验是上次实验进行修改与升级,太久没接触C语言,也算是对之前知识的复习,途中还有很多细节的错误,通过询问同学得以解决。