C编程,从键盘读入一系列字符,以“#”结束,统计字符个数

这个程序是书上的例子,我有几个疑问,望大家帮忙解答,谢谢。1.字符型数据不是只能存放一个字符吗?那你怎么输入一系列字符,让程序统计呢?2.这个程序中的自增运算能改为++count吗?两者在程序的具体运行时有什么区别?3.为什么要有2个scanf输入语句,光要第一个不行吗?求解释。
2026年09月26日 08:07
有2个网友回答
网友(1):

1.字符型变量是只能存一个字符。你程序里面输入一些列字符,最后也没有把所有字符存在定义的字符变量ch中,只是曾用它保存过,但通过比较每次刚覆盖存入的输入字符是不是'#',利用累加,自然可以实现统计功能。

2.该程序中的自增运算可以改为++count,在这个程序中也没区别。主要在你循环内部,也没有用count做其他运算,也没有break语句可能改变执行过程。

3.输入一个字符,判断他是不是'#',不是的话,自然需要再输入了。
如果只想使用一个scanf,可以如下改:
#include
void main()
{
int count;
char ch;
count=0;
while(1)
{
scanf("%c",&ch);
if(ch=='#') break;
count++;
}
printf("total=%d\n",count);
}

网友(2):

从你这个程序来看统计字符是不包括“#”的。

1.字符型数据是只能存放一个字符,程序中用的是循环,每输入一字符count就加1,直到输入#,循环结束,每次输入都是存到ch里,也是ch的值每输入一次改变一次。
2.这个程序中的自增运算能改为++count。区别:int a = count++ 当做一个变量来理解的话,a=0;
之后count = 1;
int a = ++count , a = 1; count = 1;
3.见1的解释。