求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);
}
} 展开
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);
}
} 展开
3个回答
展开全部
首先你输入过一次字符串了 在声明函数中又一次输入 错误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;
}
最后 声明函数返回值太多了
给你发一个比较简单的 你看一下吧
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的代码错的一蹋糊涂,真不知该纠正哪里了,只好在你的基础上修改了一下,你需要好好的练习一下基本的程序开发
#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 );
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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;
}
可能楼下的那个代码可能更符合你想的那种样子
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询