即 int num=maxn-minn; 才對
補充1: 前面的沒說對, 是缺了個括號,然後
if(num%i==0) {y=0;break} break後面需要壹個分號
妳的程序格式有點亂
補充2:
if(a[i]='\n') break; 比較操作應該是“==”
補充3:
for(i=0;i<100;i++)
{scanf("%d",&a[i]);
b[i]=1;
if(a[i]='\n') break;
j++;
}
要改為:
for(i=0;i<100;i++)
{
a[i] = getchar();
b[i]=1;
if(a[i]=='\n')
{
break;
}
j++;
}
才會有妳要的效果。
補充 4:
if(num==1||num==0) y=1;
else{
for(i=2;i<=sqrt(num);i++)
{if(num%i==0) {y=0;break}
else y=1;
}
應該改為
if(num==1||num==0) y=1;
else{y = 0;
for(i=2;i<=sqrt(num);i++)
{
if(num%i==0) {y=1;break}
else y=0;
}
現在程序有妳要的效果了,雖然淩亂,但是是壹個妳自己思路的可以正確執行的程序了
補充5:
下面就是完整的,包含了補充1到補充4的 編譯錯誤到邏輯錯誤改動的版本。
#include <stdio.h>
#include <math.h>
int main()
{
int y,a[100],b[100],num,x,j,maxn,minn,i;
j=0;
for(i=0;i<100;i++)
{
a[i] = getchar();
b[i]=1;
if(a[i]=='\n')
{
break;
}
j++;
}
for(i=0;i<=j;i++)
{
for(x=i+1;x<=j;x++)
{
if(a[i]==a[x])
{
b[i]++;
}
}
}
maxn=b[0];minn=b[0];
for(i=0;i<=j;i++)
{
if(b[i]>maxn) maxn=b[i];
if(b[i]<minn) minn=b[i];
}
num=maxn-minn;
if(num==1||num==0)
{
y=1;
}
else
{
y =0;
for(i=2;i<=sqrt(num);i++)
{
if(num%i==0)
{
y=1;break;
}
else y=0;
}
}
if(y==0) printf("Lucky Word\n%d",num);
if(y==1) printf("No Answer\n0");
}
補充6:(最後的補充)
下面是我提供的完整的程序,思路稍有不同,但是我相信程序結構很清晰,妳可參考
#include <stdio.h> //printf 聲明
#include <math.h> //sqrt 聲明
#include <memory.h> // memset 聲明
#include <ctype.h> // tolower聲明
//下面的函數判斷壹個大於0的整數是不是質數
int isPrimeNumber(int inNum) //參數需要外部保證大於等於1
{
int isPrime;
int i;
if (1 == inNum)
{
isPrime = 0;
}
else
{
isPrime = 1;
for (i = 2; i <= (int)sqrt(inNum); ++i)
{
if ((inNum % i) == 0)
{
isPrime = 0;
break;
}
}
}
return isPrime;
}
int main()
{
char characters[100];
char tempChar;
int count[26]; //只需要為26個字符分別保存壹個計數就夠了
int maxn;
int minn;
int num;
int i; //主循環變量
int wordLength; //單詞長度
memset(count, 0, 26 * sizeof(int)); //清零 count數組
//存儲不超過100個字符的單詞的每個字符
for(i = 0; i < 100;i++)
{
tempChar = (char)getchar();
if(tempChar =='\n')
{
wordLength = i;
break;
}
else
{
characters[i] = (char)tolower(tempChar);// 若是大寫,變為小寫
count[characters[i] - 'a']++; //給相應字母的計數加1
}
}
//求出最大,最小
maxn = 0;
minn = 0;
for (i = 0; i < 26; ++i)
{
if (0 == maxn)
{
maxn = count[i]; //初始化為第壹個不為0的數
}
else
{
if (count[i] > maxn)
{
maxn = count[i];
}
}
if (0 == minn)
{
minn = count[i]; //初始化為第壹個不為0的數
}
else
{
if (count[i] < minn && count[i] != 0)
{
minn = count[i];
}
}
}
num = maxn - minn;
if (num != 0 && isPrimeNumber(num))
{
printf("Lucky Word\n%d",num);
}
else
{
printf("No Answer\n0");
}
}