学习C语言的循环结构

 
学习循环结构
       学习之前我们应该知道什么是循环?以及为什么要使用循环?
              现在我们先来看一下循环的定义:解决某一问题要重复执行某些指令的情况就是循环。使用循环可以使我们解决问题变得更简单一些,通过生活示例可以说明。
1、 while 循环
学习while循环的语法:
while<条件>
{
        <语句>;
}
学习while循环使用时需要注意的几点:
Ø         在使用过程中,我们指定的条件,它的返回值应为逻辑值(真或假);
Ø         应该先检查条件,后执行循环体语句,也就是说循环体中的语句只能在条件为真的时候才执行,如果第一次检查条件的结果为假,则循环中的语句根本不会执行。
Ø         因为while循环取决于条件的值,因此,它可用在循环次数不固定或者循环次数未知的情况下。
Ø         一旦循环执行完毕(当条件的结果为假时),程序就从循环最后一条语句之后的代码行继续执行。
Ø         如果循环中包含多条语句,需要用{}括起来。
Ø         While循环体中的每条语句应以分号;结束。
Ø         While循环条件中使用的变量必须先声明并初始化,才能用于while循环条件中。
Ø         While循环体中的语句必须以某种方式改变条件变量的值,这样循环才可能结束。如果条件表达式中变量保持不变,则循环将永远不会结束,从而成为死循环。
示例:
#include<stdio.h>
void main ()
{
    int num=1,result;
    while (num<=10)
    {
       result=num*10;
       printf("%d × 10 %d /n",num,result);
       num++;
     }
}
 
2、 do-while循环
学习do-while循环的语法:
Do
{
        <语句>;
}while<条件>;
学习do-while时除了与while循环相同的注意点外,还需要注意:
Ø         它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。
Ø         While语句后面必须有一个分号。
示例:1
do
{
 . . .
 . . .
 scanf(“%c”,&answer);
} while (answer != ’n’);
示例:2
#include<stdio.h>
void main ()
{
int number=5,guess;
 printf ("猜一个介于 1 与 10 之间的数/n");
 do
 {
       printf("请输入您猜测的数:");
       scanf("%d",&guess);
       if (guess > number)
           printf("太大/n");
       else if (guess < number)
           printf("太小/n");
    } while (guess != number);
   printf("您猜中了! 答案为 %d/n",number);
}
 
3、嵌套 while 循环
嵌套 while 循环的语法:
while(i <= 10)
{
     . . .
    while (i <= j)
    {
         . . .
         . . .
     }
      . . .
}
注:只有在内循环完全结束后,外循环才会进行下一趟。
示例:
#include <stdio.h>
void main()
{
     int nstars=1,stars;
     while(nstars <= 10)
     {
               stars=1;
               while (stars <= nstars)
               {
                   printf("*");
                    stars++;
               }
       printf("/n");
       nstars++;
     }
}
 
4、嵌套 do-while 循环
嵌套 do-while 循环的语法:
do
{
    . . .
    do
    {
          . . .
     }while( . . .)
     . . .       
 }while( . . . )
注:只有在内循环完全结束后,外循环才会进行下一趟。
示例:
#include <stdio.h>
void main()
{
int x;
char i, ans;
ans='y';
do
{
       x=0;
       printf("/n请输入字符序列");
              fflush(stdin);
       do{
              i=getchar();
              x++;
             }while( i !='/n' );
       printf("/n输入的字符数为%d", --x);
       printf("/n是否需要输入更多序列 (Y/N) ? ");
       ans = getch();
}while(ans =='Y' || ans == 'y');
}
 
注:while循环和do-while循环的区别在于:while循环是先判断后执行,而do-while循环是先执行后判断。
5、for循环
for 循环的一般语法:
for( 表达式1 ; 表达式2   ; 表达式3 )
{
     语句;
}
工作原理:
Ø         计算表达式1的值,通常为循环变量赋初值
Ø         计算表达式2的值,即判断循环条件是否为真,若值为真则执行循环体一次, 否则跳出循环;
Ø         计算表达式3的值,这里通常写更新循环变量的赋值表达式,然后转回第2步重复执行;
示例:
#include <stdio.h>
void main()
{
    int number,count,factorial=1;
    printf("/n 请输入任意一个正整数:");
    scanf("%d",&number);
    for(count = 1; count <=number; count++)
              factorial=factorial*count;
    printf("/n %d的阶乘 = %d/n",number,factorial);
}
注:
Ø         for 循环中有三个表达式
Ø         for 语句中的各个表达式都可以省略
Ø         分号分隔符不能省略
省略表达式1:相当于省去了为循环变量赋初值,此时应在for语句之前给循环变量赋初值
int num=0;
for(;num <= 10 ;num ++)
{     
      printf("%d/n",num*2);
}
省略表达式2:即不判断循环条件,也就是认为表达式2始终为真,这时应在循环体内设法结束循环,否则将成为死循环
for(num=1;;num++)
{
    ...
}
省略表达式3:即省去修改循环变量的值,但此时应在循环体内设法结束循环
for(i=1;i<=100;)
{
      sum=sum+1;
      i++;
}
省略三个表达式:即不为循环变量赋初值,不设置循环条件(认为表达式2为真值),不修改循环变量的值,无终止地执行循环体。此时应在循环体内设法结束循环,否则会成为死循环
for( ; ; )
{
     printf("这将一直进行下去");
     i = getchar();
     if(i == 'X' || i == 'x')
       break;
}
6、break语句
Ø         break语句可以改变程序的控制流
Ø         break语句用于do-while、while、for循环中时,可使程序终止循环而执行循环后面的语句
Ø         break语句通常在循环中与条件语句一起使用。若条件值为真,将跳出循环,控制流转向循环后面的语句
Ø         如果已执行break语句,就不会执行循环体中位于 break 语句后的语句
Ø         在多层循环中,一个break语句只向外跳一层
示例:
#include<stdio.h>
void main()
{
       int count=0,ch;
       printf("/n 请输入一行字符:");
       while((ch=getchar())!='/n')
       {
              if(ch==' ')
                     break;
              count++;
       }
       printf("/n 共有 %d 个有效字符。/n",count);
}
7continue 语句
Ø         continue 语句只能用在循环里
Ø         continue 语句的作用是跳过循环体中剩余的语句而执行下一次循环
Ø         对于while和do-while循环,continue 语句执行之后的动作是条件判断;对于for循环,随后的动作是变量更新
示例:
#include<stdio.h>
void main()
{
       int i,sum = 0;
       for(i=1; i<=100;i++)
       {
              if( i % 10 == 3)
                     continue;
              sum += i;
       }
       printf("sum = %d /n",sum);
}
嵌套循环示例1
void main()
{
       int i,j,k;
       for(i=1;i<=4;i++)
       {
                    for(j=1;j<=4-i;j++)
                 printf(" ");
              for(k=1;k<=2*i-1;k++)
                 printf("*");
             printf("/n");
       }
            for(i=1;i<=3;i++)
           {
           for(j=1;j<=i;j++)
                  printf(" ");
           for(k=1;k<=7-2*i;k++)
                  printf("*");
          printf("/n");
           }
}
 
嵌套循环示例2
void main()
{
   int i,num;
   char answer;
   do
   {
              printf("请输入一个数:");
              scanf("%d",&num);
              printf("/n");
              for (i = 1; i <= 10; i++)
              {
                     printf("=");
              }
              printf("/n 该数是 %d",num);
              printf("/n/n 您是否还要输入其他的数(y/n)?");
              fflush(stdin);
              answer = getchar();
       } while (answer != 'n');
}
输出:
请输入一个数: 58
 
==========
该数是 58
 
您是否还要输入其他的数(y/n)? y
请输入一个数: 64
 
==========
该数是 64
 
您是否还要输入其他的数(y/n)? n
Press any key to continue
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章