c语言学习之基础知识点介绍(七):循环结构

本节主要介绍循环结构

一、while循环

/*
语法:
while(表达式){
   //循环体;
}
注意:循环变量、循环条件和循环控制语句三者缺一不可。
例如:
*/
int num = 0;                //循环变量
while(num < 5 ){        //循环条件
  printf(" %d",num):
  num++;                      //控制循环结束语句
}
//例如:计算1到100的和
int sum = 0;
int i=1;
while(i<=100){
      sum+=i;
      i++;   
}
printf("sum= %d",sum);
/**
注意:
        1、避免死循环,避免永真或永假。永真死循环,永假不执行,毫无意义。
         2、while循环后面千万不要加分号。
         3、结束循环的语句不要忘记写。
         4、和if一样,大括号可以省略,只能控制离它最近的一条语句,并且这条语句不能是声明变量的语句。
         5、在循环内声明的变量,不能在循环外使用。
/

下面扩展一个知识点,首先看一个问题,让用户输入n个数字,然后在这n个数字中,判断出最大的数字,最小的数字(对于有编程基础的肯定有很多种方式去解决这个问题)。

int i = 1;
int max = INT_32MIN;//首先我们要有一个我们认为最大的数字,这个数字必须极限小,以保证用户输入的每一个数字都比这个数字大。
int min = INT_32MAX;//首先我们要有一个我们认为最小的数字,这个数字必须极限大,以保证用户输入的每一个数字都比这个数字小。
while(i <= 5){
     printf("请输入第%d个数字:");
     int num ;
     scanf("%d",num);
     if(num>max){
        max=num;
     }
     if(num<min){
        min=num;
     }
}
printf("最大的数字为:%d \n最小的数字为:%d:\n",max,min);

当然还有别的方法,就是把我们认为最大/最小的数字设置为用户第一次输入的数字,然后在循环判断。

二、do-while循环

/*
语法:
do{
    循环体;
}while(表达式);
注意:while后面一定要加分号。
执行过程:先执行循环体,在执行循环体,判断是否执行。
循环体至少会执行一次。
*/
//例如:
int num = 0;
do{
    printf("%d",num)
    num++;
}while(num>=0&&num<10);

三、for循环

/*
语法:
     for(表达式1;表达式2;表达式3){
          //循环体;
     }
注意:1、先执行表达式1,跳转到2;
            2、判断表达式2是否为真,如果为真,跳转到3,如果为假,跳转到5。
            3、执行循环体,执行完毕,跳转到4。
            4、执行表达式3,执行完毕跳转到2。
            5、跳出循环。
其他格式:
//死循环
for(;;){
    // 循环体
}

for(;表达式2;表达式3){
       //循环体;
}
//所有的表达式都可以省略,但是可能回出现死循环,需要注意。
*/    
//例如:
for(int i =0 ; i<10;i++){
  printf("%d",i);
}
//输出0到9。

怎么用for循环打出100到999之间的水仙花数呢?(水仙花数:百位的立方+十位的立方+个位的立方=这个数的本身)。

/*
取百位、十位、个位的数字分别:
百位 = 原数字/100;
十位 = 原数字/10%10;
个位 = 原数字%10;
这样能分别取到相对应的数字。
下面开始打印。
*/
for (int i = 100;i<=999;i++){
     int bw = i/100;
     int sw = i/10%10;
     int gw = i%10;
     if(bw*bw*bw + sw*sw*sw+gw*gw*gw  == i){
            printf("%d \n" i);
     }
}

for循环可以嵌套,看如下实例:

//打印九九乘法表
for(int i = 1; i<=9 ; i++){
     for(int j = 1; j<=i ; j++){
          printf(" %d × %d  = %d ",i,j,i*j);
     }
     printf("\n");
}

//打印等腰三角形
for(int i = 1 ;i=5 ;i++){
     for(int j = 1;j<=5-i;j++) //这里写的5是行数
          printf(" ");
    for (int k= 1;k <= i * 2 - 1; k++)
          printf("*");
    printf("\n");
}
//注意:循环的嵌套一般是用来控制平面,外层循环控制行数,内层循环控制列数。

如果想跳出当前的循环,使用break关键字,例如:

//得到1到10之间的第一个奇数
for(int i = 1; i<=10,i++){
    if(i%2==1){
        printf("%d",i);
        break;
    }
}

如果想结束本次循环,继续下次循环,用contiune关键字,例如:

//打印出1到10之间的偶数
for(int i =1 ;i<=10;i++){
    if(i%2==1){
        continue;
    }
    printf("%d",i);
}

 

posted @ 2015-10-26 15:22  祁临芯  阅读(804)  评论(0编辑  收藏  举报
友情链接:初心商城