当前位置: 代码迷 >> C语言 >> [问题已解决][求助]关于退出循环
  详细解决方案

[问题已解决][求助]关于退出循环

热度:105   发布时间:2006-07-18 23:52:55.0
“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
当你不会着种问题的时候 可以自己写个小程序来 验证一下嘛~!
----------------解决方案--------------------------------------------------------
以下是引用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(表达式);


----------------解决方案--------------------------------------------------------
以下是引用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编辑过]


----------------解决方案--------------------------------------------------------
#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
}
----------------解决方案--------------------------------------------------------
first learn coding canon

----------------解决方案--------------------------------------------------------
if(k%2==0){a=a+s[k]-'0'; countinue;}

==>

continue write error

----------------解决方案--------------------------------------------------------
What's the meaning of "coding canon"?

----------------解决方案--------------------------------------------------------
bian ma gui fan

----------------解决方案--------------------------------------------------------
以下是引用摄政王:多尔滚在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,所以跳出循环,
你想说的,是这样的吗?


----------------解决方案--------------------------------------------------------
然后while(s[3]);因为s[3]=Null,所以跳出循环,

==>
yes, but s[3] is '\0'

----------------解决方案--------------------------------------------------------
  相关解决方案