| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 699 人关注过本帖
标题:for循环遇到困难
只看楼主 加入收藏
ak47my
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:229
专家分:0
注 册:2005-12-2
收藏
 问题点数:0 回复次数:9 
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 。。高人指点。。。。

搜索更多相关主题的帖子: include 
2006-01-11 20:25
大法师之杖
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-1-11
收藏
得分:0 

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

2006-01-11 20:54
ak47my
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:229
专家分:0
注 册:2005-12-2
收藏
得分:0 


多谢多谢。。。。。脑子塞住了我。。呵呵!!马上考试了。我在报佛脚。。。阿门

提问:回答: 不提问怎么回答? 提问不清楚怎么回答?
2006-01-11 21:14
zhangdongy
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-1-11
收藏
得分:0 
我有一点疑问,望指教!
这个程序的每个数据都符合条件,为什么输出6,而程序中也没有出现要输出最小的数据,望指教!
2006-01-12 01:52
blackhold
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2005-3-21
收藏
得分:0 

在执行到k=4时,*(p+k)也就到了6的地址,k再下去就大于4不再循环了。。当然会输出6

2006-01-12 08:17
BugEyes
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2006-1-10
收藏
得分:0 
if ((*(p+k))<n)
n=*(p+k);
这是关键

学前班校长,个人blog:http://bugeyes.blog.
2006-01-12 11:39
小悟空
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2005-5-14
收藏
得分:0 
明显当*(p+k)也就是6小于7的时候把6给n,最后当然是6了~~~!!!

2006-01-12 13:33
控制0and1
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2006-1-12
收藏
得分:0 

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


2006-01-13 00:16
sn_1021
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-28
收藏
得分:0 
n是也是个变量它的值也随程序运行再改变。

2006-01-13 10:24
wukaijian
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-1-15
收藏
得分:0 

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

2006-01-15 12:20
快速回复:for循环遇到困难
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030362 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved