作业第一章

①主要函数:                  

char getSignal();                      //获取随机运算符函数                                                            

int random(double,double);             //获取随机数函数
int getResult(int,int,char);           //结果计算函数
int takeTest();                        //题目生成函数                                                                     
②主函数
void main() 
{
         int n,a,right=0;
         double percent;
         printf("Please enter the number of the test:");                                       
         scanf("%d",&n);
         for(int i=0;i<n;i++)
         {
                   a=takeTest();
                   right=right+a;
         }
         printf("Powerful!\n");
         printf("The number of right:%d\n",right);
         percent=((double)right*100.00)/(double)n;
         printf("The percent of right:%0.2f %%\n",percet;
}
③获取随机运算符函数:
char getSignal()
{
    char signal[4]={'+','-','*','/'};
    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:
        printf("运算符错误!\n");
    }
    return res;
}
⑥题目生成函数:
int takeTest()
{
    int get;
    int num1,num2,a;
    char signal;

    srand((unsigned)time(NULL));
    signal=getSignal();
    num1=random(0,1000);
    num2=random(1,1000);

    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",&get);
    fflush(stdin);   //清空输入缓冲区
    if(getResult(num1,num2,signal)==get)
        {
        printf("You're right!\n");
        a=1;
        }
    else
    {
        printf("It's wrong!\n");
        printf("The right answer is: %d\n",getResult(num1,num2,signal));
        a=0;
    }
    return a;
}

支持倒计时

#include <stdio.h> 
#include <time.h> 
#include <dos.h>
#include <conio.h>
void main()

clock_t start,end; 
int n; 
char ch=0;

printf("How many seconds do you want to count? "); 
scanf("%d",&n); 
getchar(); 

start=end=clock(); 
while((n-(int)(end-start)/19)>=0) 

printf("the time is: %d",n-(int)(end-start)/19); 
sleep(1); 
end=clock(); 
if( kbhit() )
 ch = getch();
if(ch=='0' )
{
    getchar(); 
    break;
}
clrscr(); 

}

2.我来自河北邢台,是一名大二的专科学生,学习的计算机应用专业,这学期我要学习构建之法,对于这本书我并不了解很多只知道它是关于软件的对于构建之法这本书我更多的是想要了解软件是怎样做出的,模型是如何构建的,代码之间的关系是如何相结合的,我知道一个软件的产生并不是单纯的写代码及个个程序的关系,运行就可以了,我想了解,这学期课程比较紧,书本大多与软件有关对着门课程我大约每周花费8小时,学习完这本书希望自己能够构建一个小程序

3.问题一软件是如何构建的

合理的软件架构、设计与实现、各文件数据来描述各程序之间的关系及参数

问题二了解软件生命周期的意义

软件的生命周期如果你只想写代码,那了解软件生命周期对你来说是没意义的。如果你想深入这个行业,以后想做项目组长、项目经理、部门经理、技术总监或者准备自己开公司做软件的,那对你的来说这个是必须了解的。因为当你越来越深入这个行业,你会发现做一个软件,不是拿来写代码交上去就可以了。
软件生命周期是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段。

问题三单元测试必须有最熟悉代码的人(程序的作者)来写

代码的作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。

问题四什么是回归测试及步骤

回归测试是软件测试的一种,旨在检验软件原有功能在修改后是否保持完整。回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在渐进和快速迭代开发中,新版本的连续发布使回归测试进行的更加频繁,而在极端编程方法中,更是要求每天都进行若干次回归测试。

(1)识别出软件中被修改的部分;

(2)从原基线测试用例库T中,排除所有不再适用的测试用例,确定那些对新的软件版本依然有效的测试用例,其结果是建立一个新的基线测试用例库T0。

(3)依据一定的策略从T0中选择测试用例测试被修改的软件。

(4)如果必要,生成新的测试用例集T1,用于测试T0无法充分测试的软件部分。

(5)用T1执行修改后的软件。

问题五什么是单元测试?

 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。

一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

 

4.   游戏类软件
      游戏有很多种类,分类方式有很多。比如说按照游戏内容分,分为射击游戏,益智游戏,策略游戏休闲游戏......等等。还可以按照游戏平台分类,游戏大小分类,运行方式分类等多种分类方式。本类软件可以说是最受欢迎的软件,几乎人人都会使用,但是每个人玩的都不尽相同,因为人的喜好不同。游戏最大的乐趣在于,它可以实现现实中我们想做却不能做的事,当时是买VCD送光盘,商家赚的是硬件的钱,软件只是赠品,大家都在玩,一起交流有共同语言绝大多数游戏的开发,都是为了赚钱,不同游戏的赚钱模式也各不相同,网页游戏的赚钱方式主要分两种一种是广告,一种是卖虚拟产品,它通过玩家攀比的心理进行大量赚钱。有一些单机游戏是通过捆绑软件赚钱,还有一些游戏大作,通过卖游戏,卖装备等方式综合赚钱。网络游戏则是游戏行业赚钱最多的,因为单机游戏在我国的猖獗盗版下,生存空间很小随着满级玩家的增多,开发商就要提高等级上限,但这不是解决此类问题的好方法。无论是游戏还是生活中的其他事物的发展,都越来越强调,人的体验。

   工具类软件

      我对工具类软件理解:任何对我们有帮助作用的软件,比如WinRar它是我们压缩文件的工具,浏览器是我们上网的工具,暴风影音是我们看视频的工具,我第一次使用这类软件是大一初,决定我使用它有这么几个条件:1.互联网购物兴起。2.我拥有了自己的银行卡。3.淘宝网是我国最大的网购平台,支付宝对应淘宝。4.移动支付的快捷方便。支付宝的赚钱模式:支付宝本身的赚钱手段就是推送商家信息赚个平台手续费,但我认为靠这点收入不足以填补支付宝的维护费用,支付宝是赔钱的,它主要靠淘宝网天猫商城的收入来弥补。因为支付宝是网络购物的副产品,并不是直接赚钱。  说到竞争,就不得不提微信支付,这是支付宝最大的竞争对手,很强势。支付宝占据我国移动支付人数的80%,微信占剩下的中的80%。马云干的早所以占据了市场,马化腾因为控制腾讯QQ微信这两个交流平台,转化用户的能力很强,网民很少没有QQ的。我们可以看看去年和前年春晚的红包大战,微信支付宝都从春晚抢起,拿下春晚的是支付宝。马云和马化腾斥巨资,来发红包为的是抢夺移动支付权,赚钱的事日后再说,可以说客户很重要,用了谁的支付端就成了谁的客户。两年的春晚下来我国总体增加的用户有不少,可以这么说,红包大战没有输家,微信支付宝得到了客户,客户们享受到了移动支付的便捷。微信是最大的赢家。其实这是一种游戏化互联网思维,微信摇一摇,就像玩游戏一样把人就赚来了。我们也应该培养自己的游戏化思维,所以贪玩也不见得是件坏事。去年滴滴快的两个打车软件很火,各种补贴打车不花钱,背后的道理和红包大战一样,两位大马在利用其它的行业拓展用户。

  系统软件

      我对系统类软件不是很了解,在这里先科普一下:系统软件是指控制和协调计算机及外部设备,支持应用软件开发和运行的系统,是无需用户干预的各种程序的集合,主要功能是调度,监控和维护计算机系统;负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。  我第一次使用是时2016年,当时使用的是智能Android系统。原因很简单苹果手机价格高,安卓更加亲民。

      这两款系统的盈利模式存在差异。Android系统的目标客户是各大手机厂商,通过赚取版权费盈利。ios系统自产自用,靠销售苹果手机,和平台软件,盈利。我们知道苹果手机国外买便宜,国内要贵非常多,我认为最大的原因是我国盗版猖獗,苹果赚不到卖软件的钱。他们之间的竞争也是各大手机厂商的竞争,主要取决于手机的质量性能,系统较成熟    

 软件主要通过网络下载得到,也有很少一部分稀有资源通过拷贝。

对于BUG这类问题,无论是什么类的软件软件公司都是采用,开发后大量试验,上市后用户反馈,及时更新,有些软件开发商会对发现Bug的个人进行奖励。对于一些较大的软件,比如《英雄联盟》采用更新包的形式,因为是采用模块化设计思想,不必对所有内容进行修改。

软件的特殊现象我理解不出来,但我知道软件是基于硬件的,在底层语言里软件必须按照硬件的协议进行编码。软件不好用可以有很多替代品,硬件就得花钱购买

5.软件工程是不是教那些不怎么会写程序的人开发软件? 你怎么看?

答:软件工程并不是教不会写程序的人开发软件,而是提供一种科学的、有效的开发思想、开发理念、开发模式和开发流程,使得开发团队更有效地工作,提供更可靠的、更优秀的产品。

 

6.你所在的学校有计算机科学专业和软件工程专业么?相关专业的教学计划和毕业出路有什么不同?

 

计算机科学专业侧重于科学,也就是学术,侧重于数学和计算机的具体方向,如图论、图形图像、并行计算等,也有硬件开发等。

 

软件工程专业侧重于软件开发,如语言类课程、设计模式、操作系统、需求分析、软件体系结构、UML建模语言、软件项目管理等。

 

两者的主要区别在于软件工程是涉及人类活动的,考虑这个软件做什么,怎么组织团队,怎么完成软件,怎么更好地开发等;而计算机科学则更多地从理论的角度出发,并不直接考虑工程方面的问题。

 

 

猜你喜欢

转载自www.cnblogs.com/boke123/p/8595019.html