08-C语言循环

目录:

一、for循环

二、break,continue

三、循环嵌套

四、while

五、do while

六、三个循环的对比

七、空语句

回到顶部

一、for循环

标识每次循环,循环终止条件,循环间的规律

       签到            毕业               天

for 变量=1       变量<100        变量++

int i = 0;

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

1.循环就是重复执行循环体(语句、语句块组成),在C语言中,没一个循环都有一个控制表达式(终止循环的条件),每次循环的时候,都要向控制表达式求值,如果表达式的值为真1,那么继续循环,如果为假,终止循环。

2.c语言中使用循环语句来反复执行特定的代码段,在c语言中循环有三种表达方式:for/while/do while

3.for循环语法格式:

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

       循环体;(一条或多条语句)

}

表达式1:用来标识每一次循环,初始值,

表达式2:判断循环是否执行的控制语句,

表达式3:每次循环之间的规律,步长

4.循环的执行顺序,

第一次执行的时候,

执行表达式1 -> 表达式2(真)-> 循环体

执行表达式1 -> 表达式2(假)-> 终止循环

第二次执行的时候,

执行表达式3 -> 表达式2(真)-> 循环体

执行表达式3 -> 表达式2(假)-> 终止循环

第n次

执行表达式3 -> 表达式2(真)-> 循环体

执行表达式3 -> 表达式2(假)-> 终止循环

求:1~100的和

练习:使用循环输入四个数,求最大值、最小值、和。

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int i = 0;
 6     //i=1:循环的标识
 7     //i<=100:终止条件
 8     //i++:循环的规律
 9     for(i = 1; i <= 100; i++){
10         printf("%d ",i);
11     }
12     printf("\n");
13     
14     //求1~100的和
15     int sum = 0;
16     for(i = 1;i <= 100;i++){
17         sum += i;
18     }
19     printf("1~100的和是:%d\n",sum);
20     
21     //使用循环输入四个数,求最大值、最小值、和。
22     int num = 0,sum2 = 0,max = 0,min = 100;
23     for(i = 1; i <= 4; i++){
24         printf("输入第%d个数字:\n",i);
25         scanf("%d",&num);
26         if(num > max){
27             max = num;
28         }
29         if(num < min){
30             min = num;
31         }
32         sum2 += num;
33     }
34     printf("max:%d,min:%d,sum2:%d\n",max,min,sum2);
35     
36     return 0;
37 }

练习:输入10个数,求最大值、最小值、和、差、积、商。

练习:输出100内的奇数,不能被2整除

练习:输出100内的偶数,能被2这出

 1 #include <stdio.h>
 2 
 3 //练习:输入10个数,求最大值、最小值、和、差、积、商。
 4 void test1()
 5 {
 6     int num = 0,sum = 0,ji = 1,cha = 0,shang = 1;
 7     int i = 0,max = 0,min = 100;
 8     for( i = 1; i <= 10; i++){
 9         printf("输入第%d个数:\n",i);
10         scanf("%d",&num);
11         if(num > max){
12             max = num;
13         }
14         if(num < min){
15             min = num;
16         }
17         sum += num;
18         cha -= num;
19         ji *= num;
20         shang /= num;
21     }
22     printf("max:%d,min:%d,sum:%d,ji:%d,cha:%d,shang:%d\n",max,min,sum,ji,cha,shang);
23 }
24 
25 //练习:输出100内的奇数,不能被2整除
26 void test2()
27 {
28     int i = 0;
29     //不能被2整除
30     for(i = 1; i <=100; i++){
31         if(i % 2 != 0){
32             printf("%d ",i);
33         }
34     }
35 }
36 
37 //练习:输出100内的偶数,能被2这出
38 void test3()
39 {
40     int i = 0;
41     for(i = 1; i <=100; i++){
42         if(i % 2 == 0){
43             printf("%d ",i);
44         }
45     }
46     printf("\n");
47 }
48 int main()
49 {
50     test1();
51     //test2();
52     //test3();
53     return 0;
54 }

5.for(;;)这样写编译不报错,但;号不能省略,这是个死循环,Ctrl + c 终止循环。

回到顶部

二、break、continue

break关键字,不但可以终止switch语句,也可以终止for循环语句。

continue关键字,可以终止当次循环,继续下一次循环。

练习:输入一个数,得到数的长度(位数),如1234,长度就是4,

#include <stdio.h>

int main()
{
    int num = 0,i = 0,length = 0;
    printf("输入一个数:\n");
    scanf("%d",&num);
    printf("%d",num);
    for(i = 0; i <= 100; i++){
        length++;
        num /= 10;
        if(num == 0){
            break;
        }
    }
    printf("长度是:%d\n",length);
    return 0;
}

回到顶部

三、循环嵌套(多重循环)

for(){

       for(){

              ...

       }

}

#include <stdio.h>

int main()
{
    int i = 0,j = 0;
    for(i = 1; i <= 5; i++){
        for(j = 1; j <= 5; j++){
            printf("%d%d ",i,j);
        }
        printf("\n",i,j);
    }
    return 0;
}

1.如果两重循环,外面的循环执行一次,里面的循环执行一遍,

2.外面的循环和行有关系,里面的循环和列有关系

练习:

1.*****

2.         3.            4.

*          *            *****

**        ***         ***

***      *****      *

****    *******

*****

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int i = 0,j = 0;
 6     //打印*****
 7     for(i = 1; i <= 5; i++){
 8         printf("*");
 9     }
10     printf("\n");
11     /*
12      2.         3.          4.
13      *          *            *****
14      **         ***          ***
15      ***        *****        *
16      ****       *******
17      *****
18      */
19     //2.
20     for(i = 1; i <= 5; i++){
21         for(j = 1; j <= i; j++){
22             printf("*");
23         }
24         printf("\n");
25     }
26     printf("\n");
27     //3.
28     for(i = 1; i <= 4; i++){
29         for(j = 1; j <= i * 2 - 1; j++){
30             printf("*");
31         }
32         printf("\n");
33     }
34     printf("\n");
35     //4.
36     for(i = 3; i >= 1; i--){
37         for(j = 1; j <= i * 2 - 1; j++){
38             printf("*");
39         }
40         printf("\n");
41     }
42     printf("\n");
43     //4. (另一种写法)
44     int rows = 3;
45     for(i = 1; i <= 3; i++){
46         for(j = 1; j <= 2 * (rows - i) + 1; j++){
47             printf("*");
48         }
49         printf("\n");
50     }
51     return 0;
52 }

九九乘法表。

1*1=1

1*2=2  2*2=4

1*3=3  2*3=6  3*3=9

.........

#include <stdio.h>

int main()
{
    int i = 0,j = 0;
    for(i = 1;i <= 9;i++){
        for(j = 1;j <= i; j++){
            printf("%d*%d=%d\t",j,i,i*j);
        }
        printf("\n");
    }
    return 0;
}

回到顶部

四、while

1.while循环与for循环完全互通,除了语法格式稍有区别,其工作原理,工资方式一样。

2.语法格式;

表达式1;

while(表达式2){

              循环体;

              表达式3;

}

3.执行顺序

第一次执行循环的时候,

表达式1 -> 表达式2(真) -> 循环体 -> 表达式3

表达式1 -> 表达式2(假) -> 终止循环

第二次循环的时候,

表达式2(真)-> 循环体 -> 表达式3

表达式2(假)-> 终止循环

作业:重构for循环练习

#include <stdio.h>

int main()
{
    int i = 1;
    while(i < 11){
        printf("i:%d\n",i);
        i++;
    }
    return 0;
}

回到顶部

五、do while

先执行循环体,在进行判断。do while与for、while最大的不同,就算条件不成立,至少会执行一次

语法格式:

表达式1;

do{

              循环体;

              表达式3;

}while(表达式2);

执行顺序

第一次执行的时候

表达式1 -> 循环体 -> 表达式3 -> 表达式2(真)-> 继续循环

表达式1 -> 循环体 -> 表达式3 -> 表达式2(假)-> 终止循环

第二次循环的时候

循环体 -> 表达式3 -> 表达式2(真)-> 继续循环

循环体 -> 表达式3 -> 表达式2(假)-> 终止循环

作业:重构for循环的练习

#include <stdio.h>

int main()
{
    int i = 1;
    do{
        //i++;放在这里结果会出现改变
        printf("i:%d\n",i);
        i++;
    }while(i <= 10);
    return 0;
}

回到顶部

六、三个循环的对比

1.可以控制循环的范围使用for循环

2.关注循环规则使用while循环

2.第一次不需要进行判断的时候do...while

回到顶部

七、空语句

空语句常用来编写空循环体的循环,

c程序习惯性的把空语句单独放一行,

如果循环体只有一行,可以省略{}

posted @ 2013-12-07 00:16  回读(IOS)  阅读(483)  评论(0)    收藏  举报