今日学习总结循环中的一些问题

本文探讨了在编程中循环条件与变量初始化顺序之间的关系,通过具体案例解释了为何将变量初始化放在循环内部会导致计数错误,并提出了正确的初始化顺序以避免此类问题。同时,文章还对比了不同循环结构(如while、do...while)的使用场景,旨在帮助开发者更好地理解和运用循环机制。

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

  在循环条件中有些问题我实在想不通,有些问题想通了感觉还是迷糊的,就今天因为顺序的问题我就想了半天,还是有个说服自己的理由吧

#include<stdio.h>
int main()
{
char c;
int letters=0,space=0,digit=0,other=0;
printf("请输入一行字符:\n");
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
 letters++;
else if(c==' ')
 space++;
else if(c>='0'&&c<='9')
 digit++;
else
 other++;
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n",letters,space,digit,other);
return 0;
}

上面这个程序中,c=getchar()能不能放在循序里面最开始的部分?我怀着好奇的心试了试,最后输出的other总是多一,这是为什么?为什么会这样?后来想了那么久就是不明白,晕晕的感觉,DEV C++里面有个调试的功能,其实我就是今天才学会的!试了好几遍,又是自己各种想象,我就是这么认为的,如果将c=getchar()放在循环里面,那么就跳过了判断,当最后输入回车的时候,程序会认为输入了其他的字符,而c=getchar()在程序的里面,肯定是先经过一轮的循环导致other加一后遇到(c=getchar())!='\n'终止循环!那么将c=getchar()放在other++后,也就是循环的末尾可以吗?我有带着疑问去调试了,很明显出现个大问题啊,循环开始的时候没办法输入字符啊,不过不要惊慌,我还是想到办法了呢,在while前一行加个在c=getchar()就OK啦,这样程序就有恢复正常了,确实,这种方法要比上面程序中的复杂一点点!

那么能不能用do...while呢?应该是不行的吧,do...while程序是先执行一轮再判断,这样应该很不合适啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值