问题描述
- C语音课后习题,答案不能输出。在线等~谢谢
-
输入一行字符,统计字母,空格,数字,其他字符,结果不能输出,我看了答案和我的程序一样的。。。
代码如下
#include
int main()
{
int i=0,j=0,k=0,s=0;
char c;
printf("please input string:n");
c=getchar();
while(c!='n')
{
if(c>='A'&&c<='Z'||c>='a'&&c<='z')i=i+1;
else if(c==' ')j=j+1;
else if(c>='0'&&c<='9')k=k+1;
else s=s+1;
}
printf("word:%dn space:%dn number:%dn other:%dn",i,j,k,s);
return 0;
}
解决方案
是这样的,你使用的变量c是一个字符而不是字符串,而你在输入的时候敲入的第一个字符是i,所以c就等于字符i,所以在你的循环体里面,c永远不会等于'n',那么该while循环就会一直执行下去,所以当你输入了这一行字符串之后,程序进入了死循环,从而导致了程序后续没有输出的结果。
如果要写出正确的程序,就不该用字符变量c,而是使用字符串(也就是字符构成的数组),然后在while循环中逐个检查字符串中的元素,进行计数和统计,然后用字符串的结束符号''来作为循环结束的条件。
解决方案二:
while((c=getchar())!='n')
注意要有括号,因为!=优先级高。
解决方案三:
while(c=getchar()!='n')
{...}
解决方案四:
在循环最后再读一个字符啊,不然永远判断的都是同一个字符
解决方案五:
因为在第一次输入时,C为真,进入While循环,在while循环中C的值未改变,导致While循环未退出,应该将c=getchar();放在While循环内
解决方案六:
while((c=getchar())!='n')
{}
你的循环体里就没有输入了啊,所以永远出不了结果。
解决方案七:
你应该把c=getchar();写入while循环中,改为while((c = getchar()) != 'n'),否则第一次getchar的时候获取字符i,此时进入了while循环,条件永远成立,所以永远不会跳出while循环,对于后面的字符也是无法获取的。
时间: 2022-12-11