#include <stdio.h>
#include <stdlib.h>
main ()
{
int a[10],k,x;
for (k=1;k<=10;k++)
a[k]=rand ()%101;
for (k=1;k<=10;k++)
printf ("%d\n",a[k]);
printf ("\n");
scanf ("%d",&x);
for (k=1;k<=10;k++)
{
if (a[k]==x)
{
printf ("%d",k);
goto end;
}
if (a[k]!=x)
printf ("不存在");
break;
}
end:printf ("\n");
}
关键是RAND 的那一句,每一次运行得到的随机数完全一样,请问有何错误?
字数有限制,哎
第一个问题我能理解你的意思,你是希望如果a[k]==x那么输出这个k,如果找遍了这10个a[k]都没有发现相等的值,才会在最后输出"不存在"。但是你的表述方法是每找到一个数,就去试一下他是否相等,然后就输出这个数跟x是否相等,如果相等的话就跳出,如果不相等的话也跳出——你的代码根本不给第二个数机会,只有a[1]有机会被执行,因为a[1]被测试后不管结果如何,它都跳出了。
point是如何找到“如果找不到相等的值,那就要让十个数都被测试过才跳出”的方法。
for(a;b;c)的执行顺序是ab——>{}内程序——>c;c并不是在ab后面被执行的。如果这10个数字里面有x了,那k就不会继续变大,k肯定小于11,如果第十个数字是x,那么{}内被break掉,直接结束程序,不会再执行k++,k也就=10,不会到11。如果第十个数字仍然不是x,那么{}内执行完后,继续执行第三个部分K++,这时候k就等于10+1了。变成11了。
所以如果k==11就说明我十个数字都找遍了也没看见相等的数。
我写的else;只是一个多余的语句,删除掉也可以,不起作用。
系统的错误报告总是有的,那句经典名言怎么说来着的:“在我的电脑上正常的”……
高手,讲的很透彻,佩服!