求教大神一道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;
} 展开
代码:
#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;
} 展开
4个回答
展开全部
你的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;
}
展开全部
#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;
}
望取纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hi,man,您不知道return的作用么?1.返回一个指定的值(注意:Just one)2,结束程序;你输出的个数应该在函数里面输出,不然只能返回一个值,3个之中的一个值,要是你用3个函数就可以返回3个值了,但是工作量很大
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
。。。
while(*m!='\n')//改为:while(*m!='\0')
。。。
while(*m!='\n')//改为:while(*m!='\0')
。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询