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

这个程序是书上的例子,我有几个疑问,望大家帮忙解答,谢谢。1.字符型数据不是只能存放一个字符吗?那你怎么输入一系列字符,让程序统计呢?2.这个程序中的自增运算能改为++c... 这个程序是书上的例子,我有几个疑问,望大家帮忙解答,谢谢。
1.字符型数据不是只能存放一个字符吗?那你怎么输入一系列字符,让程序统计呢?
2.这个程序中的自增运算能改为++count吗?两者在程序的具体运行时有什么区别?
3.为什么要有2个scanf输入语句,光要第一个不行吗?求解释。
展开
 我来答
百度网友1fc36d4
2011-08-07 · TA获得超过3128个赞
知道大有可为答主
回答量:1497
采纳率:100%
帮助的人:1807万
展开全部
1.字符型变量是只能存一个字符。你程序里面输入一些列字符,最后也没有把所有字符存在定义的字符变量ch中,只是曾用它保存过,但通过比较每次刚覆盖存入的输入字符是不是'#',利用累加,自然可以实现统计功能。

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

3.输入一个字符,判断他是不是'#',不是的话,自然需要再输入了。
如果只想使用一个scanf,可以如下改:
#include <stdio.h>
void main()
{
int count;
char ch;
count=0;
while(1)
{
scanf("%c",&ch);
if(ch=='#') break;
count++;
}
printf("total=%d\n",count);
}
更多追问追答
追问
第一个问题中,你的意思是ch每次只是保存输入的一个字符,然后 后面一个会覆盖前一个,对吗?既然这样,那为什么运行程序的时,你可以一次输入 一串字符呢?只有一个存放在ch中,其余的存放在哪呢?
追答
呵呵,之前存的被覆盖了啊。应该说是被擦掉了,然后重新写入了新输入的字符。哪去了还真给不出地点。我们玩电脑,电脑一关,刚才还在网上玩过的游戏,视频,声音,哪去了呢?
我们的软件运行在内存上,每段程序都有自己的堆栈控件,数据缓存都在这上面操作,操作完了内存被回收。我这么想的,也好理解点。各人看法不一样,求同存异。
笑壹個
2011-08-07 · TA获得超过403个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:226万
展开全部
从你这个程序来看统计字符是不包括“#”的。

1.字符型数据是只能存放一个字符,程序中用的是循环,每输入一字符count就加1,直到输入#,循环结束,每次输入都是存到ch里,也是ch的值每输入一次改变一次。
2.这个程序中的自增运算能改为++count。区别:int a = count++ 当做一个变量来理解的话,a=0;
之后count = 1;
int a = ++count , a = 1; count = 1;
3.见1的解释。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式