C++ primer plus第六章复习题

1.请看下面两个计算空格和换行符数目的代码片段:

第一种对于每个字符ch,都要进行两次条件判断;第二种可以在ch!='\n'的情况下少执行一次判断,基本上除了ch=='\n'的情况下都只用执行一次判断。

2.在程序清单6.2中,用ch+1替换++ch将发生什么情况呢?

++ch首先将ch变为ch+1,然后返回ch的值;ch+1这个表达式表示ch+1,但并不会改变ch的值。

++ch时输出字符会在输入的字符上加一,也就是输入a,输出的就是b;但使用ch+1,输出的字符值和输入的一样。

3.请认真考虑下面的程序:

输出如下:使用了ch=$,条件判断始终为真,故结果如下

Hi!
H$i$!$
$Send $10 or $20 now!
S$e$n$d$ $ct1 = 9, ct2 = 9

4.创建表示下述条件的逻辑表达式:

a.weight大于或等于115,但小于125。 b.ch为q或Q。 c.x为偶数,但不是26。 d.x为偶数,但不是26的倍数。 e.donation为1000-2000或guest为1。 f.ch是小写字母或大写字母(假设小写字母是依次编码的,大写 字母也是依次编码的,但在大小写字母间编码不是连续的)。

    //a
	weight >= 115 && weight < 125;
	//b
	ch == 'q' || ch == 'Q';
	//c
	ch % 2 == 0 && ch != 26;
	//d
	ch % 2 == 0 && ch % 26 != 0;
	//e
	(donation >= 1000 && donation <= 2000) || guest == 1;
	//f
	(ch > 'a' && ch < 'z') || (ch > 'A' && ch < 'Z');

5.在英语中,“I will not not speak(我不会不说)”的意思与“I will speak(我要说)”相同。在C++中,!!x是否与x相同呢?

不相同,!x返回的时一个bool的逻辑值,即要么为true要么为false,如果x是一个大于0的数,!x的值表示为false,而!!x表示在!x上再次取反,即表示逻辑真,也就是true。

6.创建一个条件表达式,其值为变量的绝对值。也是说,如果变 量x为正,则表达式的值为x;但如果x为负,则表达式的值为−x——这 是一个正值。

使用?:运算符最方便:

x=(x>0)?x:-x

7.用switch改写下面的代码片段:

改写如下:

switch(ch){
    case:'A'
        a_grade++;
        break;
    case:'B'
        b_grade++;
        break;
    case:'C'
        c_grade++;
        break;
    case:'D'
        d_grade++;
        break;
    default:
        f_grade+=;
}

8.对于程序清单6.10,与使用数字相比,使用字符(如a和c)表示 菜单选项和case标签有何优点呢?(提示:想想用户输入q和输入5的情 况。)

用字符表示更能明白对应选项的含义,方便记忆。

9.请看下面的代码片段:

int line = 0;
char ch;
while(cin.get(ch) && ch!='Q')
{
    if(ch=='\n')
        line++;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值