C语言中的各种循环
时间:2014-04-29 13:22:21
收藏:0
阅读:430
C程序在默认情况下,是自顶向下执行,从main()的起始位置开始,逐条地执行语句,直到main()函数的最后。
但是实际情况中却很少这样,C语言提供了各种程序控制语句,以控制程序的执行次序。
流程控制语句有哪些呢?
if语句。
for语句。
while语句。
do...while语句。
1,for语句
for语句是一种C编程结构,它将一个由一条或多条语句组成的代码块执行特定的次数。它有时候也被称为for
循环,因为程序通常循环执行这种语句多次。
for语句的结构:
for(initial;condition;increment)
{
statement;
}
其中initial、condition、increment都是表达式,而statement为单条语句或复合语句。
程序执行到for语句时,将发生以下事件:
a,执行表达式initial。initial通常是一条赋值语句,将一个变量设置为特定的值。
b,判断condition。condition通常是一个关系表达式。
如果condition为假(即等于0),for语句结束,并接着执行statement语句后面的
第一条语句。
如果condition为真(即不等于0),则执行statement语句。
c,执行表达式increment,然后返回到第2步。
简单的for循环
#include<stdio.h>
/*
for循环示例
*/
int i; //在声明全局变量 i
//打印1到20的数字
void main(void)
{
for (int i = 1; i <= 20;i++) // 向上计数
{
printf("%d\n",i);
}
system("pause");
}
运行后的结果
for语句常常被用来“向上计数”,也就是将计算器从一个值增加到另一个值,我们也
可以使用“倒计数”,也就是将计算器变量递减。
倒计数
#include<stdio.h>
void main()
{
for (int i = 20; i >= 1;i--)//倒计数
{
printf("%d\n",i);
}
system("pause");
}
运行后结果
增量为2
#include<stdio.h>
void main()
{
int i = 0;
/*
for语句非常灵活,若已经在程序前面初始化了计数器,则可以省略初始化表达式,但不能省略分隔符。
*/
for (; i <= 20; i += 2)//向上计数,但增量为2
{
printf("%d\n", i);
}
system("pause");
}
运行后结果
另一种写法
#include<stdio.h>
void main()
{
int i = 0;
for (; i <= 20;)//向上计数,但增量为2
{
//i++ 写在这里也是可以的
printf("%d\n", i++); //i++ 放在这里也是也是可以的
}
system("pause");
}
运行结果
深入理解for
#include<stdio.h>
void main()
{
/*
用于终止for循环的表达式也可以是任何表达式。只要该表达式为真(非零),for语句便会继续执行。
*/
int i = 0;
int j = 15;
for (; i <= 20 && j>=0;)//向上计数,但增量为2
{
j--;
//i++ 写在这里也是可以的
printf("%d\n", i++); //i++ 放在这里也是也是可以的
}
system("pause");
}
运行后结果
condition 可以是任何合法的表达式,通常是一个关系表达式。当condition为假(0)时,for
语句将终止,然后接着执行statement后面的第一条语句;否则将执行statement中的语句。
for语句中可以包含另一条for语句,这就是嵌套。
打印任意行和列
#include<stdio.h>
void draw_box(int, int);
void main()
{
//打印出8行25列的X
draw_box(8, 25);
system("pause");
}
void draw_box(int row, int column)
{
int col; //定义中间变量
for (; row > 0;row--)
{
for (col = column; col > 0;col--)
{
printf("x");
}
printf("\n"); //每行打印完毕后,添加换行符使其换行
}
}
运行结果
2,while语句
while语句也叫while循环,他不断地执行一个语句块,直到条件为假为止。
while(condition)
statement
其中condition可以使任何表达式,statement是一条语句或一个复合语句。
程序执行到while语句后,将发生一下事件:
a,计算表达式condition;
b,如果condition为假(0),while语句将结束。
c,如果condition为真(非0),将执行statement中的语句。
d,返回到第1步。
while循环
#include<stdio.h>
int count;
/*
打印1到20的数字
*/
void main()
{
count = 1;//初始化
while (count<=20)
{
printf("%d\n",count);
count++;
}
system("pause");
}
运行结果
结论:
for(;condition;) 等价于 while(condition);
由于这种等价性,使用for语句能够完成的任何工作,都可以用while语句来完成。
使用while语句时,必须先使用单独的语句来完成所有必要的初始化工作,同时必
须在while循环体内使用一条语句来完成递增工作。
和for语句一样,while语句的嵌套。
for和while的结合
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int array[5]; //声明一个容量为5的数组
void main(void)
{
//声明并初始化2个变量
int ctr = 0,
nbr=0;
printf("This program prompts you to enter 5 numbers \n");
printf("Each number should be from 1 to 10 \n");
while (ctr < 5)
{
nbr = 0;
while (nbr<1|| nbr>10)
{
printf("\n Enter number %d of 5:",ctr+1);
scanf("%d",&nbr);
}
array[ctr] = nbr;//给数组赋值
ctr++; //增量1
}
//输出数组
for (ctr = 0; ctr < 5;ctr++)
{
printf("Value %d is %d\n",ctr+1,array[ctr]);
}
system("pause");
}
运行结果
评论(0)