选择语句&循环语句&输入输出2022.1.8

写代码就是要写人写的代码

选择语句

if

//形式如下:
if (s>3)
{
    
}
else if()
{
}
else
{
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tsnq6X2p-1673155109320)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108092219181.png)]

50>18:则左侧为1,1小于30,进而50依然打印青年

此写法错误

要使用&&

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3S7NzWVb-1673155109323)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108092341327.png)]

顺序(可以删掉&&前面的,毕竟从上往下执行)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3k5Smsrc-1673155109324)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108092652591.png)]

悬空else(else自动跟离他最近的代码对齐)加括号截然不同

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3bwY4phm-1673155109324)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108093322191.png)]

if中的判断(==)误写成(=)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qnb9wZ44-1673155109324)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108100223207.png)]

则有:5赋值给num,进而num=5,5为非0为真;进而if判断为真,进而进入循环执行代码。


建议:写成5 == num;(错了也无所谓)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IIl8HwXV-1673155109325)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108100305229.png)]

switch

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tE90qNZ2-1673155109325)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108103311819.png)]

switch()括号中必须是整形

float不行,但是short,long,long long都可以,整形

case中必须是常量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNBBZTPr-1673155109326)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108103654874.png)]

(break)switch顺序是到可行的之后执行剩下的

注意:这时候如果没有break,会导致输入5,屏幕会输出5,6,7三种情况,switch顺序是到可行的之后执行剩下的

(default:)

用法[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LFjNoKtE-1673155109326)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108105108312.png)]

不可以可以case day大于等于1小于等于5 是工作日

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ckOSVcH-1673155109326)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108104643715.png)]

case 1&&2&&3:这样可行?

不能

这样就是一个条件了

还是那句话:case后面跟整形常量表达式

一个break只能退出自己的switch

switch允许嵌套使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ppW8gL7Q-1673155109327)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108105515851.png)]

if&&switch区别

switch通常用来点判断 if范围判断

循环语句

while

多行代码依然加{}

BREAK:永久终止一个循环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ee3x8osk-1673155109327)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108111920039.png)]

输出 1 2 3 4,结束

CONTINUE:跳过后面代码,直接回到循环的判断部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OZkcHYgW-1673155109327)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108112432606.png)]

输出1 2 3 4 ,然后死循环

输入输出

scanf&printf

scanf用多个^Z(ctrl+z)才会停下来


scanf默认读取到空格才会停下来

改进

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SYHsqccZ-1673155109328)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108115606172.png)]

这样的目的:可以scanf输入空格拉!


getchar&&putchar(一个字符)

用法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tnfyJAHn-1673155109328)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108113126112.png)]

getchar/putchar读取到字符时候返回ascii值,所以用int接收

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p16PZonn-1673155109328)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108113550865.png)]

按^Z的时候返回-1(ascii:字符:1~127),所以EOF

getchar&putchar的输入缓冲区:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TVK3rn60-1673155109329)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108114403534.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PkFL4aKO-1673155109329)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108114423874.png)]


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fjYtbTaU-1673155109329)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108114455136.png)]


所以直接确认失败了(判断是\n不是Y)

如何处理缓冲区的\n

改进:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sCF4R6Ux-1673155109330)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108114705993.png)]




[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yhge75U4-1673155109330)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108114832155.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P6G9MbEz-1673155109330)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108114847172.png)]


如何处理缓冲区还有**“空格”abc\n**

改进


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8u7pNDjn-1673155109331)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108114956545.png)]

加循环处理空格后字符问题但\n还在


密码改进(可以有空格)


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JuMfgz0j-1673155109331)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108115606172.png)]

这样的目的:可以scanf输入空格拉!

利用getchar/putchar只输入数字

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0lfaP11r-1673155109331)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108120021687.png)]

利用ascii值

/0:字符串的结尾

getchar()从缓冲区读走一个字符,相当于清除缓冲区(对应的那个)

不是销毁

键盘中输入的数据存放在缓冲区,输入类函数从缓冲区读取数据,读取成功后读取的数据在缓冲区中清空,但是你已经读取成功了,所以数据仍然被你存储起来了

putchar拿的是getchar手里面的数据

而不是缓冲区里面的的数据

vscode编辑器&&vs2022编译器

vscode可以安装很多插件

书籍推荐

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0D4Wo1v6-1673155109332)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108093904974.png)]

return 0:正常执行主函数,就会返回0,main函数也是被人调用的

调试-窗口-调用堆栈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JlhuKm4c-1673155109332)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108095752784.png)]

点一下-显示更多信息[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TDQMtE6Y-1673155109333)(C:\Users\10169\AppData\Roaming\Typora\typora-user-images\image-20230108100048992.png)]

main也被调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值