当前位置: 首页 > 文档资料 > C++大学教程 >

11.14 自助练习题

优质
小牛编辑
136浏览
2023-12-01

11.6 用一条 C++ 语句实现下述要求:

a)以左对齐方式输出整数 40000,域宽为 15。
b)把一个字符串读到字符型数组变量 state 中。
c)打印有符号数200和无符号数 200。
d)将十进制整数100以0x开头的十六进制格式输出。
e)把字符读到数组s中,直到遇到字符'p'或读取的字符个数达到限定值10时终止读取操作。同时从输入流中读取分隔符并删除。
f)用前导O格式打印 1.234,域宽为 9。
g)从标准输入流中读取字符串 charecters,将其存储在字符数组s中。读取过程中去掉双引号,读取字符个数的最大限定值为50(包括空字符)。

11.7 编写一个程序,测试十进制、八进制、十六进制格式整数值的输入,分别按三种不同的基数输出。测试数据为10、O10、Ox10。

11.8 编写一个程序,用强制类型转换运算符把指针值转换成各种整数数据类型后,打印出指针值。哪种数据类型打印出奇怪的值?哪种数据类型产生了错误?

11.9 编写一个程序.分别用不同的域宽打印出整数12345和浮点数1.2345。当域宽小于数值的实际需要的域宽时会发生什么情况?

11.10编写一个程序,将100.453627取整到最近似的个位、十分位、百分位,千分位和万分位,打印出结果。

11. 11编写一个程序,从键盘输入一个字符串,判断字符串的长度,然后以字符串长度的两倍作为域宽打印出该字符串。

11. 12编写一个程序,将华氏温度0度~212度转换为浮点型撮氏温度,浮点数精度为3。转换公式如下:

celsius=5.0/9.O * (fahrenheit - 32);

输出用两个右对齐列,摄氏温度前面加上正负号。

11.13 在不同的编程语言中,字符串有的是用单引号' '括起,有的是用双引号" "括起。编写一个程序,读取三个不同的字符串suzy、”suzy”和'suzy'。看看单引号和双引号是被忽略了,还是被当作字符串的一部分一起读取了。

11.14 图8. 3的程序为类PhoneNumber的输入和输出对象而重载了流读取运算符和流插入运算符。重新编写流读取运算符,使它能够检测下面的输入错误。注意,函数operator>>的代码全部需要重写。
a)输入一个完整的电话号码到一个字符数组中,检测输入的字符总数,例如电话号码(800)555-1212的字符总数为14个。如果输入错误,用流成员函数clear设置ios::failbit位。
b)电话号码中的区号和局号不能以0或1打头。检测区号和局号的第一位,判断是否为 0或1,若是,则用流成员函数clear设置ios::failbit位。
c)区号的中间一位是0或1,检测中间位,判断是否为0或1,如果输入错误,则用流成员函数clear设置ios::failbit位。如果输入正确,即ios::failbit位为0,则把电话号码的三个部分分别复制到对象PhoneNumber的成员areacode、exchange和line中。在主程序里,如果置位ios::failbit,则程序打印出一条出错消息.并且不打印电话号码而结束运行。

11.15 编写完成下列要求的程序:

a)建立用户自定义类Point,该类包含private整数数据成员xCoordinate和yCoordinate,并在类中声明了重载的流插入和流读取运算符函数为其友元。
b)定义流插入和流读取运算符函数。流读取运算符函数判断输入的数据是否合法,如果是非法数据,则置位ios::failbit以指示输入不正确。发生错误后,流插入运算符函数不显示Point的对象(点)的坐标信息。
c)编写函数main,用重载的流插入运算符和流读取运算符测试自定义类Point的输入和输出。

11. 16 编写完成下列要求的程序:

a)建立用户自定义复数类Complex,类中包括private整数数据成员real和imaginary,并声明了重载的流插入和流读取运算符函数为其友元。
b)定义流插入和流读取运算符函数。流读取运算符函数判断输入的数据是否合法,如果是非法数据,则置位ios::failbit以指示输入不正确。必须按以下格式输入:
3 + 8i
c)数据可为整数或负数,还可以只给其中一个数赋值。未给出的数值,由相应的数据成员设置为0。当发生输入错误时,流插入运算符不显示该复数值。输出格式与上述的输入格式相同,对于为负的虚部要打印出负号。
d)编写函数main,用重载的流插入运算符和流读取运算符测试自定义类Complex的输入和输出。

11.17 用for结构为ASCII字符集中ASCII码值从33—126的字符打印出一张ASCII码表。要求输出十进制值、八进制值、十六进制值和ASCII码值,并在程序中使用流操纵算子dec、oct和hex。

11. 18 编写一个程序,用成员函数getline和带三个参数的成员函数get输入带有空字符的字符串。get函数不读取分隔符,分隔符仍保留在输入流中,并让getline从输入流中读取并删除分隔符。把未读取的字符留在输入流中会发生什么情况?

11. 19 编写一个程序,建立用户自定义流操纵算子skipwhite以跳过输入流中的前导空白字符。

该流操纵算子使用ctype.h函数库中的isspaee函数测试输入的字符是否是空白字符。要求用istream的成员函数get来读取每一个字符,当遇到一个非空白字符时,流操纵算子skipwhite把该字符放回到输人流中,返回对istream对象的引用。

建立一个main函数,测试自定义流操纵算子(在main函数中清除ios::skipws标志位,以保证流读取运算符无法自动跳过空白字符)。然后输入一个以空白字符开头的字符,对流操纵算子进行测试,读取完毕之后,输出所读取的字符以证实空白字符确实未被输入。