如果计算机2级注意事项,计算机等级考试上机注意事项(2)

本文揭示了一道编程难题,关于如何正确实现encryptChar()函数,避免因字符ASCII值溢出导致的错误。通过南开无忧和无忧答案的对比,解析了char类型限制和整型转换的重要性。考试中心提供的答案及实例展示了如何避免字符替代中的溢出问题,适合备考者和程序员参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

考试中心命题组64题:

请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS8.DAT中。

替代关系:f(p)=p*11 mod 256 (p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。

这道题目所有的人都做过,但几乎就没有人做对,包括南开无忧在内原因就在于这一句无忧南开表面看来,好象两个都对,请你在TC下运行一下下面的代码,看一下结果你就知道了是怎么回事了:

,*nkp,,nk,*nkp,wuyou,,nk,*nkp,wuyou,看到结果了么?是不是很吃惊啊?

大家看到了,南开的结果是负数,连原来的变量nk都变成了负数,这显然错了。

无忧的聪明一点,知道int比char大,定义了个int,对了。

南开错误原因就是在TC2.0中char型变量只有一个字节,根本容纳不下'E'*11,所以产生了溢出,上次考这道题目没过的同学是不是有所启发呢?

这里给出考试中心命题组的答案:

,k,似乎一个例子不能说明什么,那就把上面的数字题目的答案给大家看看:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值