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

下面程序的输出结果是
#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
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
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
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
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 
以下是引用mp3aaa在2006-7-18 23:38:44的发言:
#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不是循环啊?

do
循环体语句
while(表达式);


人生没有彩排,每天都是现场直播~~~
2006-07-18 23:54
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 
以下是引用mp3aaa在2006-7-18 23:52:55的发言:
“char *s="121" ;可以得到 s[0]=1,s[1]=2,s[2]=1 是这样吗???”
经过我的验证 是着样的
main()
{
char *s="121";
printf("%c,%c,%c",s[0],s[1],s[2]);
getch();
}
输出 1,2,1
当你不会着种问题的时候 可以自己写个小程序来 验证一下嘛~!

恩,接受建议
getch();好象不需要吧



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


人生没有彩排,每天都是现场直播~~~
2006-07-18 23:59
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 
What's the meaning of "coding canon"?

人生没有彩排,每天都是现场直播~~~
2006-07-19 00:14
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 
以下是引用摄政王:多尔滚在2006-7-19 0:04:07的发言:
#include <stdlib.h>

#include <stdio.h>


int main(void)

{

char *s = "121" ;

int k = 0, a = 0, b = 0;


do

{


k++;
// first k = 1, second k == 2


if(k % 2 == 0) // first not execute, second execute

{

a = a + s[k] - '0'; // a = 3

countinue;

}


b = b + s[k] - '0'; // b = 0 + s[1] - '0', b = 2

a = a + s[k] - '0'; // a = a + s[1] - '0', a = 2

}while(s[k + 1]); // first s[k + 1] = 2, so continue loop


printf("k = %d a = %d b = %d\n",k,a,b);



exit(0);
// k = 2 a = 3 b = 2

}

第一次,k=0,自增后k=1,if 条件不满足,b=2 a=2 while(1)条件满足
第二次,k=1,自增后k=2, if条件满足,a=3 遇countinue结束本次循环
然后while(s[3]);因为s[3]=Null,所以跳出循环,
你想说的,是这样的吗?


人生没有彩排,每天都是现场直播~~~
2006-07-19 00:26
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 

恩,知道了,谢啦~~~~


人生没有彩排,每天都是现场直播~~~
2006-07-19 00:33
Sally_SJL
Rank: 1
等 级:新手上路
威 望:2
帖 子:452
专家分:1
注 册:2006-7-14
收藏
得分:0 
以下是引用wuyufenjr在2006-7-21 19:29:18的发言:

getch()是在win-tc里为了显示需要的!

哦,原来因此,我用的是TC2.0,怪不得我怎么从来没见过getch(),书上也没看到过。
哈哈,谢谢美女啦~~~~~


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



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

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