首页 > 其他分享 >C语言学习6

C语言学习6

时间:2024-02-01 17:06:02浏览次数:21  
标签:scanf C语言 学习 循环 缓冲区 直接 死循环 getchar

循环结构1

C语言学习6_死循环

while的循环语句

分成初始化,判断,调整

C语言学习6_死循环_02

C语言学习6_for循环_03

流程:

C语言学习6_for循环_04

break直接终止整个循环

C语言学习6_输入缓冲区_05

continue是跳过本次循环它后面的代码,直接进入下一次循环

C语言学习6_for循环_06

光标一直在闪,一直在进行死循环

C语言学习6_输入缓冲区_07

函数的一个综合库MSDN

C语言学习6_for循环_08

补充的一个错误然后该怎么做

getchar是获取字符的意思,从哪儿获取,从你打的字符获取

C语言学习6_输入缓冲区_09

上面getchar是直接存ASCII的数字,下面是两个不同的提取方式printf和putchar

注意getchar本身是将字符转成ASCII的数字进行储存,若是遇到的不是标准的字符(例ctrl+z),就会报错EOF,EOF本质上来讲就是int -1,所以用int getchar可以包含所有的情况

另外

C语言学习6_for循环_10

C语言学习6_死循环_11

这个代码的原理是我们的键盘和getchar中间有一个叫输入缓冲区,当你在键盘上打一个a,其实getchar读不到,只有当你打回车键后,a才到输入缓冲区,但此时是a\n。getchar就开始运行,发现a是97不是-1的EOF,就把a打了出来,但是里面还有\n是10没有打印,就接着打印10也就是\n,程序也就直接换行了。

这一般用于清理缓冲区

数组名字本来就是地址,scanf和getchar都是获取输入的东西,

C语言学习6_for循环_12

还没打yes,no就直接出结果了,为什么

scanf和getchar都是输入,但不是直接从键盘上获取,而是通过输入缓冲区获取

C语言学习6_输入缓冲区_13

scanf知道自己该运行了,就拿走了abcdef留下了\n,而后getchar直接就把\n就拿走了,放到了ret里面去了,所以ret不等于y,就直接给了个NO

C语言学习6_死循环_14

在中间加入一个getchar,用来读取\n,这样就可以完成

C语言学习6_for循环_15

但是这样的代码真的没有问题吗?

C语言学习6_死循环_16

可以看见还是出错了

C语言学习6_输入缓冲区_17

继续理解,scanf读到空格就不读了,所以就只读了abcdef(补充知识:字符串的读取以空格为结尾标志,读到空格就不读了。getchar只能拿一个字符,就拿了个空格,肯定不等于Y,所以寄了)

于是就加了一个while的循环

C语言学习6_for循环_18

就成功了

C语言学习6_死循环_19

例二:

C语言学习6_for循环_20

补充遗忘(或是遗漏的):

C语言学习6_死循环_21



for循环语句

C语言学习6_输入缓冲区_22

C语言学习6_输入缓冲区_23

for循环也只能打印第一个printf

如果也想每次都打印hehe,要放到一个大括号里面去

for循环流程

C语言学习6_死循环_24

执行顺序

C语言学习6_输入缓冲区_25

for和while之间continue

C语言学习6_死循环_26

for不会死循环,while会死循环,可以看出break和continue在两者程序中表达的意思一样,break一个只能跳出一个循环

建议:

1.不要乱改其中i的值,又在for语句中有i++,又在for后面{}里面修改i的值

2.建议使用前闭后开区间的写法,但并不死板

C语言学习6_死循环_27

for变种

第一,死循环

C语言学习6_死循环_28

第二,嵌套循环n*n次

C语言学习6_死循环_29

9个hehe

C语言学习6_输入缓冲区_30

3个呵呵

另外

C语言学习6_输入缓冲区_31

例题:

C语言学习6_输入缓冲区_32

答案:0,因为k=0是赋值,0是假直接出循环






标签:scanf,C语言,学习,循环,缓冲区,直接,死循环,getchar
From: https://blog.51cto.com/u_16539908/9533773

相关文章

  • 2.C语言学习--分支与循环例题分析
    1.计算n的阶乘intmain(){ intret=1; inti=0; intn=0; scanf("%d",&n);//注意取地址符号&别忘记 for(i=1;i<=n;i++) { ret=ret*i; } printf("ret=%d\n",ret); return0;}效果如下所示:2.计算1!+2!+...+10!intmain(){ ......
  • excel学习记录
    《相关案例详见博客园文件》1.记录整理、数据计算、数据分析、数据展现2.保存->工具->常规选项->设置打开密码和修改权限密码,修改权限密码表示可以修改,但是修改后不能保存3.快速填充ctrl+e:对数据拆分、重组、合并 例如:A列有邮箱数据,想提取出邮箱数据中的人名,在B列输入A1中的......
  • 从CF1737学习区间计数处理与开方精度丢失问题
    Problem-B-Codeforces思路出来之后,需要计算\(l,r\)区间的个数。我想的是计算出\([0,r]\)的个数和\([0,l]\)的个数,然后相减。大体上是没问题,但是我的实现麻烦而且有错误。初始代码voidsolve(){lll,r;cin>>l>>r;autocalc=[&](llx,bool......
  • Vulkan学习苦旅05:马不停蹄地渲染(创建交换链VkSwapchainKHR)
    通俗地说,渲染图像就是为图像的每个像素选择合适的颜色。例如,如果图像的分辨率为1920x1080,表示图像中有1920x1080个像素,渲染的过程,就是为每个位置的像素计算出合适的颜色。具体来说,假设每种颜色具有RGBA四个通道,且每个通道用1个字节表示(可以表示255种不同的情况),那么图像应当占据192......
  • 蒙特卡洛树搜索学习笔记
    目录前言蒙特卡洛树搜索的适用范围蒙特卡洛树搜索的作用算法流程前置:蒙特卡洛方法流程算法的设计思路:具体流程:简单描述:选择(算法的核心)扩展模拟回溯优化使用估价函数选择要扩展的点,而不是完全随机适当剪枝拓展总结参考文献前言人工智能Alphago,成为最顶尖的围棋大师,不由得让人产生......
  • 深度学习奖励规则
      111111111111111111111111111111111111111111111111111111111111      1 1王者荣耀,-觉悟机器人,深度学习训练阿尔法go,深度学习; 1 1 1 1智能体环境动作要素奖励 1......
  • 【学习笔记】二分图匹配 匈牙利(NTR)算法
    时间复杂度显然,这个算法的时间复杂度是O(一边的点数*边数)因为最坏情况就是每一个点都要把所有的边问一遍能不能匹配显然,常数极小另外可以留意一下数据范围,因为如果是稠密图(\(n=500m=2e5\)这种)就可以考虑邻接矩阵存图,方便判重边S准备以下是跑Ntr算法要用的一些东西如果题......
  • java学习02
    可以用_和字母和$作为标识符开头,特殊字符不能出现在名字中、float和long类型要在赋值后面加上大写首字母最好避免使用浮点数进行比较,因为浮点数是离散的数,接近但不等于使用时会出问题char字符本质都是数字,通过int类型转换可以知道/u0000可以输出起点/uffff是char终点使用下......
  • 强连通分量(SCC,Strongly Connected Components)学习笔记 & edited in 2024.01.31
    更新日志upd2024.01.31写好文章基本内容upd2024.01.31发表于洛谷upd2024.02.01同步发表于CSDNupd2024.02.01同步发表于博客园cnblogs强连通分量(SCC,StronglyConnectedComponents)定义强连通有向图(DAG)中若其中两点$x$,$y$能彼此到达(不一定是直接连边),称$x$和......
  • 强化学习无人车训练11
                     ......