C语言分支和循环语句浅析

                关于循环我们可以通过运用多种语句多种方式来完成循环的完成。

循环语句

"while语句"

while(表达式)语句

当表达式语句为“真”时执行循环体语句,当表达式语句为“假”时不执行

特点:先判断条件表达式,后执行循环体语句。

一个简单的while语句的循环程序如下:

\sum_{n=1}^{100}n :

#include <stdio.h>
int main()
{
    int i = 1, sum = 0;
    while (i <= 100)
    {
        sum = sum + i;
        i++;
    }
    printf("sum=%d\n", sum);
    return 0;
}

简单分析一下这个循环 sum初始值为0 i初始值为1 小于100 进入循环 将i+sum的值赋给sum,再执行i++。 每次都会重新判定i目前的值是否小于或等于100 ,最后一次循环i=100,完成循环后此时i=101,再次进入表达式进行判定时语句为“假”不执行于是跳出循环继续执行下面的打印。

“do---while”语句

do

        语句

while(表达式);

当表达式语句为“真”时执行循环体语句,当表达式语句为“假”时不执行

特点:先无条件地执行循环体,然后判断循环条件是否成立。

一个简单的do---while语句的循环程序如下:

\sum_{n=1}^{100}n

#include <stdio.h>
int main()
{  int i=1,sum=0;
   do 
    {
       sum=sum+i;
       i++;
    }while(i<=100);
    printf("sum=%d\n",sum);
    return 0;
}

即 先执行一次循环体后再判断,一般情况下 do---while语句的运用情景是我们需要让目标先执行一次循环体然后再判断的程序中

for语句

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

其中

表达式1为初始条件,只执行一次,可以为零个,一个或多个变量设置初值执行

表达式2为循环条件表达式,会在每次执行循环体前先执行一次再判定是否进入循环体

表达式3为循环的调整,在执行完循环体后进行

一个简单的for语句的循环程序如下:

计算a+aa+······+aa······(n个a)的值

#include <stdio.h>
int main(void)
{
    long term = 0, sum = 0;
    int a, i, n;
    printf("Input a,n:");
    scanf("%d,%d",&a,&n);
    for (i = 1; i <= n; i++)
    {
        term = term * 10 + a;
        sum = sum + term;
    }
    printf("sum=%ld\n", sum);
        return 0;
}

通过for语句使term(单个数)和sum(总数)的值不断变化直到 i 的值不满足 i <= n此时跳出循环

循环的嵌套

一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。而内嵌的循环中还可以嵌套循环,这就是多层循环。(3种循环(while循环、do…while循环和for循环)可以互相嵌套)

break和continue语句

循环中,我们可以用break语句提前终止循环,用continue语句提前结束本次循环。

一个简单的break语句的应用如下:

在全系1000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目

#include <stdio.h>
#define SUM 100000
int main()
{
    float amount, aver, total;
    int i;
    for (i = 1, total = 0; i <= 1000; i++)
    {
        printf("please enter amount:");
        scanf("%f", &amount);
        total = total + amount;
        if (total >= SUM)
        {
            break;
        }
    }
    aver = total / i; 
    printf("num = % d\naver = % 10.2f\n", i, aver);
    return 0;
}

在for循环内 当total的值大于或等于SUM时 我们通过 break语句从for语句中提前跳出 而不通过for语句的条件表达式跳出。

 一个简单的continue语句的应用如下:

要求输出100~200之间的不能被3整除的数

int main()
{
	int n;
	printf("100~200之间不能被3整除的数:\n");
	for (n = 100; n <= 200; n++)
	{
		if (n % 3 == 0)
			continue;
		printf("%d  ", n);
	}
	printf("\n");
		return 0;
}

 for语句内 当n%3的值为0时我们通过continue将这次循环跳过 而不完成后面的打印。

即:

continue语句只结束本次循环,而不是终止整个循环的执行

break语句结束整个循环过程,不再判断执行循环的条件是否成立

循环嵌套

一个简单的循环嵌套应用如下:

输出以下4*5的矩阵  

   1    2    3    4   5    

   2    4    6    8  10    

   3    6    9  12  15  

   4    8  12  16  20

#include <stdio.h>
int main()
{
    int i, j, n = 0;
    for (i = 1; i <= 4; i++)
    {
        for (j = 1; j <= 5; j++, n++)
        {
            if (n % 5 == 0 && i > 1)
            {
                printf("\n");
            }
            printf("%d\t", i * j);
        }
    }
    printf("\n");
    return 0;
}

在这个循环中第一个for循环控制行 第二个for循环控制列(即每行输出的数字)

浅析结束,希望对你有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值