c语言 程序循环,C语言学习笔记(七)--循环程序设计

1循环语句

1.1循环语句主要包括三种:while、do-while、for。

2while语句处理循环

2.1while语句基本形式:

While(表达式)

{循环体语句}

2.2执行流程:首先计算while表达式的值,当非零时执行循环体内的语句,执行完之后继续判断while表达式的值,如果非零,继续执行循环体,直到表达式值为零时,跳出循环,执行后续的语句。

例子代码:

#include "stdio.h"

main (){

int i,sum;

i=1;

sum=0;

while ( i<=100 ) /* 累加的数i 小于或等于终止数n就循环累加,否则结束循环*/

{ sum=sum+i;

i++;

}

printf ("sum=%d\n",sum);

}

注:使用sum和i时一定要赋初始值。

2.3while语句使用注意:

循环体要是多条语句必须使用符合语句形式;在循环体表达式中一定要有控制循环趋向结束的语句,否则循环将无限进行;循环体可为空;

2.4while实例:a+aa+aaa+....

代码:

#include "stdio.h"

main( )

{

int a,x;

long sum=0,n=1,tn ;

scanf("%d%d",&a,&x);

tn=a;

while(n<=x) /*n超过x则中止*/

{sum+=tn;

tn=tn*10+x;

n++;

}

printf("result is %ld",sum);

}

思考问题:求阶乘。

3do while语句处理循环

3.1do while语句基本形式:

do{循环体语句}

while(表达式);

3.2执行流程:先执行do后面的循环体,然后计算while里的表达式值,当值非零时继续执行do的循环体,当值为零时,跳出循环。

例子代码:

#include "stdio.h"

main (){

int i,sum;

i=2;

sum=0;

do /*先执行循环*/

{

sum+=i;

i+=2;

}while(i<=100); /*判断条件*/

printf ("sum=%d\n", sum );

}

3.3while和do while的区别:就是while首先要判断while的表达式是否成立再执行循环体,而do while是无论while的表达式是否成立,都会先执行一次do的循环体。

4for语句处理循环

4.1基本语法形式:

for(表达式1;表达式2;表达式3)

循环体;

注:for是c语言关键字,括号里的3个表达式可以是任意的表达式,当循环体内有多条语句时,注意使用复合语句。

4.2先计算表达式1,表达式1只执行一次,一般是赋值语句,用于初始化变量;然后求解表达式2,若值为零,则退出循环,若非零,则执行循环体;接着执行表达式3,然后继续判断表达式2,再执行循环体,直到表达式2不成立。

例子代码:

#include "stdio.h"

main( )

{

int i,sum;

sum=0;

for( i=1; i<=100; i++)

sum+=i;

printf("sum=%d",sum);

}

4.3for语句的特点:表达式1、2、3都可以省略,但“;”分号不能省略;表达式可以是任意形式的表达式;循环体可以为空;for的括号里可以使用多个控制循环的变量。

判断素数例子代码:

#include "stdio.h"

#include "math.h"

main()

{ int n,m,flag;

flag=1; /*flag变量为旗帜变量,值为1则n为素数,否则不是素数。初值为1*/

printf("\n enter n:"); /*输入n*/

scanf("%d",&n);

for(m=2;m

if(n%m==0)

flag=0; /*n不是素数*/

if(flag==1) /*若flag的值没有变化,则为素数*/

printf("\n%d is a prime number.",n);

else

printf("\n %d is not a prime number.",n);

}

4.4思考问题:

1.求阶乘。

2.输出斐波那契数列。

3.输出水仙花数。

4.输出如下图形:

*****

****

***

**

*

5流程控制语句

有时我们在执行循环的过程中,可能需要在中途中断循环或者跳过本次循环,这时我们就需要使用流程控制语句。

5.1break:在switch语句中我们常使用break用来跳出switch分支,其实break同样也可以使用在循环语句中用来跳出循环。在循环中使用break让循环语句可以有多个出口,使程序变的更加灵活。

break语句可以使循环在未达到结束条件时提前跳出循环。

例子代码:

for(i=0;i<10;i++){

printf("%d",i);

if(i==0) break;

}

思考问题:使用break语句修改判断素数问题。

5.2continue:在循环过程中使用continue可以根据条件判断是否执行本次循环,使用continue之后,后面的代码就不再执行,直接执行下次循环。但是不像break既可以用在分支也可以用在循环中,continue只能用在循环结构中。

例子代码:

for(i=0;i<10;i++){

if(i==0) continue; /*当i==0时不执行循环*/

printf("%d",i);

}

思考练习:使用continue实现求1000内能被3、5、7整除的数。

5.3goto:也叫无条件转向语句.

它的一般格式为:goto标号;

例子代码:

#include

main() {

int i,s=0;

i=1;

loop:if(i<=100){ /*标号,表示出goto语句转向的位置*/

s+=i;

i++;

goto loop;

}

printf("1+2+3+…100=%d\n",s);

}

在结构化程序设计中不提倡使用goto语句,但有时使用goto却比较方便,比如在一个多层的循环体中,要跳出到最外层的循环就要使用多个break,但使用goto直接就可以实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值