马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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`。
|