怎样统计字符串中各字母的个数?
3个回答
展开全部
这个有点困难哦,主要是问题很简单啦.要case 26次就行了.
想了一下,要CASE来解决的话,要26个大写与26个小写,共52个CASE.下面是用指针来操作,在VC6里面测试可以通过.
#include<iostream.h>
#include <string.h>
#include <stdio.h>
const int N=50;
void main()
{
char array[N],*p;
int i,letter[52]={0},*pw;//52个存储大写与小写字母
cout<<"Input a string:"<<endl;
p=gets(array);pw=letter;//1
for(;(p-array)<int(strlen(array));pw=letter,p++)//2
if(*p>='a'&&*p<='z') (*(pw+*p-'a'))++;
else if(*p>='A'&&*p<='Z') (*(pw+26+*p-'A'))++;
for(i=0;i<52;i++)//这里输出letter[0]-letter[51],大于零个的就输出
if(i<26&&letter[i]>0) cout<<"small letter: "<<char(i+'a')<<"="<<letter[i]<<endl;
else if(letter[i]>0) cout<<"Strong letter: "<<char(i+'A'-26)<<"="<<letter[i]<<endl;
}
//1 //2是指指针从array[0]到涉猎字符串尾大写与小写的统计.加A减26等是跟据字符在ASCII中的值来计算的.数据的跨越幅度很大,指针遍历也很多不知道这样解释能不能看得懂.
想了一下,要CASE来解决的话,要26个大写与26个小写,共52个CASE.下面是用指针来操作,在VC6里面测试可以通过.
#include<iostream.h>
#include <string.h>
#include <stdio.h>
const int N=50;
void main()
{
char array[N],*p;
int i,letter[52]={0},*pw;//52个存储大写与小写字母
cout<<"Input a string:"<<endl;
p=gets(array);pw=letter;//1
for(;(p-array)<int(strlen(array));pw=letter,p++)//2
if(*p>='a'&&*p<='z') (*(pw+*p-'a'))++;
else if(*p>='A'&&*p<='Z') (*(pw+26+*p-'A'))++;
for(i=0;i<52;i++)//这里输出letter[0]-letter[51],大于零个的就输出
if(i<26&&letter[i]>0) cout<<"small letter: "<<char(i+'a')<<"="<<letter[i]<<endl;
else if(letter[i]>0) cout<<"Strong letter: "<<char(i+'A'-26)<<"="<<letter[i]<<endl;
}
//1 //2是指指针从array[0]到涉猎字符串尾大写与小写的统计.加A减26等是跟据字符在ASCII中的值来计算的.数据的跨越幅度很大,指针遍历也很多不知道这样解释能不能看得懂.
展开全部
#include<stdio.h>
#define N 50
#define SIZE 128
void input(char [],int);
void tongji(char [],int [],int,int);
void output(int [],int);
main()
{
char string[N];
int frequency[SIZE]={0};
printf("请输入长度不超过50的任意字符串,以'#'结束:\n");
input(string,N);
tongji(string,frequency,N,SIZE);
output(frequency,SIZE);
system("pause");
return 0;
}
void input(char string[],int n)
{
char ch;
int i=0;
scanf("%c",&ch);
while(ch!='#'){
string[i]=ch;
i++;
scanf("%c",&ch);
}
string[i]='\0';
}
void tongji(char string[],int frequency[],int n,int size)
{
int i=0;
while(string[i]!='\0'){
frequency[string[i]]++;
i++;
}
}
void output(int frequency[],int size)
{
int i;
i='A';
while(i>='A'&&i<='Z'){
if(frequency[i]!=0){
printf("%d个%c\n",frequency[i],(char)i);
}
i++;
}
i='a';
while(i>='a'&&i<='z'){
if(frequency[i]!=0){
printf("%d个%c\n",frequency[i],(char)i);
}
i++;
}
}
#define N 50
#define SIZE 128
void input(char [],int);
void tongji(char [],int [],int,int);
void output(int [],int);
main()
{
char string[N];
int frequency[SIZE]={0};
printf("请输入长度不超过50的任意字符串,以'#'结束:\n");
input(string,N);
tongji(string,frequency,N,SIZE);
output(frequency,SIZE);
system("pause");
return 0;
}
void input(char string[],int n)
{
char ch;
int i=0;
scanf("%c",&ch);
while(ch!='#'){
string[i]=ch;
i++;
scanf("%c",&ch);
}
string[i]='\0';
}
void tongji(char string[],int frequency[],int n,int size)
{
int i=0;
while(string[i]!='\0'){
frequency[string[i]]++;
i++;
}
}
void output(int frequency[],int size)
{
int i;
i='A';
while(i>='A'&&i<='Z'){
if(frequency[i]!=0){
printf("%d个%c\n",frequency[i],(char)i);
}
i++;
}
i='a';
while(i>='a'&&i<='z'){
if(frequency[i]!=0){
printf("%d个%c\n",frequency[i],(char)i);
}
i++;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用C语言写的你要不要
要的话我再来
要的话我再来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询