编写一个C++算法frequency,统计输入的一个字符串中各种不同字符出现的频度

2024-12-25 16:02:24
推荐回答(1个)
回答1:

有注释,自己看,可续问。main中的char* string;是声明字符指针而并非字符串,要改成char string[100];
//#include "stdafx.h"//vc++6.0加上这一行.
#include
using namespace std;
void frequency(char *str){
char ch[2][100]={0};//要改成ch[2][100]
int i,j;
for(i=0;i<96;ch[0][i]=32+i++);//加这一句初始化数组ch[0]
for(i=0;str[i]!='\0';i++){
for(j=0;ch[0][j]!='\0';j++)//不初始化,ch[0][j]!='\0'就不能满足
if(str[i]==ch[0][j])
ch[1][j]++;
//else{//这几行就用不着了
// ch[0][j]=str[i];
// ch[1][j]++;
//}
}
cout<<"频数统计如下:"< for(int k=0;ch[0][k]!='\0';k++)//要改成ch[0][k]
if(ch[1][k])//限制未出现的字符输出
cout<}
/*以上是基本按你的思路改的。如果完全按你的思路,看下面的函数,控制复杂一些*/
void frequency(char *str){
char ch[2][100]={0};
int i,j;
ch[0][0]=127;//用这一句先让j的循环转起来
for(i=0;str[i]!='\0';i++){
for(j=0;ch[0][j]!='\0';j++)
if(str[i]==ch[0][j]){
ch[1][j]++;
break;
}
if(ch[0][j]==0){
ch[0][j]=str[i];
ch[1][j]=1;
}
}
cout<<"频数统计如下:"< for(i=1;ch[0][i];i++)
cout<}
void main(void){
char string[100];
cout << "请输入一个长度不大于100的字符串:"< cin >> string;
frequency(string);
}