问题描述:
1.问题描述
一个名字用一个漂亮度来衡量,名字均是字母组成,不区分大小写,字母‘A’~‘Z’每个字母1~26的漂亮度,字母的漂亮数值不定,名字最大的漂亮值作为名字的漂亮度。
2.题目分析
字符串处理问题,字母的漂亮值不定,所以根据字母出现次数,次数越多的则为大的漂亮值
分五个步骤 1.读取字符串放在二维数组中 2.对字符大小写归一化 3.对重复字符进行统计 4.根据出现次数多少 排序 5.计算
#include<stdio.h>
#include<string.h>
#define MAX 100
int CaulatBeauty(char *name);
int main(void)
{
char ShuRu[MAX][MAX];
char ab[100];
int Num=0,Num2;
int i=0,j;
scanf("%d",&Num);// 空格 在输入界面是截断符号
Num2=Num;
while(Num>0)
{
scanf("%s",ShuRu[i++]);
Num--;
}
for(i=0;i<Num2;i++)
printf("%d\n",CaulatBeauty(ShuRu[i]));
/*
for(j=0;j<i;j++)
printf("%s\n",ShuRu[j]);
system("pause");
*/
}
int CaulatBeauty(char *name)
{
int Beauty=0,len,i,j,temp,max=26;
int a[100]={0};
len=strlen(name);
for(i=0;i<len;i++)
{
if(name[i]>'Z')//小写转大写
name[i]-=32;
a[name[i]]++;//统计重复字符
}
for(i=0;i<100;i++)
for(j=1;j<100-i;j++)
if(a[j-1]<a[j])
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
for(i=0;i<27;i++)
{
Beauty+=(a[i]*max);
max--;
}
return Beauty;
}