循环结构1
while的循环语句
分成初始化,判断,调整
流程:
break直接终止整个循环
continue是跳过本次循环它后面的代码,直接进入下一次循环
光标一直在闪,一直在进行死循环
函数的一个综合库MSDN
补充的一个错误然后该怎么做
getchar是获取字符的意思,从哪儿获取,从你打的字符获取
上面getchar是直接存ASCII的数字,下面是两个不同的提取方式printf和putchar
注意getchar本身是将字符转成ASCII的数字进行储存,若是遇到的不是标准的字符(例ctrl+z),就会报错EOF,EOF本质上来讲就是int -1,所以用int getchar可以包含所有的情况
另外
这个代码的原理是我们的键盘和getchar中间有一个叫输入缓冲区,当你在键盘上打一个a,其实getchar读不到,只有当你打回车键后,a才到输入缓冲区,但此时是a\n。getchar就开始运行,发现a是97不是-1的EOF,就把a打了出来,但是里面还有\n是10没有打印,就接着打印10也就是\n,程序也就直接换行了。
这一般用于清理缓冲区
数组名字本来就是地址,scanf和getchar都是获取输入的东西,
还没打yes,no就直接出结果了,为什么
scanf和getchar都是输入,但不是直接从键盘上获取,而是通过输入缓冲区获取
scanf知道自己该运行了,就拿走了abcdef留下了\n,而后getchar直接就把\n就拿走了,放到了ret里面去了,所以ret不等于y,就直接给了个NO
在中间加入一个getchar,用来读取\n,这样就可以完成
但是这样的代码真的没有问题吗?
可以看见还是出错了
继续理解,scanf读到空格就不读了,所以就只读了abcdef(补充知识:字符串的读取以空格为结尾标志,读到空格就不读了。getchar只能拿一个字符,就拿了个空格,肯定不等于Y,所以寄了)
于是就加了一个while的循环
就成功了
例二:
补充遗忘(或是遗漏的):
for循环语句
for循环也只能打印第一个printf
如果也想每次都打印hehe,要放到一个大括号里面去
for循环流程
执行顺序
for和while之间continue
for不会死循环,while会死循环,可以看出break和continue在两者程序中表达的意思一样,break一个只能跳出一个循环
建议:
1.不要乱改其中i的值,又在for语句中有i++,又在for后面{}里面修改i的值
2.建议使用前闭后开区间的写法,但并不死板
for变种
第一,死循环
第二,嵌套循环n*n次
9个hehe
3个呵呵
另外
例题:
答案:0,因为k=0是赋值,0是假直接出循环