C语言四

c语言循环结构

为什么用循环?

C语言中的循环主要分为三种:while循环,do...while循环 for循环

while循环:先判断条件是否成立,如果条件成立将执行其下的循环体,如果条件不成立一次都不执行。

 

语法:

 

while(条件)

 

{

 

   //循环体;

 

}

实例:

int a;

while(a<=100){

printf("while执行一百遍\n");

a++;

}

计算0~100的偶数和

int i=0,sum=0;

while(i<100){

if(i%2==0)//偶数

sum+=i;

}

i++;

}

printf("0~100之间的所有偶数和为:%d\n",num);

 

 

 do...while结构:先执行循环体,再判断条件是否为真,如果为真继续执行,如果为假终止循环===>先执行,再判断(至少会执行一次

 

 

语法: do{

 

   循环体;

 

}while(条件);

实例:0~100的奇数

int i=0;num=0;

do{

if(i%2!=0){

num+=i;

}

i++;

}while(i<100);

 

printf("0~100之间的所有奇数和为:%d\n",sum);

 

 

猜价格高低:5次机会

 

 

  int number,i=0,price=100;

 

  do{

 

    printf("请输入商品价格:\n");

 

    scanf("%d",&number);

 

    if(number<price){

 

     printf("低了!\n");

 

    }else if(number>price){

 

  printf("高了!\n");

 

    }else{

 

   printf("猜中了!\n");

 

   break;//跳出循环

 

    }   

 

    i++;

 

  }while(i<5); 

 

计算0~100之间所有能被3整除和带3的数字之和

 

 

int i=0;//循环变量

 

   int sum=0;

 

   while(i<100){

 

    if((i%3==0)||(i%10==3)||(i/10==3)){

 

    sum+=i;

 

    }

 

    i++;

 

   }

 

   printf("0~100之间所有能被3整除和带3的数字之和为%d",sum);

 

 

打印100~1000之间所有水仙花数,并统计其个数

 

int i=100;//循环变量

 

  int count=0,ge,shi,bai,he;//统计水仙花数

 

  do{

 

    ge=i%10;//获取个位

 

shi=i/10%10;//获取十位

 

bai=i/100; //获取百位

 

he=ge*ge*ge+shi*shi*shi+bai*bai*bai;

 

if(he==i){

 

   printf("%d\t",i);

 

   count++;

 

}

 

   i++;

 

  }while(i<1000);

 

  printf("\n100~1000之间共有%d个水仙花数",count);

 

 

 

李白闲来无事街上走,提壶去买酒,遇店加一倍,遇花喝一斗,五遇花和店喝光壶中酒,李白壶中原有多少酒?

 

//分析:假设原有壶中有x斗酒;===>遇到花之前(x+1);遇到店之前(x+1)/2

 

 float x=0;//壶中原有酒的斗数

 

  int i=0;

 

  while(i<5){

 

     x=(x+1)/2;//遇到花和店之前的壶中酒的斗数

 

 i++;

 

  }

 

  printf("李白壶中原有%7.3f斗酒",x);

 

 

 

环嵌套:一个循环中嵌套其他循环,只有在内层循环结束时,才能执行下一次外层循环(外层循环执行1次,内层循环执行N次)

 

while(条件){

 

   while(条件){

 

      //循环体;

 

   }

 

  }

 

do{

do{

  //循环体;

}while(条件);

}while(条件)

 

 

 使用循环打印矩形:外层循环控制打印的行数,内层循环控制每行打印*的个数

 

     ********

 

     ********

 

     ********

 

 

 

int i=0,j;

 

   while(i<3){

 

      j=0;

 

      while(j<8){

 

       printf("*");

 

       j++;

 

      }

 

      printf("\n");

 

      i++;

 

   } 

 

打印直角三角形:

   *

   **

   ***

   ****

    int i=0,j;  

   while(i<4){//外层控制打印的行数

      j=0;

      while(j<=i){//内层循环控制每行打印星号的个数

          printf("*");

          j++;

      }

      printf("\n");

      i++;

   }

 

打印直角三角形

*

***

*****

*******  

 

   int i=1,j;  

   while(i<5){//外层控制打印的行数

      j=0;

      while(j<2*i-1){//内层循环控制每行打印星号的个数

          printf("*");

          j++;

      }

      printf("\n");

      i++;

 

 

打印正的等腰三角形

      *

     ***

    *****

   *******

   int i=0,j,k;

while(i<4){//外层循环控制行数

j=0,k=0;

  //打印空格

 while(j<3-i){

   printf(" ");

   j++;

  }

  //打印星号

 while(k<2*i+1){

   printf("*");

   k++;

  }

  //换行

  printf("\n");

i++;

}

 

for循环:for循环中;是不能或缺的,表达式1,表达式2,表达式3都可以省略。

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

{

//循环体;

}

执行顺序: 初始化循环变量-->循环条件判断--->执行循环体--->更改循坏变量

 

示例:3过小游戏"

 

int number,fac=1;//接受用户输入的数字

 

int i;

 

    printf("请输入数字");

 

  scanf("%d",&number);

 

    for(i=1;i<=number;i++){

 

  fac=i*fac;  

 

  }

 

   printf("%d",fac);

 

示例: 九九乘法表

 

 

int i,j;

 

  for(i=1;i<=9;i++){

 

  for(j=1;j<=i;j++){

 

  printf("%d*%d=%d\t",i,j,i*j);

 

 }

 

 printf("\n");

 

  }

 

breakcontine关键字

break:跳出循环

continue: 跳过本次循环,继续下一次循环

 

posted @ 2017-03-19 16:26  代鱼  阅读(241)  评论(0编辑  收藏  举报