第三次作业(毛涛和徐明艳)

  第三次作业

 

题目:

请编写一个能自动生成小学四则运算题目的“软件”。让程序能接受用户输入答案,并判定对错。最后给出总共对/错的数量。

需求分析:
      1、 该软件是针对学生有限的计算能力,计算效率,计算精确度而制作的软件;
  2、 该软件可以进行简单的四则运算并进行判断;

扩展功能:

  1、 程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数。
  2、 可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。

设计:
  根据四则运算法则本“软件”在设计上使用C语言实现,在VC++6.0运行。

代码实现:

       1、采用模块化设计思想,修改之前的code,将 “计算功能” 封装起来.

       2、在C语言环境下,将函数声明与具体实现分别存放在头文件(.h)和源文件(.c)中;

头文件(.h)代码:  

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

 

void jia();

void jian();

void cheng();

void chu();

源文件(.cpp)代码:

// my.cpp : Defines the entry point for the console application.

//

//#include <iostream>

//#include "stdafx.h"

#include "01.h"

 

int wrong=0,right=0;

 

int main(int argc, char* argv[])

{

                   int x,y=0;

                   srand(time(NULL));

                   while(1) {

                            printf("请选择:\n加法运算(输入1)\n减法运算(输入2)\n乘法运算(输入3)\n除法运算(输入4)\n");

                            if(y==0)

                                     scanf("%d",&x);

                            switch(x) {

                                     case 1:jia();break;

                                     case 2:jian();break;

                                     case 3:cheng();break;

                                     case 4:chu();break;

                            }

                            printf("\n重新选择(输入1),退出运算(输入2)");

                            scanf("%d",&y);

                            if(y==1)y=0;

                            if(y==2)break;

                   }

                   printf("做对%d道题,做错%d道题!\n",right,wrong);

 

         return 0;

}

 

void jia()

{

         int a,b,c;

         a=rand()%100;

         b=rand()%100;

         printf("请输入你的运算结果:%d+%d=",a,b);

         scanf("%d",&c);

         if(a+b==c){

                   printf("结果正确\n");

                   right++;

         }

         else {

                   printf("结果错误\n");

                   wrong++;

         }

}

void jian(){

int a,b,c;

a=rand()%100;

b=rand()%100;

printf("请输入你的运算结果:%d-%d=",a,b);

scanf("%d",&c);

if(a-b==c){

printf("结果正确\n");

right++;

}

else {

printf("结果错误\n");

wrong++;

}

}

void cheng(){

         int a,b,c;

         a=rand()%100;

         b=rand()%100;

         printf("请输入你的运算结果:%d*%d=",a,b);

         scanf("%d",&c);

         if(a*b==c){

                   printf("结果正确\n");

                   right++;

         }

         else {

                   printf("结果错误\n");

                   wrong++;

         }

}

void chu(){

         int a,b;

         double c;

         a=rand()%100;

         b=rand()%100+1;

         printf("请输入你的运算结果:%d/%d=",a,b);

         scanf("%lf",&c);

 

         double d = (int((a / (b * 1.0)) * 100 + 0.5))/100.0;

         printf("d = %lf", d);

         if(d==c){

                   printf("结果正确\n");

                   right++;

         }

         else {

                   printf("结果错误\n");

                   wrong++;

         }

}

运行效果:

                         

两人合作步骤:

   1、需求分析,建立在第二次作业的基础上进行加工与完善;

   2、在代码规范设计方面,我们根据老师的要求修改了我们的原代码,并符合 “代码风格和设计规范”的基本要求,采用模块化的思想,我们将函数封装起来,将函数声明存放在头文件(.h),具体实现存放在源文件(.cpp)中;

   PSP:

PSP

Personal Software

Process Stages

Time(%)

Senior

Student

Time(%)

SDE

Planning

计划

6

0.25

Analysis

需求分析

6

0.10

Dsign Spec

生成设计文档

3

0.30

Dsign Review

设计复审

4

0.25

Coding Standard

代码规范

3

0.1

 

 

 

 

 

 

 

 

 

 

 

 

 

总结:

      通过这次作业,我们发现要想设计出一个好的软件真的非常困难。该软件不仅要实现各种运算,并且该程序可以出带括号的正整数四则运算,支持分数,除法保留两位小数。
可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号;统计出运算对错的数目。虽然勉强完成了这次作业,但我们知道里面一定还有很多不足之处,望各位老师指出,我们也会继续更正。谢谢!!

 

posted @ 2015-04-21 23:05  毛涛  阅读(266)  评论(2编辑  收藏  举报