|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
- #include<stdio.h>
- int main(void)
- {
- char m[128];
- int a = 0, b = 0, c = 0, d = 0, n = 0;
- printf("请输入一行字符:");
- while(m[n] != '\n')
- {
- printf("%c",&m[n++]);
- }
- m[n-1] = '\0';
-
- for(n=0;m[n];n++)
- {
- if(m[n] >= 'A' && m[n] <= 'z')
- {
- a++;
- continue;
- }
-
-
- if(m[n] == ' ')
- {
- b++;
- continue;
- }
-
- if(m[n] >= '0' && m[n] <= '9')
- {
- c++;
- continue;
- }
- d++;
- }
-
- printf("字母:%d个\n",a);
- printf("空格:%d个\n",b);
- printf("数字:%d个\n",c);
- printf("其他字符:%d个\n",d);
-
- return 0;
- }
复制代码
- #include<stdio.h>
- int main(void)
- {
- char m[128];
- int a = 0, b = 0, c = 0, d = 0, n = 0;
- printf("请输入一行字符:");
- while(m[n] != '\n')
- {
- m[n++] = getchar();
- }
- m[n-1] = '\0';
-
- for(n=0;m[n];n++)
- {
- if(m[n] >= 'A' && m[n] <= 'z')
- {
- a++;
- continue;
- }
-
-
- if(m[n] == ' ')
- {
- b++;
- continue;
- }
-
- if(m[n] >= '0' && m[n] <= '9')
- {
- c++;
- continue;
- }
- d++;
- }
-
- printf("字母:%d个\n",a);
- printf("空格:%d个\n",b);
- printf("数字:%d个\n",c);
- printf("其他字符:%d个\n",d);
-
- return 0;
- }
复制代码
抱歉刚刚的建议没有解决问题。这是因为`scanf`无法很好地处理换行符,所以你需要更改输入方法。以下是使用`getchar()`的正确实现:
- #include<stdio.h>
- int main(void)
- {
- char m[128];
- int a = 0, b = 0, c = 0, d = 0, n = 0;
- printf("请输入一行字符:");
- char ch;
- while ((ch = getchar()) != '\n')
- {
- m[n++] = ch;
- }
- m[n] = '\0';
-
- for(n=0; m[n]; n++)
- {
- if((m[n] >= 'A' && m[n] <= 'Z') || (m[n] >= 'a' && m[n] <= 'z'))
- {
- a++;
- continue;
- }
-
- if(m[n] == ' ')
- {
- b++;
- continue;
- }
-
- if(m[n] >= '0' && m[n] <= '9')
- {
- c++;
- continue;
- }
- d++;
- }
-
- printf("字母:%d个\n",a);
- printf("空格:%d个\n",b);
- printf("数字:%d个\n",c);
- printf("其他字符:%d个\n",d);
-
- return 0;
- }
复制代码
这个修改后的代码应该可以正常工作。我在这里将输入部分更改为使用`getchar()`函数,因为它可以更好地处理换行符。在`while`循环中,`getchar()`函数会逐个字符读取输入,直到遇到换行符`\n`。然后将读取到的字符存储在`m`数组中,并递增数组索引`n`。
|
|