【软件工程实践】结对项目-四则运算 “软件”之升级版

【软件工程实践】结对项目-四则运算 “软件”之升级版

一、基本要求

从个人项目出发,将程序改装成一个单机带用户界面(不是控制台)的程序,这个程序最基本要达到:

  • 生成题目,单个题目最多不能超过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语言,也算是对之前知识的复习,途中还有很多细节的错误,通过询问同学得以解决。

posted on 2018-10-29 13:59  朱志杰  阅读(171)  评论(1编辑  收藏  举报