CSDN比较少上传文章,欢迎关注我的掘金账号:杨灿就是杨火山,一起学习,一起交流~
题目描述
编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
输入
一行字符串
输出
统计数据,4个数字,空格分开。
样例输入
!@#$%^QWERT 1234567
样例输出
5 7 4 6
内心os:
题目不难但,但你可能会想,一个函数不是只能有一个返回值吗,这要我输出多个,咋整啊!!!
哈哈哈其实他只是叫你输出就好不是叫你一定要定义函数返回多个值,我们可以定义一个void函数在里面执行打印操作就好啦!!!
#include<stdio.h>
void tongji(char str[]);
int main()
{
char str[1000]={'\0'};
gets(str);
tongji(str);
return 0;
}
void tongji(char str[])
{
int zm=0,sz=0,kg=0,qt=0;
for(int i=0;str[i]!='\0';i++)
{
if('a'<=str[i]&&str[i]<='z')
zm++;
else if('A'<=str[i]&&str[i]<='Z')
zm++;
else if('0'<=str[i]&&str[i]<='9')
sz++;
else if(str[i]==' ')
kg++;
else
qt++;
}
printf("%d %d %d %d \n",zm,sz,kg,qt);
}
但是要是他把题目改成:
编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。
这时候就一定要用到返回多个值的办法了TMT
#include<stdio.h>
void tongji(char str[],int *zm,int *sz,int *kg,int *qt);
/*加了*号后直接地址传入地址传出*/
int main()
{
char str[1000]={'\0'};
int zm=0,sz=0,kg=0,qt=0;
gets(str);
tongji(str,&zm,&sz,&kg,&qt);
/*&zm地址传入*/
printf("%d %d %d %d \n",zm,sz,kg,qt);
return 0;
}
void tongji(char str[],int *zm,int *sz,int *kg,int *qt)
{
for(int i=0;str[i]!='\0';i++)
{
if('a'<=str[i]&&str[i]<='z')
(*zm)++;
/*值得注意的操作*/
else if('A'<=str[i]&&str[i]<='Z')
(*zm)++;
else if('0'<=str[i]&&str[i]<='9')
(*sz)++;
else if(str[i]==' ')
(*kg)++;
else
(*qt)++;
}
}
记录知识,传递快乐~
如果我的总结对你有帮助,请给我点个赞,你的鼓励是我持续记录的一大动力~
如果文章中有错误,请多包涵,欢迎在评论中指出~