高手进!提问关于while循环和字符输入间的问题!
发布网友
发布时间:2022-04-20 07:03
我来回答
共6个回答
热心网友
时间:2023-07-08 08:35
首先要知道,while(ch=getchar()=='A') ,其中的条件ch=getchar()=='A',这两个运算符的优先级是"=" < "==",所以ch只有两种情况,也就是要么等于1,要么等于0。至于何时跳出循环,也就是当while的条件等于0时跳出循环,相应的就是当输入的字符不为A时,跳出循环……
至于你说的答案等于0,我想错了吧,因为我写了一个测试程序,答案得出的是1,源程序如下:
#include<stdio.h>
main()
{
char ch;
while(ch=getchar()=='A')
printf("%d\n",ch);
}
你也运行一下看看,得出的是1……
至于你后面写的验证程序其实是计算输入的连续‘A’的个数,也就是说不管你最后输入的是除了‘A’外的任意字符,程序就将跳出循环。
举个例子:比如你输入的是“AAAAAa”,输出的结果将是5,也就是连续‘A’的个数。所以根本不像前面几位兄弟所说的是因为你输入“回车”。要知道“回车”只是为了结束你的输入而已,每个程序只要有输入参数,回车是必须的。
希望我的解释对你有所帮助……
热心网友
时间:2023-07-08 08:35
#include<stdio.h>
main()
{int i=0;char a;
while('A'==getchar())
{
i++;
fflush(stdin);
}
printf("%d\n",i);
}
改成这样就可以了,原因就是因为回车键的缘故
热心网友
时间:2023-07-08 08:36
因为回车键跳出循环,因为在按下A后又按了一个回车键
我刚想了一下,不只是回车键的问题,如果是回车键的问题,那么执行while(ch=getchar()=='A'); 后ch的值应为10,对于这个程序,原因应该是==优先级比=高,while(ch=getchar()=='A'); 先执行getchar=='A',再将(getchar=='A')的值赋给ch,所以ch只有两种值0或1(getchar=='A'成立ch=1,不成立ch=0),
以下是正确程序:
#include<stdio.h>
main()
{int i=0;char ch;
while((ch=getchar())=='A')
{
i++;
putchar(ch);
fflush(stdin);
}
printf("%d\n",i);
}
热心网友
时间:2023-07-08 08:36
while(M)
只有当M=0的时候才跳出循环。 这个应该可以理解吧。
第二个是你输入A的时候i++。此时i=1
所以 。。不懂得话可以留言
同时要说的是“=”于“==”的运算优先关系式后者先。
热心网友
时间:2023-07-08 08:37
while(ch=getchar()=='A'); //在C语言中若变量已正确定义,可ch的值为空,所以在执行以上这个hile语句时,编译系统返回默认值为 0。
下面初值你自己定义的:int i=0;char a
当你输入A回车执行后,在i++的处理下返回值加1,所以运行结果为1。 这里程序是按顺序执行的.
热心网友
时间:2023-07-08 08:38
恩 因为你按了回车 getchar是顺次得到你输入的字符 你输入完了就会取‘\0’也就是0
第二个问题 你输入了A 按了回车 getchar第一次得到A i++变成1 第二次得到0 条件不成立 跳出 所以不会执行i++ i就还是1