求C语言大神帮我看看哪错了,没语法错误但是运行不出来正确答案。。同级字母数字空格和其他字符的个数。

#include<stdio.h>voidmain(){inttj(chara[],intnumber,intletter,intblank,intother);char... #include<stdio.h>
void main()
{
int tj(char a[],int number,int letter,int blank,int other);
char s[10];
int number;int letter;int blank;int other;
scanf("%s",&s);
printf("number=%d,letter=%d,blank=%d,other=%d\n",tj(s,number,letter,blank,other));
}
int tj(char a[],int number,int letter,int blank,int other)
{
a[10];
char c;
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')number++;
else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))letter++;
else if(c==' ')blank++;
else other++;
return(number,letter,blank,other);
}
}
展开
 我来答
熊猫级教父
2014-12-09 · 超过34用户采纳过TA的回答
知道答主
回答量:88
采纳率:0%
帮助的人:49.7万
展开全部
首先你输入过一次字符串了 在声明函数中又一次输入 错误1
最后 声明函数返回值太多了
给你发一个比较简单的 你看一下吧
#include<stdio.h>
int main()
{
char c;
int letters=0,space=0,digit=0,other=0;
printf("请输入一个字符:\n");
while((c=getchar())!='\n')
{
if(c>='a' &&c<='z'||c>='A'&&c<='Z')
letters++;
else if (c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
other++;
}
printf("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n",letters,space,digit,other);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
推荐于2016-01-01 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6405万
展开全部

你的代码错的一蹋糊涂,真不知该纠正哪里了,只好在你的基础上修改了一下,你需要好好的练习一下基本的程序开发

#include<stdio.h>
void main()
{
int number=0, letter=0,blank=0, other=0 ;
char c;
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')number++;
else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))letter++;
else if(c==' ')blank++;
else other++;
}
printf("number=%d,letter=%d,blank=%d,other=%d\n",number,letter,blank,other );
}
追问
谢谢,这是到作业题要求在主函数中输入,输出。。。另写一个函数统计。。。
追答
#include<stdio.h>
void tj( char s[], int *n, int *l, int *b, int *o) //这里要传指针才能带回去数据
{
int i;
char c;
for( i=0;s[i];i++ )
{
c=s[i];
        if(c>='0'&&c<='9')(*n)++;
        else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))(*l)++;
        else if(c==' ')(*b)++;
        else (*o)++;
}
}
void main()
{
    int number=0, letter=0,blank=0, other=0 ;
char s[100];
gets(s);
tj(s, &number, &letter, &blank, &other );
    printf("number=%d,letter=%d,blank=%d,other=%d\n",number,letter,blank,other );
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2014-12-09 · TA获得超过103个赞
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:158万
展开全部
 return(number,letter,blank,other);//逗号表达式,只返回了other的值

C语言没有多返回,要想返回多个值的话,可以通过函数参数或者数组结构体什么的(当然是从堆里面申请的空间,其实就是返回一个指针)

追问
那应该怎么返回呢,把4个数同时返回出来。。。求教。。。
追答
#include<stdio.h>

int tj(int* number,int* letter,int* blank,int* other);

int main()
{
char s[10];
int number=0;
int letter=0;
int blank=0;
int other=0;
tj(&number, &letter, &blank, &other);
printf("number=%d,letter=%d,blank=%d,other=%d\n", number,letter,blank,other);

return 0;
}
int tj(int *number,int *letter,int *blank,int *other)
{
char c;
while((c=getchar())!='\n')
{
if(c>='0'&&c<='9')
(*number)++;
else if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
(*letter)++;
else if(c==' ')
(*blank)++;
else 
(*other)++;
}
return 0;
}

可能楼下的那个代码可能更符合你想的那种样子

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式