while循环 跳出的条件

#include <stdio.h>

void strcat(char *,char *);

main()
{
char s1[80];
char s2[80];

scanf("%s %s",s1,s2);

printf("%s\t%s\n",s1,s2);
strcat(s1,s2);
printf("%s",s1);
getch();
}

void strcat(char *a,char *b)
{

while(*a)
a++;
while(*b)
*a++=*b++;
}
这是字符串连接函数,我对while(*a)和while(*b)不是很明白。。我只知道是空串,NULL时跳出循环。。但是当我换成while(*a!=‘\0’)时就得不到正确结果了。。希望高手们可以给我解释一下。

while 是一个循环体,退出循环体的方法有:

1、循环体条件 不成立,如:while( a>0); 当 a≤0 的时候,条件 a>0不成立,while 循环结束,退出 while 循环。

2、在循环体内使用无条件跳出语句(break),如 while(1){if(b>5)break;}当 b>5 的时候,程序执行 break ,跳出 while 循环体,循环体被结束。

3、在循环体内使用 函数返回 语句(return),如 while(1){if(c>8) return (XXX);},当 c>8的时候,程序执行 return,退出函数返回到上级函数。其中返回值 XXX 需要根据 函数类型进行返回。

如 int 型函数 int fun(),XXX 应为 int型,空返回值函数 void fun(),XXX 可以省略。

扩展资料:

while是计算机的一种基本循环模式。当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。while语句的一般表达式为:while(表达式){循环体}。

while语法

Pascal

while <条件> do <语句>

意为当条件符合时,接着做下面的语句;不符合时,退出循环。

C

do <语句> while(<条件>);

while(<条件>) <语句>;

C++

while(<条件>) <语句>;

do <语句> while(<条件>);

Java

while(<条件>) {<语句;>}

do {<语句;>} while(<条件>);

二者的区别是do-while最少会被执行一次。

循环中可以使用continue结束当前循环,回到循环开始处开始下一次循环。也可以用break跳出整个循环。

参考资料来源:百度百科-while (循环语句及英文单词)

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-10
你的这个函数有问题, 而不是while怎么判断的问题

void strcat(char *a,char *b)
{

while(*a != '\0')
a++;
while(*b != '\0')
*a++=*b++;
*a = '\0'; //后面应该加上'\0',不然你的字符串怎么结束, 这里加了怎么while都没有问题
}本回答被提问者采纳
第2个回答  推荐于2017-09-18
while可以用作无穷循环,很多地方都用到无穷循环。一个无穷循环如下所示:
while(true)
{
循环内容;
...
}
无穷循环可以由自己循环中的某个条件式来结束。下面是一个循环内部终止的例子:
while(true) { 语句; if(条件式) break; // 跳离循环 ... }
当条件式成立时,会执行break离开while循环,这个break与switch中的作用是一样的,都是要离开当时执行的程序块时使用。

class
TestWhile
{
public static void
main(String[] args)

{

while(true)

{

System.out.println( "执行
");

//值为真用break跳出执行while之后的语句

if(true)

{

break;

}

System.out.println( "继续执行 ");

}

}

}

//无穷循环固定格式为while(true),其中括号里的值固定为boolean型,并且要为真时,才会执行下面的语句.

class
TestWhile
{
public static
void main(String[] args)

{

boolean flag =
false;

while(flag)
//这时括号里的值为假,所以下面的语句都不会执行.如果改成while(!flag)就可以执行了.

{

System.out.println( "while为真时执行 ");

//值为真用break跳出执行while之后的语句

if(true)

{

break;

}

System.out.println( "继续执行
");

}

}
}
第3个回答  2010-05-10
其确定?不可能啊 while (*a)就是 while (*a != 0)
相似回答