输入字符串,统计各小写字母出现的频次,输出出现频次最高的2个字母
#include <stdio.h>
#include <string.h>
int main()
{
int i, fre[26] = {0};
char str[1024];
gets(str);
for(i = 0;i < strlen(str);i++){
if(str[i] >= 'a' && str[i] <= 'z'){
fre[str[i] - 'a'] ++;
}
}
int max1 = fre[0],max2 = fre[0],m1 = 0,m2 = 0;
for(i = 0;i < 26;i++){
printf("%c:%d\n",i +'a',fre[i]);
if(fre[i] >= max1){
max2 = max1;
m2 = m1;
max1 = fre[i];
m1 = i;
}else if(fre[i] > max2){
max2 = fre[i];
m2 = i;
}
}
printf("%c %c",m1 + 'a', m2 + 'a');
return 0;
}
/*
输入字符串,统计各小写字母出现的频次,
输出出现频次最高的2个字母
*/
#include <stdio.h>
#include <string.h>
int main(){
char str[1024] = {};
scanf("%s", &str);
int num[26] = {0};
int i = 0;
while (str[i]!='\0') {
switch (str[i])
{
case 'a':
num[0]++;
break;
case 'b':
num[1]++;
break;
case 'c':
num[2]++;
break;
case 'd':
num[3]++;
break;
case 'e':
num[4]++;
break;
case 'f':
num[5]++;
break;
case 'g':
num[6]++;
break;
case 'h':
num[7]++;
break;
case 'i':
num[8]++;
break;
case 'j':
num[9]++;
break;
case 'k':
num[10]++;
break;
case 'l':
num[11]++;
break;
case 'm':
num[12]++;
break;
case 'n':
num[13]++;
break;
case 'o':
num[14]++;
break;
case 'p':
num[15]++;
break;
case 'q':
num[16]++;
break;
case 'r':
num[17]++;
break;
case 's':
num[18]++;
break;
case 't':
num[19]++;
break;
case 'u':
num[20]++;
break;
case 'v':
num[21]++;
break;
case 'w':
num[22]++;
break;
case 'x':
num[23]++;
break;
case 'y':
num[24]++;
break;
case 'z':
num[25]++;
break;
default:
break;
}
i++;
}
int max1=num[0], max2=num[1],temp;
int i1=0, i2=1,it;
for (int i = 0; i < 26; i++)
{
if (num[i] > max2)
{
max2 = num[i];
i2 = i;
}
if (max2>max1)
{
temp = max1;
max1 = max2;
max2 = temp;
it = i1;
i1 = i2;
i2 = it;
}
}
switch (i1)
{
case 0:
printf("a");
break;
case 1:
printf("b");
break;
case 2:
printf("c");
break;
case 3:
printf("d");
break;
case 4:
printf("e");
break;
case 5:
printf("f");
break;
case 6:
printf("g");
break;
case 7:
printf("h");
break;
case 8:
printf("i");
break;
case 9:
printf("j");
break;
case 10:
printf("k");
break;
case 11:
printf("l");
break;
case 12:
printf("m");
break;
case 13:
printf("n");
break;
case 14:
printf("o");
break;
case 15:
printf("p");
break;
case 16:
printf("q");
break;
case 17:
printf("r");
break;
case 18:
printf("s");
break;
case 19:
printf("t");
break;
case 20:
printf("u");
break;
case 21:
printf("v");
break;
case 22:
printf("w");
break;
case 23:
printf("x");
break;
case 24:
printf("y");
break;
case 25:
printf("z");
break;
default:
break;
}
printf("\n");
switch (i2)
{
case 0:
printf("a");
break;
case 1:
printf("b");
break;
case 2:
printf("c");
break;
case 3:
printf("d");
break;
case 4:
printf("e");
break;
case 5:
printf("f");
break;
case 6:
printf("g");
break;
case 7:
printf("h");
break;
case 8:
printf("i");
break;
case 9:
printf("j");
break;
case 10:
printf("k");
break;
case 11:
printf("l");
break;
case 12:
printf("m");
break;
case 13:
printf("n");
break;
case 14:
printf("o");
break;
case 15:
printf("p");
break;
case 16:
printf("q");
break;
case 17:
printf("r");
break;
case 18:
printf("s");
break;
case 19:
printf("t");
break;
case 20:
printf("u");
break;
case 21:
printf("v");
break;
case 22:
printf("w");
break;
case 23:
printf("x");
break;
case 24:
printf("y");
break;
case 25:
printf("z");
break;
default:
break;
}
return 0;
}
#include "stdio.h"
void main()
{
int i,j,k,temp,a[26][2];/26表示26个序号从1到26/
char b[10];/假设用户只输入10各字符,可以更改/
for(i=0;i<10;i++)/用户输入字符/
{
scanf("%c",&b[i]);
}
for(j=0;j<26;j++)/定义数组j0对应的的小写字母的ASCll码,j1对应小写字母的数量/
{
a[j][0]=j+97;
a[j][1]=0;
}
for(j=0;j<26;j++)/统计用户输入字母的数量/
{
for(i=0;i<10;i++)
{
if(a[j][0]==b[i])
{
a[j][1]=a[j][1]+1;
}
}
}
for(k=0;k<26;k++)/冒泡数列,求出数量最多的两个字母/
{
for(j=0;j<26-k;j++)
{
if(a[j][1]<a[j+1][1])
{
temp=a[j][0];
a[j][0]=a[j+1][0];
a[j+1][0]=temp;
}
}
}
printf("zui duo de 2 zi mu is %c and %c",a[0][0],a[1][0]);
}
代码呢?
没有看到代码,建议将字符串转化为char[]数组,然后根据ASCII码去记录数量,找到最多的两个