用c语言编写:编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格和其他字符的个数

用c语言编写:编写一个函数,由实参传来一个字符串,统计此字符串中字母,数字,空格和其他字符的个数,在主函数中输入字符串及输出上述结果。(不使用局部变量和全局变量 )

#include <stdio.h>

#include <string.h>

int letter,number,blank,other;

void count(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]>='0'&&str[i]<='9')

number++;

else if(str[i]==' ')

blank++;

else

other++;

}

int main()

{

char a[80];

gets(a);

puts(a);

strcat(a,"\0");

letter=0;

number=0;

blank=0;

other=0;

count(a);

printf("\n%5d,%5d,%5d,%5d\n",letter,number,blank,other);  

return 0;

}

扩展资料:

C语言需要说明的是:

1、一个C语言源程序可以由一个或多个源文件组成。 

2、每个源文件可由一个或多个函数组成。

3、一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。是整个程序的入口。 

4、源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。

5、每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。结构体、联合体、枚举型的声明的“}”后要加“ ;”。

6、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

参考资料:

百度百科-c语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-26

要用一个局部变量吧。

#include <stdio.h>

int function(char *str,int n)
{
    if(str==NULL)
        return 0;
    int num = 0;
    switch(n)
    {
    case 1:/*字母数*/
        while(*str!='\0')
        {
            if(('A'<=(*str)&&(*str)<='Z' )|| ('a'<=(*str)&&(*str)<='z'))
                num++;
            ++str;
        }
        return num;
        break;
    case 2:/*数字*/
        while(*str!='\0')
        {
           if('0'<=(*str) &&(*str)<='9')
                num++;
           ++str;
        }
        return num;
        break;
    case 3:/*空格*/
        while(*str!='\0')
        {
           if((*str)==' ')
                num++;
           ++str;
        }
        return num;
        break;
    default:
        return 0;
        break;
    }
}

int main()
{
    char *str_1 = "123456QPRTY88  99  *4 %4S4Tr02 1)84ru";

    printf("字母数目:%d\n",function(str_1,1));
    printf("数字数目:%d\n",function(str_1,2));
    printf("空格数目:%d\n",function(str_1,3));
    printf("其他数目:%d\n",strlen(str_1)-function(str_1,1)-function(str_1,2)-function(str_1,3));
    return 0;
}

第2个回答  推荐于2018-05-15

若是整个函数不使用局部变量和全局变量,是不可能的。

或者说,你是指,传递参数的时候不用全局变量传参数吗?

 

附一个我的程序,使用地址(数组的首地址)做传递参数:

#include <stdio.h>
void count_number(unsigned char input_data[],unsigned char return_addr[4])
{
    unsigned char temp,i;
 
    while(*(input_data+i)!='\0')
    {
        temp=*(input_data+i);
        if((temp>=0x41 && temp<=0x5a)||(temp>=0x61 && temp<=0x7a))    return_addr[0]+=1;     // 字母
        else if(temp>=0x30 && temp<=0x39)  return_addr[1]+=1; // 数字
        else if(temp==0x20)  return_addr[2]+=1;  // 空格
        else return_addr[3]+=1;    // 其他
        i++;
    }
}
 
int main(void)
{
    unsigned char array[40]="wr\ET3\45 t/34WQr23 Y36 R/TR5 48eY/dRg ",res[4];

    count_number(array,res);
 
    printf("字母数目:%d\n",res[0]);
    printf("数字数目:%d\n",res[1]);
    printf("空格数目:%d\n",res[2]);
    printf("其他数目:%d\n",res[3]);
    return 0;
}

本回答被网友采纳
第3个回答  2013-11-26
亲 不适用局部变量你怎么统计?
相似回答