编程珠玑之第一章习题7:处理程序存在的缺陷的问答与测试

1、如果某个数出现超过一次的话,会发生什么?

答:就位图排序而言,set()函数把标识数值的相应位设为1,当再次出现相同值是,由于其相应位已经有1标识,其结果不会发生变化,所以相关与过滤掉了多余的相同值。

2、在这种情况下如何修改程序来调用错误处理函数?

答:就位图排序来说,在我们或得某一值时,我们可以先对其进行判断,看其是否存在,如果存在,那么我们可以设定相应的错误处理函数,给予适当的处理,具体处理情况应依需求而定。

3、当输入的整数小于或大于等于n时,又会发生什么?

答:就位图程序来说,我们依照输入的数作为数租的索引,当我们输入数小于0或者大于n时,数组越界!

4、如果某个输入不是数值又如何?程序该如何处理?

答:如果输入的非数值,如果需求是处理数值,那么任何的非数值值都是非法的,所以,在进行判断之后,进行错误处理(忽略掉非数值或退出输入等)。

5、程序还应该包括哪些明智的检查?

答:还应检查输入值的个数是否超出了数组能容纳的个数(如果使用了数组的话),输入值的规则(是否一次多值?)等!

就输入规则举例:

1
2
3
4
5
6
//....
while ( (scanf( "%d", &a[n])) != EOF)
{
    n++;
}
//....

 别看这句简单,输入的时候,怎样个输入规则?这里有几点需注意:

(1)输出字符,回车,陷入死循环n++; 

(2)在同一行,先输入数字,在输入字符、回车,有闲人死循环!

(3)正确输入法:数字(可以多个,空格分开)——>回车——>Ctrl + Z,或者直接Ctrl+Z(在没有输入任何字符情况下);

 先说到这儿,其他情况以后再探!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值