标题:[求助] if和 while 的问题
只看楼主
shuiyin999
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-6-12
得分:0 
也是56。我上面的是45!!!!!你们再看看
2006-06-12 11:43
恋红尘
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-6-10
得分:0 
if(p[i]%2)只要不等于0就可以了 只要为真就可以
2006-06-12 11:49
q12qwe
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-5-23
得分:0 
i++写在while()里 和后边的语句中不一样;

while(i++ < 7)
首先 i=0;
判断0<7;
然后i++
i=1;

再执行后边的语句if(p[i]%2) ;
这时候i的值为1;
if(p[1]%2);

while(i < 7)
i=0;
判断i<7;
i值仍然是0;
再执行后边的语句if(p[i]%2) ;
if(p[0]%2);


两个表达式执行的数组元素不一样;

while(i++ < 7) p[1]->p[7];

while(i < 7) p[0]->p[6];

请指点下 我这样说对不?




2006-06-12 11:56
恋红尘
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2006-6-10
得分:0 

#include <stdio.h>
main()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i++ < 7)
{
if(p[i]%2)
{
j+=p[i];
}
}
printf("%d\n",j);
}
不等价于
include <stdio.h>
main()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i< 7)
{
if(p[i]%2)
j+=p[i];
i++;
}
printf("%d\n",j);
}
我是这么认为的
你执行了while(i++<7)后立刻执行了i=i+1这一句即等同于
include <stdio.h>
main()
{
int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
while(i< 7)
{ i++;
if(p[i]%2)
j+=p[i];

}
printf("%d\n",j);
}
而此循环进行到i=6的时候终止虽然最后i=7,当i=0第一次执行p[i]%2时候不是执行p[0]%2而是p[1]%2
此时p[1]=12,p[1]%2==0 所以不执行j+=p[i];i=1时候 执行p[2]%2这个时候为真 执行j+=p[i];依次推下去
最后结果就是13+15+17=45.

2006-06-12 12:06
wwjjtt
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-6-13
得分:0 
最后结果是45..程序功能是奇数相加,但是并没有把11加上。
2006-06-13 13:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-71548-1-1.html




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

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