scanf()和for循环的两个问题

scanf("(空格)%c",&ch)和scanf("%c",&ch)的区别。
for(;;){if(不符合控制条件)break;}和for(;循环条件;)的区别

区别一是scanf(" %c",&ch)前面有空格,输入时需要加入空格,而对于scanf("%c",&ch),不需要直接输入先加空格,如果你第一个打的是空格的话那么
ch将会被赋值为空格
第二个 没有区别都是不符合条件跳出循环

scanf()函数接收输入数据时,遇空格结束一个数据的输入

第一个 区别是前面有空格的 输入数据时也要加空格;
第二个 没有区别 当不符合循环条件时跳出for循环

第一个 区别是scanf(" %c",&ch)前面有空格,当你输入时也要加入空格,而scanf("%c",&ch),直接输入不需要先加空格,如果你第一个打的是空格的话那么
ch将会被赋值为空格
第二个 没有区别都是不符合条件跳出循环

scanf的第一参数是输入的格式控制,你打了空格就要保证输入的字符前有一个空格,不然会出错。scanf("%c", &input),直接读入一个字符。
两个for语句块都是一样的作用,推荐第二种写法,不要乱用break。

scanf第一个是格式控制
第二个 没有区别都是不符合条件跳出循环

scanf的第一参数是格式控制,打了空格的话下面的赋值会出错,要么直接scanf("%c",&input),要么下面给个getchar函数吃掉

scanf()函数接收输入数据时,遇空格结束一个数据的输入
试试scanf('blank %c',&ch)与scanf('%c blank',&ch)的区别

C语言scanf支持格式输入,第一个输入字符前要加空格
第二个基本mei没什么区别

第二个 功能上没区别

scanf函数调用的一般格式为:
scanf("格式控制字符串",变量1的地址,变量2的地址,……,变量n的地址);
格式字符串中出现的常规字符(包括转义字符),务必原样输入。如:scanf("%d:%d:%d",&h,&m,&s);假设给h输入12,给m输入30,给s输入10,你就必须输,12:30:10回车。
所以当scanf("(空格)%c",&ch)时,如果你想给将'a'赋值给ch,你就必须输入 (空格)a,然后回车,否则只需输入a,然后回车。

第二个问题 for(;;){if(不符合控制条件)break;}和for(;循环条件;)的区别
for语句的一般格式为:
for(表达式1;表达式2;表达式3)
语句;(循环体)
其中表达式1一般为赋值语句,给变量初值;表达式2一般为循环控制条件;表达式3给循环控制变量增量或减量;但是只要满足变量有初值、存在控制条件以确保循环有意义、变量在循环中发生变化一确保存在某个时刻循环截止,表达式1 2 3 都可省略(或者理解为转移到其他位置),但是分号不能省!
(https://img-ask.csdn.net/upload/201804/15/1523770660_534629.jpg)

第一个,当SCANF遇到空格时,就结束数据的输入
第二个,FOR循环的一般形式有:for(i=0;循环条件;i++)
for执行时首先执行表达式1,然后执行表达式2,如果循环成立,在循环结束后,下一个循环前执行表达式3,然后再执行表达式2进行判断 for(;;){if(不符合控制条件)break;}与for(;循环条件;)无区别,均是当判断为不符合条件后跳出循环。

问题1:scanf输入时,双引号里面是什么样的,输入时也要输入,即有空格是要先输入空格
问题2:两种写法没有区别,第一个是把循环条件放在循环体中而已,第二个是常规用法,二者效果是相同的

scanf("(空格)%c",&ch)和scanf("%c",&ch)的区别:
如下图所示,在C语言中scanf支持的格式输入,在输入时,如果是字符类型数据,前面有空格并不会影响它的赋值,并非是打空格就赋值为空值,而如果空格在中间,那C语言就会赋值给他,所以应该保持良好的编码习惯。
图片说明
图片说明
图片说明

for(;;){if(不符合控制条件)break;}和for(;循环条**件;)的区别;
皆为跳出循环,但是需要注意的是如果是使用前者,break之前的条件,而使用后者,则说明for里的跳出条件都是一样的。需要得到您的认可。

for循环:第一个for循环没有循环条件,这是一个无限循环,因为没有循环条件限制循环的结束,如果循环体里面没有if条件控制语句,循环将一直进行下去,第一个是将无限循环与if控制语句结合使用。
第二个for循环有循环条件,当不满足循环条件时,就不再进行for循环。两者结果一样。前者是进入for循环体后再判断,后者是判断后,符合条件再进入循环。