用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、标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。
参考资料:
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;
}
若是整告者宽个函数不使用局部变量和全局变量,是嫌谨不可能的。
或者说,你是指,传递参数的时候不用全局变量传参数吗?
附一个我的程序,使用地址(数组的首地址)做传递参数:
#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;
}
2013-11-26