• 2016学年第一学期软件工程第二次作业


    这是本学期第二次作业,属于个人练习项目。

    题目:编写一个能对0--10之间的整数进行四则运算的“软件”
          程序能接收用户输入的整数答案,并判断对错
          程序结束时,统计出答对、答错的题目数量。
    补充说明:0——10的整数是随机生成的
              用户可以用键盘输入来选择四则运算中的一种,比如输入1代表加法运算
              用户用键盘输入一个字符来结束程序的运行并显示统计结果,比如输入e程序结束并显示统计结果
              编程语言不限制,命令行输出和图像界面输出都可以。
    
    要求:要有需求分析,具体设计思路,代码实现,测试,书中PSP耗时分析,总结。
          以上内容都写到博客中,代码也写到博客中,要求写程序时要有屏幕截图,最后把测试的界面也截图发到博客上,PSP表也截图到博客上。
    
    打分说明:作业满分10分,迟交的0分,不交作业和抄袭的-10。10分包括:把代码提交到github(1分),需求分析(1.5分),具体设计思路(1.5分),代码实现(1分),测试(1分),书中PSP耗时分析(1.5分),总结(1.5分),代码是否规范(1分)
    
    作业提交截止时间为10月6日23:00,做完后把你的博客链接和github链接发的QQ群里,另外也要给助教的qq发一下。
    
    github提交教程:http://www.cnblogs.com/math/p/4633472.html
    
    我会把每次作业的完成情况统计完发到我的博客和QQ群里,敬请关注!
    
    思考题(1分):如果用户要求处理的范围是0——100,程序应该如何设计才能很轻松的应对扩展性。
    附加题(3分):程序能处理用户的错误输入,比如用户输入一个小数或一个字符。
    
    思考题和附加题都是加分题,做这两题的可以获得相应的加分。
    
    作业样例,我是用C语言写的,仅供参考。有两个文件,一个是head.h,另一个是calculate.c
    head.h的代码如下:
     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #include<time.h>
     4 int  Add(int *,int *);      //加法函数,实现加法功能
     5 int  Sub(int *,int *);      //
     6 int  Mul(int *,int *);      //
     7 int  Div(int *,int *);
     8 int  Calculate();           //计算函数,判断是哪种计算并调用相关函数
     9 int RandNum(int max,int min);//生成随机数
    10 void JudgeHint(int rightOrfault);//输出判断对错
    11
    12 int Calculate()
    13 {
    14     int    right=0;     //统计做对多少道题
    15     int    fault=0;     //统计做错多少道题
    16     char   type=' ';    //接收用户要生成的运算类型
    17     printf("请选择要进行那种运算\n
    18             输入 + 号表示选择加法\n
    19             输入 - 号表示选择减法\n
    20             输入 * 号表示选择乘法\n
    21             输入 / 号表示选择除法\n
    22             输入 e 表示结束程序\n
    23             ");
    24     scanf("%d\n",&type);
    25     while(type!='e')
    26     {
    27         scanf("%d\n",&type);
    28         if(type=='+')
    29         {
    30             //把变量right和fault的地址传递给函数Add,&是取地址符
    31             //指针其实就是地址
    32             Add(&right,&fault);
    33         }
    34         else if(type=='-')
    35         {
    36             // to do sub
    37         }
    38         else if(type=='*')
    39         {
    40             // to do mul
    41         }
    42         else if(type=='/')
    43         {
    44             // to do div
    45         }
    46     }
    47     printf("您共答对%d道题,答错%d道题\n",right,fault);
    48     return 0;
    49 }
    50
    51
    52 int Add(int *right,int *fault)//函数的参数是两个指针,分别用来统计正确和错误的题数
    53 {
    54     int answer;
    55     int a,b,sum;
    56     a=RandNum(10,0);
    57     b=RandNum(10,0);
    58     sum=a+b;
    59     printf("加法运算:%d + %d = ",a,b);
    60     scanf("%d",&answer);
    61     if(sum==answer)//回答正确,*right加一,否则*fault加一
    62     {
    63         //right是一个指向整数的指针参数,*right表示right指向的
    64         //内存单元的值,在其他编程语言中指针也叫引用。
    65         (*right)++;
    66         JudgeHint(1);
    67     }
    68     else
    69     {
    70         (*fault)++;
    71         JudgeHint(0);
    72     }
    73     return 0;
    74 }
    75
    76 int RandNum(int max,int min)
    77 {
    78     int randNumber;
    79     srand((unsigned)time(NULL));//产生随机种子
    80     randNumber=rand()%(max-min+1)+min;//生成想要的随机数
    81     return randNumber;
    82 }
    83
    84 void JudgeHint(int rightOrfault)
    85 {
    86     if(rightOrfault==1)
    87         printf("回答正确!\n");
    88     else if(rightOrfault==0)
    89         printf("回答错误!\n");
    90 }
    
    calculate.c的代码如下:
     1 #include "head.h"
     2 int main(int argc,char* argv[])
     3 {
     4     Calculate();
     5     return 0;
     6 }
    

    推荐一本书《UNIX编程艺术》,可以从你们图书馆借来看看。

  • 相关阅读:
    面试题目——《CC150》链表
    TCP/IP——链路层
    TCP/IP——基本知识
    面试题目——《CC150》数组与字符串
    Java递归算法——三角数字(消除递归)
    Java排序算法——拓扑排序
    Java排序算法——希尔排序
    Python学习笔记——条件和循环
    Python学习笔记——集合类型
    英文写作——冠词的使用(Use 0f Articles)
  • 原文地址:https://www.cnblogs.com/gmailcs/p/4832433.html
Copyright © 2020-2023  润新知