求教大神一道C语言题目。万分感谢!

求统计一句话中空格,字母,数字,其他字符的个数,我想用指针来实现,这个算法按理应该没问题,但是运行的结果总是不对,我是真的找不出问题出在哪里,求教大神帮我看看,在下感激不... 求统计一句话中空格,字母,数字,其他字符的个数,我想用指针来实现,这个算法按理应该没问题,但是运行的结果总是不对,我是真的找不出问题出在哪里,求教大神帮我看看,在下感激不尽了!!!!!!
代码:
#include<stdio.h>
int l,n,b,o;
int count(char a[])
{
char *m=a;

l=n=b=o=0;
while(*m!='\n')
{
if(*m>='0'&&*m<='9')
n++; //数字统计
else if(*m>='a'&&*m<='z'||*m>='A'&&*m<='Z')
l++; //字母统计
else if(*m==' ')
b++; //空格统计
else
o++; //其他字符统计
m++;
}
return n;
return l;
return b;
return o;
}

int main()
{
char str[100];

printf("请输入一句话:");
scanf("%s",str);
count(str);
printf("字母:%d\n数字:%d\n空格:%d\n其他字符:%d\n",l,n,b,o);
return 0;
}
展开
 我来答
jiejieup
2013-12-30 · TA获得超过339个赞
知道小有建树答主
回答量:272
采纳率:0%
帮助的人:244万
展开全部

你的return四遍完全就是没有任何用的,你已经定义了全局变量了,不用return。问题在于你虽然敲击了回车,但那并不会被输入。所以你while循环可能会一直循环下去,直到碰巧碰到一个字符等于'\n'

#include<stdio.h>
int l,n,b,o;
int count(char a[])
{
 char *m=a;
 
 l=n=b=o=0;
 while(*m!=0)
 {
   if(*m>='0'&&*m<='9')
  n++;           //数字统计
   else if(*m>='a'&&*m<='z'||*m>='A'&&*m<='Z')
  l++;            //字母统计
   else if(*m==' ')
  b++;            //空格统计
   else
  o++;            //其他字符统计
   m++;
 }
}

int main()
{
 char str[100] = {0};
 
 printf("请输入一句话:");
 scanf("%s",str);
 count(str);
 printf("字母:%d\n数字:%d\n空格:%d\n其他字符:%d\n",l,n,b,o);
return 0;
}
ltc1002011
2013-12-30 · TA获得超过1636个赞
知道小有建树答主
回答量:446
采纳率:50%
帮助的人:357万
展开全部
#include<stdio.h>
int l,n,b,o;
int count(char a[])
{
 char *m=a;
 
 l=n=b=o=0;
 //while(*m!='\n')     //字符串是'\0'结束的。不是'\n'
 while(*m!='\0')
 {
   if(*m>='0'&&*m<='9')
 n++;           //数字统计
   else if(*m>='a'&&*m<='z'||*m>='A'&&*m<='Z')
 l++;            //字母统计
   else if(*m==' ')
 b++;            //空格统计
   else
 o++;            //其他字符统计
   m++;
 }
 return 0;
 //return n;    //多次return无意义。返回0即可。或设函数为void,无返回值。
 //returnl;
 //return b;
 //returno;
}
int main()
{
 char str[100];
 
 printf("请输入一句话:");
 //scanf("%s",str);   //不可用scanf函数。因为遇到空格就当接收一个字符串了。
 gets(str);  //用gets接收整行字符串。
 count(str);
 printf("字母:%d\n数字:%d\n空格:%d\n其他字符:%d\n",l,n,b,o);
return 0;
}


望取纳。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暮影1994
2013-12-30 · TA获得超过2338个赞
知道大有可为答主
回答量:1215
采纳率:60%
帮助的人:402万
展开全部
hi,man,您不知道return的作用么?1.返回一个指定的值(注意:Just one)2,结束程序;你输出的个数应该在函数里面输出,不然只能返回一个值,3个之中的一个值,要是你用3个函数就可以返回3个值了,但是工作量很大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanyuan源远
2013-12-30
知道答主
回答量:33
采纳率:0%
帮助的人:28.3万
展开全部
。。。
while(*m!='\n')//改为:while(*m!='\0')
。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式