C++从键盘读入一行字符(约定:字符数≤127字节),统计该行字符中出现的字母、数字和其它字符的数量

输出有格式要求,先答个数,再答元素,元素按顺序答即可
#include<stdio.h>
int main()
{
int i,j=0,k=0,l=0;
char str[128];
printf("Please intput the string: ");
scanf("%c",&str[128]);
for(i=0;str[i]!='\0';i++)
{
if(str[i]<='9' && str[i]>='0')
{
j++;
}
}
printf("\nDigistal string length = %d, Digitals: ",j);
for(i=0;str[i]!='\0';i++)
{
if(str[i]<='9' && str[i]>='0')
{
printf("%c",str[i]);
}
}
printf("\n");
for(i=0;str[i]!='\0';i++)
{
if(str[i]<='z' && str[i]>='a')
{
k++;
}
if(str[i]<='Z' && str[i]>='A')
{
k++;
}
}
printf("Letter string length = %d, Letters: ",k);
for(i=0;str[i]!='\0';i++)
{
if(str[i]<='z' && str[i]>='a')
{
printf("%c",str[i]);
}
if(str[i]<='Z' && str[i]>='A')
{
printf("%c",str[i]);
}
}
printf("\n");
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
break;
}
else
{
l++;
}
}
printf("Symbol string length = %d, Symbols: ",l);
for(i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
{
break;
}
else
{
printf("%c",str[i]);
}
}
printf("\n");
return 0;
}
因为是个小白,程序可能又臭又长,希望有大神可以给我指出为什么运行不起来,是哪里逻辑不对

首先 你输入字符串 应该是%s 不是%c ;然后 因为其他字符你不知道是什么字符 ,不能简简单单的判断是不是 " "(空格), 而且,scanf读入字符串的时候 遇到空格会自动停止,如果你读入的字符串中有很多空格 ,得用gets函数 gets(str);这样 写, 你统计其他字符的时候,可以用一个 len = strlen(str) ; 求出原来字符串有多少个字符, 用len - j - k 就是其他字符的数量
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-06-03
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[128], shuzi[128], zimu[128], qita[128];

int i, sz = 0, zm = 0, qt = 0;
printf("please input the string: ");
gets(str);
for (i = 0; str[i] != '\0'; i++)
{
if (str[i] >= '0' && str <= '9')

{
shuzi[sz] = str[i];

sz++;
}
else if (str[i]>='a'&&str[i]<='z' || (str[i]>='A'&&str[i]<='Z'))
{
zimu[zm] = str[i];

zm++;
}
else
{
qita[qt] = str[i];

qt++;
}
}
shuzi[sz] = zimu[zm] = qita[qt] = '\0';
printf("\nDigistal string length = %d, Digitals: %s",sz, shuzi);
依次输出即可............
return 0;
}
相似回答