注意所有符号都是英文,最后没有回车。
将要求输出字符串之外的所有printf或者cout的输出全部删除
提交之前先在自己的开发环境下运行成功再拷贝到作业区提交。
输出的语句最好拷贝到程序中,避免不小心的键盘按键错误输入造成扣分。
注意所有符号都是英文,最后没有回车。
将要求输出字符串之外的所有printf或者cout的输出全部删除
提交之前先在自己的开发环境下运行成功再拷贝到作业区提交。
输出的语句最好拷贝到程序中,避免不小心的键盘按键错误输入造成扣分。
1.和2.后面有一个空格。
某明星每年都会做慈善,小明统计了一下这个明星今年做了3次慈善,第一次捐助希望小学x万元,第二次捐助一个癌症患者y万元,第三次举办了慈善晚会,募捐z万元,其中有t万元是其他人捐助的。
请问,这个明星今年一共捐助了多少钱?(万元)
输入: 4个空格分开的正实数(单精度实数)
输出:总共捐款数(只输出数值,保留小数点后的小数2位)
如果输入不合法,则输出error
小明每个月基本工资x元,还有奖金y元,每迟到1次扣奖金的50元。这个月迟到z次,最多将所有奖金扣完。
请问小明这个月领多少钱?
如果输入不合法,则输出"error"
判断这一年是不是闰年,是闰年输出yes,不是则输出no
如果输入不合法,输出error
请问公鸡、母鸡、小鸡各多少只?
列举所有可能,从公鸡数目小到大排列,公鸡相同则按照母鸡递增顺序,公鸡母鸡都相同,则按照小鸡递增顺序
第一天吃掉其中的一半然后多吃了1个,
第二天照此方法又吃掉了剩下桃子的一半加1个,
以后每天如此,直到第十天晚上,猴子发现只剩下了1个桃子,
请问猴子第一天总共摘了多少个桃子?
并反向打印每天所剩桃子数。
分别表示第九天剩余桃子,第八天剩余桃子,....,第一天剩余桃子,总桃子数。
比如,如果总桃子10个,第一天剩余10/2-1=4个,第二天剩余4/2-1=1个,根据题目要求应该输出第一天剩余桃子,总桃子分别为:
回文测试:输入一30个字符以内的字符串,判断是否为回文;如果是,则打印"true";否则打印"false"。像"aba"这样的从左往右读与从右往左读一致就是回文。
按照下面要求定义一个时钟结构体类型:
然后,编程实现将时钟模拟显示在屏幕上。注意:时钟是24小时的。需要判断输入的数据是否合法。
接受若干非负整数(数据不重复),当个数超过10个或者遇到负数时停止接受,将这几个整数按升序排列输出,并且奇数在前,偶数在后。
输出要求,每个数字后输出空格与其他数字隔开,最后一个数字后也有空格
12、删除字符串中连续的重复字符
功能:实现删除字符串中连续的重复字符(除字母和数字)。 输入为字符串,将字符串中连续重复的,非字母和数字的字符删去,然后输出处理后的字符串。要求用指针指向输入的字符串进行操作。
输入字符串最长50个字符,之后截断,只输出处理后的字符串。
13、统计输出字符串中的字母个数和数字个数。
编写程序,输入一个字符串,分别统计输出该字符串中的字母个数和数字个数。要求用指针指向这个字符串进行处理。
英文逗号分隔的2个整数,第一个整数是字母个数,第二个整数的数字个数。
14、比较字符串是否相等(25分)
编写程序,输入两个字符串,通过2个指针p和q分别指向这2个字符串,比较字符串是否相等。 要求不使用strcmp函数。
设有一个3位数,它的百位数、十位数、个位数的立方和正好等于这个3位数,如153=1+125+27。
编写函数,返回小于等于传入参数n且满足该条件的三位数(称为水仙花数)的个数。
返回值要求:如果传入参数n不是三位数或者在该范围内没有找到,则find返回0,
注意:不要在find函数中打印(如调用printf或puts等函数)任何数据,否则视为错误。
提交的程序需要包含需要的头文件及如下的main函数:
编写程序,从键盘输入5个正整数,然后求出它们的最小公倍数,并显示输出。
(通过调用对两个正整数求最小公倍数的函数实现)(参考函数原型:int LCM(int x, int y))
要求在main函数接收5个正整数,然后通过调用LCM函数最终得到这5个数的最小公倍数,最后输出最小公倍数。
如果输入数据错误,输出"error"。
函数功能:将source指向的字符串拷贝到destination指向的位置。
注意:使用空格字符来表示字符串的结束。例如source指向位置,依次保存了字符'a',字符'b',字符空格' ',字符'c',则source指向的字符串为"ab"。destionation原来存储的字符串是"xyz tdk",则拷贝后,destionation存储的应该是“ab tdk”。遇到异常情况,输出"error";否则不要随意输出,会视为错误.
您的main函数需要读入2个长度不超过80字节的字符串(按行及下面顺序读入source和destionation字符串),然后调用my_strcpy函数,最后用puts函数输出destionation里面存储的字符串。
输入两个点的坐标,创建两个点, 然后调用Point类的Distance方法输出两个点的距离。
在你的代码中除了实现Point类以外,还需一如下main函数:
实现User类的构造函数和AddUser方法添加新用户,
判断用户名对应的密码是否正确,如果正确返回用户的编号,如果不正确返回-1。
User类的使用示意如下所示,在你的代码中除了实现User类以外,还需一如下main函数
设计一个学生类Student,包含学生学号(最长10位)、姓名(不用支持中文最长12位)、三门课程成绩(成绩是单精度实数类型)等基本信息,
计算每门课程学生的平均成绩。
需实现Student的display成员函数,依次输出学号 姓名 和三门课的成绩,每个输出以空格隔开
Student类的使用方法如下所示,在你的代码中除了实现Student类,还需引入以下代码:
请写出三角形(Triangle)、四边形(Quadrangle)、圆形(Circle)三个派生类,构造函数分别传入三边/四边/半径的长度(不用检查是否符合三角形、矩形、圆的条件,没有异常输出),重写出求周长的函数(Circumstance函数)。
然后实现基类的Create函数,这里重载的三个Create函数,分别生成三角形、四边形、圆形的对象。
如果三角形输入的三边长度是 3 4 5,四边形输入的四条边的长度是2 3 4 7,圆的半径是3,则要求程序运行能够得到如下的提示和输出:
22、实现带日期的时钟类
实现带日期的时钟类,具体要求如下:
已知时钟类的定义如下:
需要类外实现Date类的days方法,根据年和月,返回该年该月对应的天数
实现Date类的NewDay方法,该方法将Date代表的日期增加一天。
showTime方法输出当的时间和日期,先输出时间再输出日期。
run方法每次将现在的时间增加一秒,并且当时间超过23:59:59时,更新日期。
比如某次程序运行输入当前时间是:1 1 1 7 10 2000(2000年10月7号1点1分1秒),然后输入运行时间x: 5,则程序运行的输入输出如下:
1、编写函数输出小于等于n的水仙花数
设有一个3位数,它的百位数、十位数、个位数的立方和正好等于这个3位数,如153=1+125+27。 编写函数,找出所有满足该条件的数(称为水仙花数)。 在find里输出所有小于等于n的水仙花数,以逗号分隔 返回值要求:如果没有,则find返回0,否则返回找到的水仙花数的个数
实现逆序的Memcpy方法。 从source所指的内存地址的起始位置开始拷贝num个字节,逆序保存到目标destination所指的内存地址的起始位置中。
(逆序拷贝,实参指针类型与函数指针类型必须一致,否则只能正序拷贝)
memcpy源码(源头与目标内存重叠或源与目标内存不重叠(前后之分),从源头开始复制;源尾与目标内存重叠,从源尾开始复制)
首先输入一个字符串,然后依次将功能显示出来
每一个对象都是功能中心,具有明确分工,可以完成接受信息、处理数据、发出信息等任务。对象可以 复用,通过继承机制还可以定制。因此,面向对象编程具有灵活、代码可复用、高度模块化等特点,容 易维护和开发,比起由一系列函数或指令组成的传统的过程式编程(procedural programming), 更适合多人合作的大型软件项目。
那么,“对象”(object)到底是什么?我们从两个层次来理解。
(1)对象是单个实物的抽象。 一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是 对象。当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针 对对象进行编程。
(2)对象是一个容器,封装了属性(property)和方法(method)。 属性是对象的状态,方法是对象的行为(完成某种任务)。比如,我们可以把动物抽象为 animal 对 象,使用“属性”记录具体是那一种动物,使用“方法”表示动物的某种行为(奔跑、捕猎、休息等等)。
面向对象编程的第一步,就是要生成对象。前面说过,对象是单个实物的抽象。通常需要一个模板,表 示某一类实物的共同特征,然后对象根据这个模板生成。 典型的面向对象编程语言(比如 C++ 和 Java),都有“类”(class)这个概念。所谓“类”就是对象 的模板,对象就是“类”的实例。但是,JavaScript 语言的对象体系,不是基于“类”的,而是基于构 造函数(constructor)和原型链(prototype)。 JavaScript 语言使用构造函数(constructor)作为对象的模板。所谓”构造函数”,就是专门用来 生成实例对象的函数。它就是对象的模板,描述实例对象的基本结构。一个构造函数,可以生成多个实 例对象,这些实例对象都有相同的结构。构造函数就是一个普通的函数,但是有自己的特征和用法。
上面代码中,对象 o2 的 p2 属性是自身的, p1 属性是继承的。这两个属性都会 被 for...in 循环遍历。 为了在 for...in 循环中获得对象自身的属性,可以采用 hasOwnProperty 方法判断一下。
获得对象的所有属性(不管是自身的还是继承的,也不管是否可枚举),可以使用下面的函数。
上面代码依次获取 obj 对象的每一级原型对象“自身”的属性,从而获取 obj 对象的“所有”属性, 不管是否可遍历。 下面是一个例子,列出 Date 对象的所有属性。
如果要拷贝一个对象,需要做到下面两件事情。
下面就是根据上面两点,实现的对象拷贝函数。
除了正常的运行模式,javascript还有第二种运行模式:严格模式(strict mode)。顾名思义,这种模式采用更加严格的javascript语法。同样的代码,在正常模式和严格模式中,可能会有不一样的运行结果。一些在正常模式下可以运行的语句在严格模式下将不能运行。
早期的javascript语言很多设计不合理的地方,但是为了兼容以前的代码,又不能改变老的语法,只能不断添加新的语法,引导程序员使用新语法。
严格模式是从ES5进入标准的,主要目的有以下几个
增加更多报错的场合,消除代码运行的一些不安全之处,保证代码运行的安全。
总之,严格模式体现了javascript更合理、更安全、更严谨的发展方向。
进入严格模式的标志,是一行字符串 use strict 。
老版本的引擎会把它当作一行普通字符串,加以忽略。新版本的引擎就会进入严格模式。 严格模式可以用于整个脚本,也可以只用于单个函数。
use strict 放在脚本文件的第一行,整个脚本都将以严格模式运行。如果这行语句不在第一行就无 效,整个脚本会以正常模式运行。(严格地说,只要前面不是产生实际运行结果的语句, use strict 可以不在第一行,比如直接跟在一个空的分号后面,或者跟在注释后面。)
上面代码中,一个网页文件依次有两段 JavaScript 代码。前一个javascript标签是严格模式,后一个不是。如果 use strict 写成下面这样,则不起作用,严格模式必须从代码一开始就生效。
use strict 放在函数体的第一行,则整个函数以严格模式运行。
有时,需要把不同的脚本合并在一个文件里面。如果一个脚本是严格模式,另一个脚本不是,它们的合 并就可能出错。严格模式的脚本在前,则合并后的脚本都是严格模式;如果正常模式的脚本在前,则合 并后的脚本都是正常模式。这两种情况下,合并后的结果都是不正确的。这时可以考虑把整个脚本文件 放在一个立即执行的匿名函数之中。
严格模式使得 JavaScript 的语法变得更严格,更多的操作会显式报错。其中有些操作,在正常模式 下只会默默地失败,不会报错。
严格模式下,设置字符串的 length 属性,会报错。
上面代码报错,因为 length 是只读属性,严格模式下不可写。正常模式下,改变 length 属性是 无效的,但不会报错。 严格模式下,对只读属性赋值,或者删除不可配置(non-configurable)属性都会报错。
1. // 对只读属性赋值会报错
10. // 删除不可配置的属性会报错
只设置了取值器的属性不可写
严格模式下,对一个只有取值器(getter)、没有存值器(setter)的属性赋值,会报错。
上面代码中, obj.v 只有取值器,没有存值器,对它进行赋值就会报错。
禁止扩展的对象不可扩展
严格模式下,对禁止扩展的对象添加新属性,会报错。
上面代码中, obj 对象禁止扩展,添加属性就会报错。
严格模式下,使用 eval 或者 arguments 作为标识名,将会报错。下面的语句都会报错。
正常模式下,如果函数有多个重名的参数,可以用 arguments[i] 读取。严格模式下,这属于语法错 误。
禁止八进制的前缀0表示法
正常模式下,整数的第一位如果是 0 ,表示这是八进制数,比如 0100 等于十进制的64。严格模式 禁止这种表示法,整数第一位为 0 ,将报错。
严格模式增强了安全保护,从语法上防止了一些不小心会出现的错误。
正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须 显式声明。
12. f() // 报错,未声明就创建一个全局变量
因此,严格模式下,变量都必须先声明,然后再使用。
禁止 this 关键字指向全局对象
正常模式下,函数内部的 this 可能会指向全局对象,严格模式禁止这种用法,避免无意间创造全局 变量。
上面代码中,严格模式的函数体内部 this 是 undefined 。 这种限制对于构造函数尤其有用。使用构造函数时,有时忘了加 new ,这时 this 不再指向全局对 象,而是报错。
严格模式下,函数直接调用时(不使用 new 调用),函数内部的 this 表示 undefined (未定 义),因此可以用 call 、 apply 和 bind 方法,将任意值绑定在 this 上面。正常模式 下, this 指向全局对象,如果绑定的值是非对象,将被自动转为对象再绑定上去, 而 null 和 undefined 这两个无法转成对象的值,将被忽略。
上面代码中,可以把任意类型的值,绑定在 this 上面。
函数内部不得使用 fn.caller 、 fn.arguments ,否则会报错。这意味着不能在函数内部得到调 用栈了。
严格模式下无法删除变量,如果使用 delete 命令删除一个变量,会报错。只有对象的属性,且属性 的描述对象的 configurable 属性设置为 true ,才能被 delete 命令删除。
JavaScript 语言的一个特点,就是允许“动态绑定”,即某些属性和方法到底属于哪一个对象,不是 在编译时确定的,而是在运行时(runtime)确定的。 严格模式对动态绑定做了一些限制。某些情况下,只允许静态绑定。也就是说,属性和方法到底归属哪 个对象,必须在编译阶段就确定。这样做有利于编译效率的提高,也使得代码更容易阅读,更少出现意 外。 具体来说,涉及以下几个方面。
严格模式下,使用 with 语句将报错。因为 with 语句无法在编译时就确定,某个属性到底归属哪 个对象,从而影响了编译效果。
正常模式下,JavaScript 语言有两种变量作用域(scope):全局作用域和函数作用域。严格模式 创设了第三种作用域: eval 作用域。 正常模式下, eval 语句的作用域,取决于它处于全局作用域,还是函数作用域。严格模式 下, eval 语句本身就是一个作用域,不再能够在其所运行的作用域创设新的变量了,也就是 说, eval 所生成的变量只能用于 eval 内部。
上面代码中,由于 eval 语句内部是一个独立作用域,所以内部的变量 x 不会泄露到外部。 注意,如果希望 eval 语句也使用严格模式,有两种方式。
上面两种写法, eval 内部使用的都是严格模式。
变量 arguments 代表函数的参数。严格模式下,函数内部改变参数与 arguments 的联系被切断 了,两者不再存在联动关系。
上面代码中,改变函数的参数,不会反应到 arguments 对象上来。
非函数代码块不得声明函数
ES6 会引入块级作用域。为了与新版本接轨,ES5 的严格模式只允许在全局作用域或函数作用域声明 函数。也就是说,不允许在非函数的代码块内声明函数。
上面代码在 if 代码块和 for 代码块中声明了函数,ES5 环境会报错。注意,如果是 ES6 环境,上面的代码不会报错,因为 ES6 允许在代码块之中声明函数。