| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1078 人关注过本帖
标题:[问题已解决][求助]关于退出循环
只看楼主 加入收藏
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
结帖率:100%
收藏
 问题点数:0 回复次数:22 
[问题已解决][求助]关于退出循环

下面程序的输出结果是
#include <stdio.h>
main()
{char *s="121" ;
int k=0,a=0,b=0;
do { k++;
if(k%2==0){a=a+s[k]-'0'; countinue;}
b=b+s[k]-'0';a=a+s[k]-'0';
}
while(s[k+1]);
printf("k=%d a=%d b=%d\n",k,a,b);
}

书上答案是:k=2 a=3 b=2
我调试时,编译没通过,我觉得这题好象有问题,而且跳不出循环???
char *s="121" ;可以得到 s[0]=1,s[1]=2,s[2]=1 是这样吗???
第一次,k=0,自增后k=1,if 条件不满足,b=2 a=2 while(1)条件满足
第二次,k=1,自增后k=2, if条件满足,a=3 遇countinue结束本次循环,然后是怎样的啊???

接着是执行第三次?,
k=2,自增后k=3,if条件不满足,b=2+s[3],可是不知道s[3]的值啊???


[此贴子已经被作者于2006-7-19 0:34:22编辑过]

搜索更多相关主题的帖子: include 
2006-07-18 23:12
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
測試通過了, 是 2 3 2
...
continue 寫錯了....

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-18 23:25
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 

不好意思啊,我比较粗心啦,
可是我想知道具体是怎么算的啊?
char *s="121" ;可以得到 s[0]=1,s[1]=2,s[2]=1 是这样吗???
第一次,k=0,自增后k=1,if 条件不满足,b=2 a=2 while(1)条件满足
第二次,k=1,自增后k=2, if条件满足,a=3 遇continue结束本次循环,然后是怎样的啊???

接着是执行第三次?,k=2,自增后k=3,if条件不满足,b=2+s[3],可是不知道s[3]的值啊???

[此贴子已经被作者于2006-7-18 23:33:10编辑过]


人生没有彩排,每天都是现场直播~~~
2006-07-18 23:27
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
第三次 s[3] 是 NULL

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-18 23:32
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 
以下是引用yeshirow在2006-7-18 23:32:35的发言:
第三次 s[3] 是 NULL

为什么不会是随机值呢?


人生没有彩排,每天都是现场直播~~~
2006-07-18 23:35
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
#include <stdio.h>
main()
{char *s="121" ;
int k=0,a=0,b=0;
do { k++;
if(k%2==0){a=a+s[k]-'0'; countinue;}
b=b+s[k]-'0';a=a+s[k]-'0';
}
while(s[k+1]);
printf("k=%d a=%d b=%d\n",k,a,b);
}
IF不是循环啊?

羊肉串 葡萄干 哈密瓜!!
2006-07-18 23:38
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
你聲明 char *s = "123" 時, 實際在後面添加了一個 '\0' 啊

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-18 23:39
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
不過有點奇怪, 雖然 s[3] 是 '\0', 但是用
printf("%c", s[3]) 或者 printf("%c", *(s+3)), 會輸出 字元 a
但是用判斷 printf("%d", s[3]=='\0') 或者 printf("%d", *(s+3)=='\0') 就會正常的顯示 1
......
不知道是不是跟編譯器有關... 我用的是 VC

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-18 23:45
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
越來越糊塗了,
printf("%c", '\0') 竟然輸出的是字元 a

原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2006-07-18 23:47
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 
第二次,k=1,自增后k=2,  if条件满足,a=3 遇countinue结束本次循环,然后while(s[3]);因为s[3]=Null,所以跳出循环,是这样吗?

人生没有彩排,每天都是现场直播~~~
2006-07-18 23:50
快速回复:[问题已解决][求助]关于退出循环
数据加载中...
 
   



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

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