【发布时间】:2013-11-21 11:55:10
【问题描述】:
我必须解决一个乍一看似乎很简单的练习。但是,我不太确定如何解决它。鉴于变量a 和b 具有某些可接受的值,我是否应该在阅读它们后验证它们是否在正确的范围内?关于变量b,在示例中它是用科学记数法给出的,所以我应该使用e 说明符来阅读它吗?最后但并非最不重要的一点是,',' 的分配抑制是使用"%*[,]" 完成的?
编写一组语句,从标准输入读取三个变量
a、b和c,其中变量有以下类型:
a- 无符号短整数,b- 浮点数,c- 最多 31 个字符的字符串输入值用一个逗号分隔。第一个变量以八进制数给出。 a 和 b 的允许值如下:
-4331 < a <= 28731 -1035 < b < 9749273如果值不在允许的范围内或格式错误,则应给出适当的错误消息。样本输入:
12745, -1.e-3, Is this a good one? 0xEE04F, 21e75, Maybe this one... 70073, 21e+6, Or this one. Could this string be too long to put into allocated area?
【问题讨论】:
-
除非您真正阅读它们,否则实际上无法验证值。您可以通过检查来自
scanf的返回值来验证您scanf的输入类型是否正确。 -
如果您可以使用 Linux 机器,
scanf的手册页非常全面。 (如果没有,您应该可以通过快速的 Google 搜索找到它。)您还需要了解scanf之间的分工以及在调用scanf后需要编写的代码以进行验证您的意见。
标签: c++ c variable-assignment scanf