您的位置:首页 > 其它

统计字符串中各种字符的个数----函数//指针做法和非指针做法

2017-12-30 21:20 344 查看
题目描述

编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 只要结果,别输出什么提示信息。

输入

一行字符串

输出

统计数据,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)++;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 指针
相关文章推荐