/*
**确认已经读取的标号为偶数个,因为他们是以成对的形式出现的。
*/
if (num%2 != 0)
{
}
这个测试检查程序所读取的整数是否为偶数个,这个是程序规定的,因为这些数字要求成对
出现。%操作符执行整数的除法,但是它给出的结果是除法的余数而不是商。如果num不是一
个偶数,它除以2之后的余数将不是0。
puts函数是gets函数的输出版本,它把制定的字符串写到标准输出并在末尾加上一个换行符。
程序接着调用exit函数,终止程序的运行,EXIT_FAILURE这个值被返回给操作系统,提示出
现错误。
/*
**丢弃该行中最后一个数组的那部分内容
*/
while ((ch = getchar()) != EOF && ch != '\n')
当scanf函数对输入值进行转换时,它只读取需要读取的字符。这样,该输入行包含了最后
一个值的剩余部分仍会在那里,等待被读取。它可能只包含作为终止符的换行符,也可能
包含其他字符。不论如何,while循环将读取并丢弃这些剩余的字符,防止他们被解释为
第一行数据。
从getchar函数返回的值被赋给变量ch,然后把它与EOF比较。在复制表达式两端加上括号
用于确保赋值操作符优先与比较操作符。如果ch等于EOF,整个表达式的值就为假,循环
将终止。若非如此,再把ch与换行符进行比较,如果两者相等,循环也将终止。因此,只有
当输入尚未达到文件尾并且输入的字符并非换行符时,表达式的值才是真的(循环将继续进行)
这样,循环就能剔除当前输入行最后的剩余字符。
为什么ch被声明为整型,而事实上我们需要它来读取字符?答案是EOF是一个整型值,它的位
数要比字符型多,把ch声明为整型可以防止从输入读取的字符意外的被解释为EOF。但同时,
这也意味着接收字符的ch必须足够大,足以容纳EOF,这就是ch使用整型值的原因。
这个while循环的循环体没有任何语句,仅仅完成while表达式的测试部分就足以达到我们的
目的,所有循环体就无事可干。while语句之后的单独一个分号成为空语句,它就是应用于
目前这个场合,也就是语法要求这个地方出现一条语句但又无需执行任何任务的时候,这个
分号单独占一行。
return num;
}
return语句就是函数向调用它的表达式返回一个值。在这个例子里,变量num的值被返回给调
用该函数的程序,后者把这个返回值赋值给主程序的n_columns变量。
阅读(1380) | 评论(0) | 转发(0) |