/*
描述
笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!
这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。
输入
第一行数据N(0<N<100)表示测试数据组数。
每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
输出
每组测试数据输出共两行,第一行是一个字符串,假设输入的的单词是Lucky Word,那么输出“Lucky Word”,否则输出“No Answer”;
第二行是一个整数,如果输入单词是Lucky Word,输出maxn-minn的值,否则输出0
*/
#include <stdio.h>
#include <string.h>
int main() {
// insert code here...
char str[98]; //长度小于100的字符串
printf("请输入一个字符串:");
scanf("%s",str);
if (strcmp(str,"") == 0) {
printf("No Answer!\n");
}
char str1[100];
strcpy(str1, str);
int i1 = 0; //ERT'\0'
while(str[i1] != '\0') {
i1++;
}
int n = i1; //str中元素的个数
// printf("字母总数n = %d\n",n);
// int n = (int)strlen(str); //元素的个数
for (int i = 0; i < n; i++) {
for (int j = 0 ; j < n - i - 1; j++) {
if(str[j] > str[j+1]){
char temp; //临时字符
temp = str[j];
str[j] = str[j+1];
str[j+1] = temp;
}
}
} //对str的元素进行排序
// printf("%s\n",str); //打印排序之后的str字符串
int i = 0;
int j = 1;
int a[52];
char save[52];//存储元素数组
memset(a,0,52);
memset(save,0,52); //对数组中所有元素置零
// printf("************\n");
// for (int i = 0 ; i < 52; i++) {
// printf("%d\n",a[i]);
// }
// printf("************\n"); //测试是否置零
/*
对输入字符串每个字母出现的次数进行统计,
同时记录该字母对应的次数
*/
int k = 0;
while(i <= 52){
while (str[i] == str[i+1]) {
j++; //第i个元素出现的次数
i++; //第i个元素
}
if (str[i] == '\0') {
break;
}
save[k] = str[i];
a[k] = j;
j = 1;
k++;
i++;
} // 最终的k++就是元素字母的种类数!
// printf("所输入字符串字母的种数是:%d\n",k);
// for (int i = 0; i < k; i++) {
// printf("%d,%c\n",a[i],save[i]);
// }
//对a[]排序
for (int i = 0; i < k; i++) {
for (int j = 0 ; j < k - i - 1; j++) {
if (a[j] < a[j+1]) {
int tep = a[j];
a[j] = a[j+1];
a[j+1] = tep;
char c = save[j];
save[j] = save[j+1];
save[j+1] = c;
}
}
}
int Max = a[0]; //字母出现的最大次数
// char Max_char = save[0]; //出现次数最多的字母
int Min = a[k-1]; //字母出现的最小次数
// char Min_char = save[k-1]; //出现次数最少的字母
// printf("*****************\n");
// for (int i = 0; i < k; i++) {
// printf("%d\n",a[i]);
// }
//
// printf("出现次数最多的字母是:%c,其出现次数是:%d\n",Max_char,Max);
// printf("出现次数最少的字母是:%c,其出现次数是:%d\n",Min_char,Min);
int luckyNumber = Max - Min;
// printf("******************\n");
// printf("******************\n");
printf("输入的单词是:%s\n",str1);
printf("luckynumber is %d\n",luckyNumber);
return 0;
}
尚待解决的问题:
如果输入的字符串有空格该如何处理?
例如:lucky word