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

编写一函数 void count(char str[ ]),由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入一行字符串(可能有空格)并调用count函数进行统计,在主函数中输出统计结果。要求函数首部必须为 void count(char str[ ])注意输入的一行字符串,注意输出的文本和格式。注意指定的调用函数的首部。这是我写的有问题#include<stdio.h>int i=0,j=0,k=0,m=0;void count(char str[ ]);int main(){ char str1[10]; scanf("%s",str1); count(str1); printf("字母有:%d个\n数字有:%d个\n空格有:%d个\n其他字符有:%d个\n",i,k,j,m);}void count(char str[]){ int b=0; gets (str); for(;str[i]!='\0';i++) {if((str[i]<='z'&&str[i]>='a')||(str[i]<'Z'&&str[i]>'A')) i++; else if(str[i]==' ') j++; else if(str[i]<58&&str[i]>47) k++; else m++; }}正确应该调试如下,哪里有问题

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-12
#include <stdio.h>
#include <string.h>
#include <ctype.h>

void count(char str[ ]);

int main(void)
{
char name[100];
gets(name);
count(name);
return 0;
}

void count(char str[ ])
{
int n,i;
int dight=0,alpha=0,space=0,our=0;
n=strlen(str);
for(i=0;i<n;i++)
{
if(isdigit(str[i]))
dight++;
else if(isalpha(str[i]))
alpha++;
else if(isspace(str[i]))
space++;
else
our++;
}
printf("数字有%d个\n字母有%d个\n空格有%d个\n其他字符有%d个\n",dight,alpha,space,our);

}

本回答被网友采纳
第2个回答  2018-12-12

你的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++; 
}
}

第3个回答  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);}