从零开始学习C语言日记——DAY11

  • 循环与分支

分析理解以下程序(1):

 

为什么当一输入完密码之后按下回车会立刻放弃确认密码呢?

因为当输入密码的时候输入完成后会按下回车键,回车键会出现\n.也就是当前输入缓冲区里是313515\n。第一个scanf读取的只是313515而\n被保留了下来,在第二个输入等待getchar等待时,发现输入缓冲区里有东西就会直接读取。

而后因为读取的是\n不是Y与我们编写的if程序发生反应,所以会执行else段放弃确认。

那我们应该如何解决这个问题?

我们应该想办法把输入缓存区里的东西清空。

我再读取一遍是不是就可以把\n拿走了?

 

答案的可以的

我们可以看到加了getchar之后程序成功的在请确认(Y/N)段停止了。

那然后我换一种输入方式只读取一遍也会直接跳过等待的。如:我输入“313515 QWQWQ”中间有空格加上后面的字符显然是会直接跳过的。

如果把读取改为循环,在输入缓存区循环读取,直到把里面的东西都读取完即可。

格式:While(放在哪(ch)=用谁去读(getchar())判断条件(!=\n)

While((ch = getchar()) !=\n);

{

}

 

可以看到已经成功了

分析理解以下程序(2):

 

作用只会输出数字字符

  • for循环

我们知道了while循环为什么还要有一个for循环呢?

语法:

For(表达式1;表达式2;表达式3)

循环语句;

表达式1表达式1为初始化部分,用于初始化循环变量的。表达式2表达式2为条件判断部分,用于判断循环时候终止。表达式3表达式3为调整部分,用于循环条件的调整。

打印出1-10

For(i=1;i<=10;i++)

{

 Printf(“%d”,i);

}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值