我这么写都能编错==

#include
#include
#include
using namespace std;
bool prime(int x);

int main()
{
    string hyper;
    int a[26]={0};
        int maxn=0,minn=9999;

    cin>>hyper;
    for(int i=0;ilength();i++)
        a[hyper[i]-'a']+=1;
    for(int i=0;i<26;i++)
    {
        if(maxif(min>a[i]&&a[i]!=0)
           min=a[i];
    }
    if(prime(maxn-minn))
       cout<<"Lucky Word"<else 
            cout<<"No Answer"<0<return 0;
}

bool prime(int x)
{
     if(x<2)
        return false;
     else
        {
         for(int i=2;i<=sqrt(x);i++)
         {
             if(x%i==0)
                return false;
          }
         }
         return true;
}

【截图1】

img


题目描述
【截图2】

img


结果


#include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <math.h>
 int fun(const void *a,const void *b)//大到小排序
 {
    return *(int*)b-*(int*)a;
 }
 int prime(int x) //是合数返回0,不是返回1
 {
     int i,l;
     if(x==||x==) return ;
     else
     {
         l=sqrt(x);
         for(i=;i<=l;i++)
             if(x%i==) return ;
                 return ;
     }
 }
 int main()
 {
     char a[];
     int i,j=;//循环
     int b[];//存储每个字母出现的次数
     int c[];//备份
     int maxn,minn;//最大最小
     for(i=;i<;i++)
     {
         b[i]=;//初始化、清零
     }
     //freopen("word.in","r",stdin);
     //freopen("word.out","w",stdout);
     gets(a);
     for(i=;i<strlen(a);i++)//统计每个字母出现的次数
     {
         b[a[i]-]++;
     }
     for(i=;i<;i++)
     {
         if(b[i]!=)//不是0,存入c数组
         {
             c[j]=b[i];
             j++;
         }
     }
     qsort(c,j,sizeof(int),fun);
     j--;
     maxn=c[];
     minn=c[j];
     if(prime(maxn-minn)==) printf("Lucky Word\n%d\n",maxn-minn);
     else if(prime(maxn-minn)==)printf("No Answer\n%d\n",);
     return ;
 }

你定义的是minn
int maxn=0,minn=9999;
第20行,你用的是min,少一个n
if(min>a[i]&&a[i]!=0)