3.(2)分支和循环

一.while循环
while 语句 的语法结构和 if 语句 ⾮常 相似
1.if 和 while的对⽐
if ( 表达式 )
           语句 ;
while ( 表达式 )
           语句 ; // 如果循环体想包含更多的语句,可以加上 ⼤括号

例如:

if ( 1 )
           printf ( "hehe\n" ); //if 后边条件满⾜,打印 ⼀次hehe
while ( 1 )
           printf ( "hehe\n" ); //while 后边的条件满⾜, 死循环的打印hehe
执⾏判断表达式,表达式的值为 0 ,循环直接 结束 ;表达式的值 不为0 ,则执⾏ 循环语句 ,语句执⾏完后再 继续判断 ,是否进⾏下⼀次判断,while语句是可以实现 循环效果 的。
2.练习
在屏幕上打印 1~10 的值
#include <stdio.h>
int main()
{
   int i = 1;
   while(i<=10)
   {
   printf("%d ", i);
   i = i+1;
   }
   return 0;
}

输⼊⼀个正的整数,逆序打印这个整数的每⼀位

例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5
题⽬解析:
1. 要想得到n的最低位,可以使⽤ n%10 的运算,得到的余数就是最低位,如:1234%10得到4
2. 要想去掉n的最低位,找出倒数第⼆位,则使⽤ n=n/10 操作就可以去掉最低位的,如:
n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。
3. 循环1和2两个步骤 ,在n变成0之前,就能到所有的位。
#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    while(n)
    {
       printf("%d ", n%10);
       n /= 10;
    }
    return 0;
}

二.for循环

1.语法形式

for ( 表达式 1 ; 表达式 2 ; 表达式 3 )
     语句;
表达式1 ⽤于循环变量的 初始化
表达式2 ⽤于循环结束条件的 判断
表达式3 ⽤于循环变量的 调整
2.for循环的实践

练习: 

①在屏幕上打印1~10的值
int i = 0 ;
for (i= 1 ; i<= 10 ; i++)
{
      printf ( "%d " , i);
}

for循环中初始化、判断、调整这三个部分相对比较集中,便于代码的维护,而while 循环的三个部分就⽐较分散。

②计算1~100之间3的倍数的数字之和
# include <stdio.h>
int main ()
{
        int i = 0 ;
        int sum = 0 ;
        for (i= 1 ; i<= 100 ; i++)
        {
                if (i % 3 == 0 )
                        sum += i;
        }
        printf ( "%d\n" , sum);
        return 0 ;
}
// ⼩⼩的优化
// 如果能 直接产⽣3的倍数 的数字就省去了多余的循环和判断
# include <stdio.h>
int main ()
{
        int i = 0 ;
        int sum = 0 ;
        for (i= 3 ; i<= 100 ; i+= 3 )
        {
                        sum += i;
        }
        printf ( "%d\n" , sum);
        return 0 ;
}

三.do-while 循环

1.语法形式

do
        语句;
while ( 表达式 )
while for 这两种循环都是 先判断 ,条件如果满⾜就 进⼊循环 ,执⾏循环语句,如果不满⾜就跳
出循环;
do while 循环则是 先直接进⼊循环体 ,执⾏循环语句,然后 再执⾏ while 后的判断表达式 ,表
达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
2.do while循环的实例
①在屏幕上打印1~10的值
# include <stdio.h>
int main ()
{
        int i = 1 ;
        do
        {
                printf ( "%d " , i);
                i = i + 1 ;
        } while (i<= 10 );
        return 0 ;
}

输⼊⼀个正整数,计算这个整数是⼏位数?

例如:

输⼊:1234 输出:4
输⼊:12 输出:2
# include <stdio.h>
int main ()
{
        int n = 0 ;
        scanf ( "%d" , &n);
        int cnt = 0 ;
        do
        {
                cnt++;
                n = n / 10 ;
        } while (n);
        printf ( "%d\n" , cnt);
        return 0 ;
}

四.break和continue语句

break 的作⽤就是 永久的终⽌循环 ,只要 break 被执⾏, break 外的 第⼀层循环就终⽌了
continue 继续 的意思,在循环中的作⽤就是 跳过本次循环中 continue 后边的代码,继续进⾏
下⼀次循环的判断 ,如果循环的调整是在 continue 后边的话,可能会造成 死循环
在for、while和do while中所呈现的 作用不同 while和do while 循环中的作用一样。 

五.goto语句
作用 以实现在 同⼀个函数内 跳转到设置好的 标号处
for (...)
{
        for (...)
        {
                for (...)
                {
                        if (disaster)
                                goto error;
                }
        }
}
error:
     ......
本来 for 循环想提前退出得使⽤ break ,⼀个 break 只能跳出⼀层 for 循环,如果3层循环嵌套
就得使⽤3个 break 才能跳出循环,所以在这种情况下我们使⽤ goto 语句就会更加的快捷。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值