实验五(2)统计字符个数
仅供参考,勿直接copy !
方法一:
void count(char *p, int *c) //指针可以作为数组名使用
{
int i=-1;
while(p[++i]) //字符串的最后一位是0,于是当p[i]为0时,统计就结束了
{
if(p[i]>='a'&&p[i]<='z'||p[i]>='A'&&p[i]<='Z')
c[0]++;
else if(p[i]>='0'&&p[i]<='9')
c[1]++;
else if(p[i]==' ')
c[2]++;
else
c[3]++;
}
}
int main(void)
{
char a[100]; //数组a用来输入字符串, 同学可自行考虑使用动态数组
int num[4]={0}; //num[0]存放字母个数,num[1]存放数字字符个数,num[2]存放空格个数,
//num[3]存放其它字符个数
printf("please input a string<100 characters\n");
gets(a); //若输入字符串越界,由同学自行判断
count(a,num); //a传给p,num传给c,这样在count()函数中对p[i]的操作就是对a[i]的操作,//对c[i]的操作就是对num[i]的操作
printf("alphabet: %d, digit: %d, space: %d, others: %d",num[0],num[1],num[2],num[3]);
getch();
return 0;
}
方法二:全局变量编程法
char a[100]; //a数组存放字符串
int letter,space,digit,other;//分别代表字母、空格、数字和其他字符的个数void count(void)
{
int i;
for(i=0;a[i];i++)
{
if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z') letter++;
else if(a[i]==' ') space++;
else if(a[i]>='0'&&a[i]<='9')digit++;
else other++;
}
}
int main(void)
{
int i;
printf("please input 3 strings<100 characters \n");
gets(a);
count();
printf("\nletter=%d,space=%d,digit=%d,other=%d\n",letter,space,digit,other);
请输入长度介于05之间的字符串getch();
return 0;
}
方法三:
#define N 100
long count(char *p) //用一个变量l返回不同字符的个数
{
int i=-1;
long l=0,l1=N,l2=N*N,l3=N*N*N;
while(p[++i])
{
if(p[i]>='a'&&p[i]<='z'||p[i]>='A'&&p[i]<='Z')
l++; //字母的个数
else if(p[i]>='0'&&p[i]<='9')
l+=l1; //N的个数就是数字字符的个数else if(p[i]==' ')
l+=l2; //N2的个数就是空格的个数else
l+=l3; //N3的个数就是其它字符的个数
}
return l;
}
int main(void)
{
char a[N];
long n;
printf("please input a string<100 characters :\n");
gets(a);
n=count(a);
printf("alphabet: %d,",n%N);
n/=N;
printf("digit: %d,",n%N);
n/=N;
printf("space: %d,",n%N);
n/=N;
printf("others: %d",n);
getch();
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论