c语言循环语句之while
c语言的另一种循环是while循环,一般形式是:
1、while(表达式)语句或者语句块;
表达式:任何表达式,其值非零时候重复循环,其值为零是退出循环。
看个例子:
int main(void)
{
char s='a';
while(s!='q')
{
printf("input a char\n");
s=getchar();
printf("s is %c\n",s);
}
getch();
return 0;
}
首先给s赋值为a,这时候执行while因为a!=q
所以执行while语句块,比如输入q,当打印完s以后,这时候判断s!=‘q’为假
退出循环。
2、do-while循环
一般形式:
do
{
语句
}while(表达式)
首先看两个例子:
例子A:
int main(void)
{
char s='q';
while(s!='q')
{
printf("input a char\n");
s=getchar();
printf("s is %c\n",s);
getchar();
}
getch();
return 0;
}
例子B:
int main(void)
{
char s;
do
{
printf("input a char\n");
s=getchar();
printf("s is %c\n",s);
getchar();
} while(s!='q');
getch();
return 0;
}
A中的s必须赋初始值,如果不赋值那么程序开始的s是不确定的。
B中的s不用赋初始值。
因为do-while的循环条件在底部,也就是说do-while至少执行一次。
B中的while之后必须跟;。
我们将上篇的例子修改一下,将for(;;)换成do-while形式。
例如:
void fun(int num1,int num2);
int main(void)
{
int i,num1=0,num2=0;
do
{
printf("1. input int num1 and num2 \n");
printf("2. bi jao da xiao \n");
printf("3. qing kong num1 and num2 \n");
printf("4. exit \n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("input num1 and num2\n");
scanf("%d%d",&num1,&num2);
break;
case 2:
fun(num1,num2);
break;
case 3:
num1=0;num2=0;
printf("num1==num2==0\n");
break;
}
}while (i!=4);
return 0;
}
void fun( int num1, int num2)
{
if(num2>=num1)
{
if(num2==num1) printf("%d == %d\n",num2,num1);
else printf("%d > %d\n",num2,num1);
}
else printf("%d < %d\n",num2,num1);
}
结果如同for(;;)是一样的。