《C程序设计教学教程》课后知识题_第1页
《C程序设计教学教程》课后知识题_第2页
《C程序设计教学教程》课后知识题_第3页
《C程序设计教学教程》课后知识题_第4页
《C程序设计教学教程》课后知识题_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第1章C+语言简介1. 修改例1-1的Hello World! 程序,使其能够在计算机屏幕上显示:I am a student, andI like program ming!2. 修改例1-3的加法计算器程序,编写一个乘法计算器程序。3. 修改例1-4的生日卡程序,使其能够输入和显示日期。4. 参考例1-5,使用梯形法计算下式定积分的值。11 (si nx ex)dx其中积分区域等分数可取为200 ,并将计算结果和手算结果相比较。提示:ex用标准数学函数库 cmath中的库函数exp(x)表示。5. 仿照例1-6,编写一个计算矩形面积的程序。第2章基本数据类型1 .为例2-2添加数据检验部分

2、。给出三边长,检验其是否能构成一个三角形的方法是检查是否任意两边和均大于第三边。如果检验不合格,输出信息“Error Data!2. 输入两个角度值x、y,计算如下式子的值。sin(| x y |)cos(|x y |)3. 编写一个程序,要求完成以下要求:1) 提示用户输入任意的 3个小数;2) 显示这三个小数;3) 将这三个小数相加,并显示其结果;4) 将结果按四舍五入方法转换成整数并显示。4. 从键盘输入任意三个整数,然后输出这三个数并计算其平均值。5. 编写一个程序,将字符串“ Love ”译成密码,译码方法采用替换加密法,其加密规则是:将原来的字母用字母表中其后面的第3个字母的来替换

3、,如字母 c就用f来替换,字母y用b来替换。提示:分别用4个字符变量来存储L、o、v和e,利用ASCII表中字母的排列关系, 按照译码方法对各个变量进行运算后输出即可。第3章控制结构1. 编写计算阶乘 n!的程序。io2. 计算 1!+2 ! +3 ! +4 ! +10!,即 i !i 13.编写程序求斐波那契数列的第n项和前n项之和。斐波那契数列是形如0, 1, 1,2, 3, 5, 8, 13,.其通项为:F0 = 0;F1 = 1;Fn = F n 1+F n 2。4.编程求 arcsinx x1 3 x52 4 52n 1(2n)!x2 ( n!)2(2 n 1).,其中 x 1 o提

4、示:结束条件可用,其中u为通项,&为预先给定的精度要求。5.用牛顿迭代法求方程:2x3 4x2十3x 一 6 = 0在1.5附近的根。提示:迭代公式x x f (Xn )xn 1xnf (Xn)结束迭代过程的条件为(f(Xn J)与(Xn ixn)同时成立,其中为预先给定的精度要求。6. 求解猴子吃桃问题。猴子在第一天摘下若干个桃子,当即就吃了一半,又感觉不过瘾,于是就多吃了一个。以后每天如此,到第10天想吃时,发现就只剩下了一个桃子。请编程计算第一天猴子摘的桃子个数。7. 编写一个程序,寻找用户输入的几个整数中的最小值。并假定用户输入的第一个数值指定后面要输入的数值个数。例如:当用户输入数列

5、为:5 20 15 300 9 700 时,程序应该能够找到最小数 98. 有一分数序列2 3 5 8 13 21JJJJJJ 1 2 3 5 8 13(即后一项的分母为前一项的分子,后项的分子为前一项分子与分母之和),求其前n项之和。9. 求a+aa+aaa+aaaa+aa.a(n个),其中a为19之间的整数。例如:当a = 1, n = 3时,求1+11+111 之和;当 a = 5, n = 7 时,求 5 + 55 + 555 + 5555 + 55555 + 555555 + 5555555 之和。10. 猜幻数游戏。由系统随机给出一个数字(即幻数),让游戏者去猜,如果猜对,则打印5

6、次。成功提示;否则,打印出错提示,并提示游戏者选择下一步动作,最多可以猜第4章数组与字符串1 使用数组来求斐波那挈数列的第n项和前n项之和。2 .编写程序,将4阶方阵转置,如下所示。46894231274567853816158416715711951511转置前方阵A转置后方阵A3 使用数组编写一个统计学生课程平均分的程序:输入6个学生的学号和3门课程的成绩(整数形式),统计每个学生3门课程的平均分(整数形式),最后输出统计结果。输出格式:学号 高数 英语 体育 平均分4. 编写一个程序,要求用户输入一个十进制正整数,然后分别转换成为二进制数、八进制数和十六进制数输出。5 .输入10个字符到

7、一维字符数组 s中,将字符串置逆。即 s0与s9互换,s1与8互换,s4与s5互换,输出置逆后的数组s。6 .替换加密(恺撒加密法):加密规则是:将原来的小写字母用字母表中其后面的第3个字母的大写形式来替换,大写字母按同样规则用小写字母替换,对于字母表中最后的三个字母,可将字母表看成是首未衔接的。如字母 c就用F来替换,字母y用B来替换。请将字符串“ I love you ”译成密码。第 5 章 函数1 编写字符串反转函数 mystrrev( ) ,该函数的功能为将指定字符串中的字符顺序颠倒 排列。然后再编写主函数验证之。函数声明为:void mystrrev(char string)该函数无

8、需返回值。提示:求字符串长度可以直接调用库函数 strlen( ) ,但在程序首部应加上#include 2编写一组求数组中最大最小元素的函数。该组函数的原型为int imax(int array, int count);/ 求整型数组的最大元素int imin(int array, int count);/ 求整型数组的最小元素其中参数 count 为待考察的数组中的元素个数,函数的返回值即为求得的最大或最小元素之值。要求同时编写出主函数进行验证。3 编写函数 isprime(int a) 用来判断变量 a 是否为素数, 若是素数 ,函数返回 1 ,否则返回 0 。调用该函数找出任意给定的

9、n 个整数中的素数。4 打印出以下的杨辉三角形(要求打印出 10 行)5 10 10 5 1提示:打印杨辉三角形有两种方法:1 )杨辉三角形表现的是二项式(a b)n的展开式的系数。例如,2 2 2(a b) a 2ab b ,故杨辉三角形的第三行(对应 n=2 )为1 2 1般地,二项式(a b)n的展开式为Cna0bCnanb0 cnan1b1 . CJV mb其中第m项Cmn!m!( n m)!2)可直接根据杨辉三角形的形式来推出每项的值。由下面的杨辉三角形可以看出,杨辉三角形每行的第一个数和最后一个数均为1,除第一行外,每行中间的各数等于上一行位于该数左上方和正上方的两数之和,即cn1

10、 cm cm1。5. 用弦截法求一元方程f(X) 0在区间X,X1之间的一个根。提示:考虑当区间 Xo,X1足够小,在此区间中方程f (x) 0仅有一个单根的情况,如下图所示。此时如f(Xo)和f(Xj异号,则可用两点间直线公式求出X2:X0 X1X2 X0f(Xo)f(x) f(xj然后用X2代入原式求出f(X2),判断f(X2)与f(Xl)和f(X0)中的哪一个同号,就用X2和f(X2)代替之,即如果f(X2)和f(X0)同号,就用X2和f(X2)代替X0和f (X0),反之用X2和f(X2)代替X1和f(Xl),然后再继续上述过程直至丨f(X)|小于给定的误差控制值。第6章指针1 使用指

11、针编写一个对整型数组进行排序的函数,排序方法使用例4-6的交换排序法(冒泡排序法)。2 编写程序,将某一个输入的位数不确定的正整数按照标准的三位分节格式输出,例如,当用户输入82668634 时,程序应该输出 82,668,634 。3 编写程序,把10个整数1、2、10赋予某个int型数组,然后用int型指针输出该 数组元素的值。4 用指针编写一个程序,当输入一个字符串后,要求不仅能够统计其中字符的个数,还能分别指出其中大、小写字母、数字以及其他字符的个数。提示:要输入包含空格的字符串需借助输入流对象的get()成员函数,如cin.get(str, 100); 语句就能将从键盘输入的前 99

12、个字符(含可能出现在其中的任意个空格)存入到字符数组str中去,若用户输入字符数少于 99,则以回车换行表示输入结束。5 编写一个函数,用于将一个字符串转换为整型数值。其原型为:int atoi(char *stri ng);其中参数string为待转换的字符串(其中包括正、负号和数字),返回值为转换结果。6编写一个函数,用于生成一个空白字符串,其原型为char *mystrspc(char *string, int n);其中参数 string 为字符串, n 为空白字符串的长度 (空格符的个数 ) 。返回值为指向 string 的指针。第 7 章 函数与指针1使用递归算法编写如下程序:对于

13、任意给定的实数 X 和整数 k0 ,计算 Xk。2 Ackermann 函数 ack(m,n) 由以下递归定义:ack(0, n)=n+1ack(m, 0)=ack(m-1, 1)ack(m, n)=ack(m-1, ack(m, n-1)其中 m0, n0编写一个计算此函数的递归程序。3 使用递归算法编写求斐波那契数列的第 n 项的函数,并编出主函数进行验证。4 编写一个求立方的函数 cube ,并重载它,使之可以对输入的整型量和实型量数值求立 方。5 重载判断两个数值大小的函数 max ,这些数值可能是整型数、实型数和字符型,函数的 返回值为两个数值中的最大值。6 编写一个函数,用于去掉字

14、符串尾部的空格符,其原型为 :char *mytrim(char *string);其中参数 string 为字符串,返回值为指向 string 的指针。7 编写一个函数,用于去掉字符串前面的空格,其原型为 :char *myltrim(char *string);其中参数 string 为字符串,返回值为指向 string 的指针。8 编写一个程序,当输入一个整数以后,可以转换成相应的英文单词输出。如: 123 转换 成 one hundred twenty three.9. 用牛顿法或者二分法编写一个求方程 f(x)=0 在区间 a,b 中的实根的函数 , 其原型为 : double eq

15、uation(double (*func)(double), double a, double b, double eps);其中参数 func, a 和 b 分别为求根函数和区间两端点 , eps 为精度。第 8 章 结构化设计方法1输入某小组 5 个人的姓名、 性别、出生年份等信息, 统计男女人数以及 1988 年以后 (含 1988 年)出生的人数。2 定义一个名为 Circle (圆)的结构体,其数据成员是圆的外接矩形的左上角和右下角两 点的坐标,计算该圆的面积。3 读入 5 个用户的姓名和电话号码,按姓名的字典顺序排列后,输出每个用户的姓名和电 话号码。4 口袋中有红、黄、蓝、白、黑

16、五种颜色的小球若干个。如果每次都从口袋中取出 3 个不 同颜色的小球,共有多少种组合,请打印出每种组合的 3 种颜色。要求使用枚举类型来表 示小球的颜色。5 用自顶向下、逐步求精的程序设计方法找出 210000 之内的所有完全数(所谓完全数, 即其各因子之和正好等于本身的数。如 6=1+2+3 , 28=1+2+4+7+14 ,所以 6,28 都是 完全数)第 9 章 类和对象( 1)1定义一个 Dog 类,包含 name 、age 、sex 、weight 等属性以及对这些属性操作的方法。实现并测试这个类。2 设计并测试一个名为 Ellipse 的椭圆类,其属性为外接矩形的左上角与右下角两个

17、点的 坐标,并能计算出椭圆的面积。3 仿照 Date 类设计一个 Time 类,按各种可能的格式输出时间。第 10 章 类和对象( 2 )1 定义一个 Dog 类,包含 name 、age 、sex 、 weight 等属性,设计一个构造函数,可以 对这些属性进行初始化。实现并测试这个类。2 设计并测试一个名为 Ellipse 的椭圆类,其属性为其圆心坐标以及半长轴和半短轴的长 度。设计一个构造函数对这些属性进行初始化,并通过成员函数计算出椭圆的面积。3 仿照 Date 类设计一个 Time 类,设计多个重载的构造函数,可以设置时间、进行时间 的加减运算、按各种可能的格式输出时间。4 合并 D

18、ate 类和 Time 类为一个 DateAndTime 类,修改相应的成员函数,当时间递增 到新的一天时,应能够修改日期值。第 11 章 继承1 从类 Person 中派生出一个教师类,新增的属性有:专业、职称和主讲课程(一门) ,并 为这些属性定义相应的方法。2许多研究生既有学生的属性,又有教师的属性。试通过多重继承说明一个研究生类。3修改例 11-5 ,从 Point 类中派生出一个 Line 类。 Line 类增加一个数据成员 EndPoint , 计算线的长度。试比较一下与直接使用 Point 类来构造 Line 类的不同之处。4 从 Date 类和 Time 类派生一个 DateA

19、ndTime 类,修改相应的成员函数,当时间递增 到新的一天时,应能够修改日期值。第 12 章 多态性1 定义一个类 Base ,该类含有虚函数 display ,然后定义它的两个派生类 FirstB 和 SecondB ,这两个派生类均含有公有成员函数 display ,在主程序中,定义指向基类 Base 的指针变量 ptr,并分别定义 Base、FirstB、SecondB 的对象bl、fl、si,让ptr分别指 向 b1 、 f1 、 s1 的起始地址,然后执行这些对象的成员函数 display 。2扩充例 12-6 ,从中派生出一个正方形类和圆柱体类,写一个测试程序,输出正方形的面积和

20、圆柱体的体积。提示:正方形数据成员:一个顶点和边长;圆柱体数据成员:圆和高。 3扩充实例编程中的日期类,为Date 类增加一个成员函数,可以判断一个日期是否是系统当前日期。从键盘输入你的生日,如果今天是你的生日则显示:“Happy Birthday!”,否则显示“还有 xx 天是你的生日” 或“你的生日已经过去了 xx 天,明年的生日要再等 yy 天”。第 13 章 模板与异常处理1 编写一个求绝对值的函数模板,并测试。2请将例 4-6 的冒泡排序法改写成为模板函数并编写一个程序进行测试。3例 13-6 中所定义的通用栈类实际上是不完善的, 如无法根据用户需求改变栈的大小,没有提供栈满溢出无法

21、压入和空栈无法弹出提示等,请改进该程序。4C+ 中的数组类型比较简单,它的下标只能从 0 开始,没有负数下标,而且没有数组越界检查。请用类模板设计一个 newArray 类,该类的对象可以是整型、 浮点型、字符型等任何元素类型的数组,而且当访问数组成员时,如果下标越 界,程序可以报错并终止。如下是一些例子:newArray A1(3) / 同传统类型的整型数组/ 包含 5 个元素的浮点型数组, 其成员为 A2-2, A2-1, A20, A21, A22 newArray A2(-2, 3)请编写一个测试程序。5. 例5-1给出的求阶乘n!的函数,当用户的输入太大时(如 50 ),会出现错误,请编写一个程序,使用异常处理机制来解决这一问题。第 14 章 标准库和输入输出流1 .编写一个程序,分别用不同的域宽( 010 )打印出整数 12345 和浮点数 1.2345 。观察 当域宽小于数值的实际需要的域宽时会发生什么情况。2. 编写一个程序,将华氏温度 0 度212 度转换为浮点型摄氏温度,浮点数精度为3。转 换公式如下:Celsius = 5.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论