C 不用与或改一个循环语句 小解枚举型变量
题目:
for (i = 0;i < lim - 1 && (c = getchar()) != '\n' && c != EOF; ++i)
s[i] = c;
不用&&和||的条件下编写一个与上面的for循环语句等价的循环语句
题目看着不难,我当时就想着用while
和if
的结合就OK了吧,结果思路方向错了,我想先if
再while
可是这样就跳过了两个条件的重复利用,先while
再if
才是正解,正好答案中还有枚举型的出现,就码来研究了一下。
enum loop {NO, YES}
enum loop okloop = YES;
i = 0;
while (okloop == YES)
if (i >= lim-1)
okloop = NO;
else if ((c = getchar()) == '\n')
okloop = NO;
else if (c == EOF)
okloop = NO;
else {
s[i] = c;
++i;
}
在C 变量与常量 数据类型中我们提到了枚举常量这个概念,当时我把它比作数组,但是看了enum loop okloop = YES
,就会感觉有些困惑了,这个是什么呢?搜了一下,感觉有点像类与对象的概念一样。
比如:
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
我们把上面称为定义
而下面才是声明
enum DAY yesterday;
enum DAY today;
enum DAY tomorrow; //变量tomorrow的类型为枚举型enum DAY
enum DAY good_day, bad_day; //变量good_day和bad_day的类型均为枚举型enum DAY
我们设了一个变量,然后把定义中的值拿出来赋给变量,确实有点像对象的意思吧?
回到题目,其实也就是通过循环条件依次检查,不满足就跳出,全部满足再执行,这样才能满足原来的语句。
关于枚举型的扩展阅读:http://www.cnblogs.com/JCSU/articles/1299051.html
植入部分
如果您觉得文章不错,可以通过赞助支持我。
如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。
仅有一条评论