求解一道C语言程序题。

2025-03-01 05:01:14
推荐回答(4个)
回答1:

classify函数中的letter,space,number都是只在函数体内有效,在主函数内无法得到返回的值的,所以你那样写是无效的。而且在调用classify之前没有声明该函数,这是错误的,修改如下:
#include
#include
void classify(char *, int *, int *, int *, int *);
int main()
{
char str[80];
int letter,space,number,other;
letter=space=number=other=0;
printf("请输入一段文字:\n");
gets(str);
classify(str,&letter,&number,&space,&other);
printf("字母的个数为:%3d\n",letter);
printf("数字的个数为:%3d\n",number);
printf("空格的个数为:%3d\n",space);
printf("其他字符个数为:%3d\n",other);
return 0;
}

void classify(char *str, int *letter, int *number, int *space, int *other)
{

while(*str!=0)
{
if((*str>='a'&&*str<='z')||(*str>='A'&&*str<='Z'))
(*letter)++;
else if(*str==32)
(*space)++;
else if(*str>='0'&&*str<='9')
(*number)++;
else
(*other)++;
str++;
}
}

我运行过了 是正确的
若有不明白的 请继续追问

回答2:

修改后。

#include
#include
int letter = 0;
int number = 0;
int space = 0;
int other = 0;
int main()
{
char str[80];
int i=0;
void classify(char str[80]);

printf("请输入一段文字:");
do
{
str[i++] = getchar();
}while(str[i-1] != '\n');
classify(str);
printf("字母的个数为:%3d\n",letter);
printf("数字的个数为:%3d\n",number);
printf("空格的个数为:%3d\n",space);
printf("其他字符个数为:%3d\n",other);
return 0;
}

void classify(char str[80])
{
int i;
for(i=0;str[i]!='\n';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++;
else if(str[i]==32)
space++;
else if(str[i]>='0'&&str[i]<='9')
number++;
else
other++;
}
}

回答3:

#include
#include
void classify(char str[]);
int letter = 0;
int number = 0;
int space = 0;
int other = 0;

int main()
{
char str[80];

printf("请输入一段文字:");
fgets(str,sizeof(str),stdin);
classify(str);
printf("字母的个数为:%3d\n",letter);
printf("数字的个数为:%3d\n",number);
printf("空格的个数为:%3d\n",space);
printf("其他字符个数为:%3d\n",other);
return 0;
}

void classify(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
letter++;
else if(str[i]==32)
space++;
else if(str[i]>='0'&&str[i]<='9')
number++;
else
other++;
}
}

改好了 ,感觉你得代码风格好乱,新手吧
给分吧

回答4:

分类统计各种字符个数的程序.字母数 letter, 空格数 space, 数字 number, 其他other.
分类统计得到结果之后,按指定格式打印出来.

你没有接受输入,直接分类,则str数组内容随机,不可知. 可能不包含'\0', 甚至无法结束.
你应该先接受一个输入.
gets(str);
然后调用classify函数