编写一函数 void count(char str[ ]),由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符

#include<stdio.h>int i=0,j=0,k=0,m=0;void count(char str[ ]);int main(){ char str1[100]; printf(""); count(str1); printf("字母有:%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",i,k,j,m);}void count(char str[]){ gets (str); for(;str[i]!='\0';i++) {if(str[i]==' ') j++; else if((str[i]<='z'&&str[i]>='a')||(str[i]<'Z'&&str[i]>'A')) i++; else if(str[i]<58&&str[i]>47) k++; else m++; }}有问题,

你的i值重复了,在count函数中i代码操作到的下标,也代表字母的个数。

应改为

#include<stdio.h>
int n=0,j=0,k=0,m=0;
void count(char str[ ]);
int main()
{
char str1[100];
printf("");
count(str1);
printf("字母有:%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",n,k,j,m);
}
void count(char str[])
{
gets (str);
for(int i=0;str[i]!='\0';i++)
{
if(str[i]==' ')
j++;
else if((str[i]<='z'&&str[i]>='a')||(str[i]<'Z'&&str[i]>'A'))
n++;
else if(str[i]<58&&str[i]>47) k++;
else m++; 
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-12
1. #includevoid count(char *str);int letters=0,space=0,digit=0,others=0;int main(void){ char str[100]; printf("Input a string:\n"); gets(str); count(str); printf("char=%d\nspace=%d\ndigit=%d\nothers=%d\n",letters,space,digit,others); return 0;}void count(char *str){ while(*str!='\0') { if(*str>='a'&&*str='A'&&*str='0'&&*str='a'&&*str='A'&&*str='0'&&*str<='9') digit++; else others++; str++; } printf("char=%d\nspace=%d\ndigit=%d\nothers=%d\n",letters,space,digit,others);}