分别统计用户输入的一串字符中的大写字母(’A’~’Z’)、小写字母(’a’~’z’)
和数字(’0’~’9’)的个数,当用户输入回车(’\n’)时,统计结束。
在 main 函数中编写如下的代码:
1. 声明用于存储字符的 char 型变量:ch,初始值为数字 0。
2. 声明用于存储大写字母个数的 int 型变量:upperNum,初始值:0。
3. 声明用于存储小写字母个数的 int 型变量:lowerNum,初始值:0。
4. 声明用于存储数字字符个数的 int 型变量:digitNum,初始值:0。
5. 提示用户输入:在控制台输出“请输入一串字符,按回车结束:”。
6. 使用 while 循环和 getchat 函数统计用户输入字符,步骤如下:使用循环,如
while(ch != ‘\n’){...},或者 do{…}while(ch != ‘\n’),每次循环统计不同类型字
符个数,具体如下:
6.1 调用 getchar 函数从键盘输入 1 个字符并赋值给变量 ch;
6.2 如果 ch 的值在大写字母(’A’~’Z’)范围内,变量 upperNum 自增;
6.2 如果 ch 的值在大写字母(’a’~’z’)范围内,变量 lowerNum 自增;
6.2 如果 ch 的值在大写字母(’0’~’9’)范围内,变量 digitNum 自增;
7. 输出三个整形变量的值。
字符统计问题(while)
答案:2 悬赏:40
解决时间 2021-12-14 13:17
- 提问者网友:北故人
- 2021-12-14 06:42
最佳答案
- 二级知识专家网友:woshuo
- 2021-12-14 07:03
呵呵,是这样的,楼主的代码用的是while(getchar() != -1),-1是EOF(end-of-file)的宏定义,而在控制台里输入EOF应该是Ctrl+Z。因此,楼主想要结束自己的输入就要用Ctrl+Z。如果用Ctrl+C或者Ctrl+Break,输入被强行中断,但它们都不等于-1,于是循环条件依然满足,所以它们也被计数了。
另外,如果楼主想要看到输出的话,应该加个'\n',也就是输入
abcd回车
^Z
这样,就会打出5(包括回车),如果想要去掉回车,可以增加判断条件,如bct_titus所说,但是这样做的话只能处理一行字符;也可以在nc++前作判断,这样可以处理多行字符:
char tmpCh;
while ( (tmpCh = getchar()) != EOF )
if (tmpCh != '\n')
++nc;
希望能解决您的问题。
另外,如果楼主想要看到输出的话,应该加个'\n',也就是输入
abcd回车
^Z
这样,就会打出5(包括回车),如果想要去掉回车,可以增加判断条件,如bct_titus所说,但是这样做的话只能处理一行字符;也可以在nc++前作判断,这样可以处理多行字符:
char tmpCh;
while ( (tmpCh = getchar()) != EOF )
if (tmpCh != '\n')
++nc;
希望能解决您的问题。
全部回答
- 1楼网友:两不相欠
- 2021-12-14 07:54
getchar()!是一个函数,每执行一次就读入一个字符,直到读到换行的符号为止,n++就是n=n+1;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯