本人菜鸟,大佬轻喷(这份代码调试了2个小时,555
下为全AC代码
//思路
//接受一个字符串存入数组
//创建一个数组char[26]
// 读取每个字符的ASCII码
//然后将[ascii-1]处的值加一
//遍历一次ascii数组,获得此时的最多次数与最少次数
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <string.h>
int prime[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29,
31, 37, 41, 43, 47, 53, 59, 61, 67, 71,73, 79 ,83 ,89 ,97 };
int main(void) {
char str[99];
char* p = str;
char* p2;
fgets(str,99,stdin);
p2 = strchr(str, '\n');
*p2 = '\0';
char NumOfchar[26]={0};//初始化
while (*p)
{
NumOfchar[*p - 97]++;
p++;
}
short max=0, min=1,first=0;
for (size_t i = 0; i < 26; i++)
{
if (NumOfchar[i] > max) //判断最大值
max = NumOfchar[i];
if (NumOfchar[i] != 0)
{
if (first == 0) {//储存第一个非零值
min = NumOfchar[i];
first = 1;
}
if (NumOfchar[i] < min)//比较每一个非零值与min的大小
min = NumOfchar[i];
}
}
int status= 0;//用于判断是max-min是否是素数
for (size_t i = 0; i < 25; i++)
{
if (max - min == prime[i]) {
status = 1;
break;
}
}
if (status == 1) {
printf("Lucky Word\n%d",max -min);
}
else
{
printf("No Answer\n0");
}
getchar();
return 0;
}