讨论版

分享思路,答疑解惑,一起把题做明白。
Problem 1124 / 帖子详情

错误百分之十 苦思冥想不知道为什么

2 201809140130 · 2019-11-13 18:32:14 · 2 条回复
2
201809140130 2019-11-13 18:32:14 #1
#include <stdio.h>
int main() {
char a[120], b;
int i, max = 0, min=120 , sum = 0, n, flag = 0;
gets(a);

for (b = 'a'; b <= 'z'; b++) {
for (i = 0; a[i] != '\0'; i++) {
if (a[i] == b)
sum++;
}
if (sum != 0) {
if (sum > max)
max = sum;
if (sum < min)
min = sum;
}
sum = 0;
}
n = max - min;
if(n<2)
printf("No Answer\n0");
else
{
for (i = 2; i < n; i++)
if (n % i == 0) {
flag = 1;
break;
}
if (flag == 0)
printf("Lucky Word\n%d", n);
else
printf("No Answer\n0");
}
return 0;
}
2
201803140220 2019-11-13 19:53:34 #2
在大的 while() 循环时要注意元素的初值
比如说你的max,min在经过第一次输入时,已经发生了改变
因此在第二次循环时未初始化,因此对后面的答案造成了干扰


但似乎你已经过了。。。
不过这里还是建议在需要用到元素时再进行定义,赋值,以避免这种问题的出现
登录后即可参与回复 去登录