当前位置: 代码迷 >> C语言 >> for循环遇到困难
  详细解决方案

for循环遇到困难

热度:184   发布时间:2006-01-11 20:25:00.0
for循环遇到困难

#include<stdio.h>
main()
{
int a[]={9,8,7,6,7,8,9};
int n=10,k,*p;
p=a;
for(k=0;k<=4;k++)
if ((*(p+k))<n)
n=*(p+k);

printf("%d",n);
}


为什么输出的是6。。。我算出来是7啊

我把我的思路写出来。帮我看看我哪里错了啊

------------------------------------------------
第一次执行循环

当k=0时。。 *(p+k) = *(p+0) = (a的首地址) =9

9<10

所以执行下面的 n=*(p+k);

n = 9

接下来就是执行4次。。指针往后移4格 就是7的上面。。。为什么会是6啊

我用循环把5次全输出来,,,结果都是6

纳闷ing 。。高人指点。。。。


----------------解决方案--------------------------------------------------------

因为n变成6后是最小值了,当然无法变成7了.


----------------解决方案--------------------------------------------------------


多谢多谢。。。。。脑子塞住了我。。呵呵!!马上考试了。我在报佛脚。。。阿门
----------------解决方案--------------------------------------------------------
我有一点疑问,望指教!
这个程序的每个数据都符合条件,为什么输出6,而程序中也没有出现要输出最小的数据,望指教!

----------------解决方案--------------------------------------------------------

在执行到k=4时,*(p+k)也就到了6的地址,k再下去就大于4不再循环了。。当然会输出6
----------------解决方案--------------------------------------------------------
if ((*(p+k))<n)
n=*(p+k);
这是关键
----------------解决方案--------------------------------------------------------
明显当*(p+k)也就是6小于7的时候把6给n,最后当然是6了~~~!!!
----------------解决方案--------------------------------------------------------

是的,其实这个程序就是在求最小值!
写程序,要有时间的话,用F8单步执行一下,问题就明白了!
试试看1


----------------解决方案--------------------------------------------------------
n是也是个变量它的值也随程序运行再改变。
----------------解决方案--------------------------------------------------------

呵呵.....看别人的程序当然可以知道自己到什么境界了,但也是最的.


----------------解决方案--------------------------------------------------------