从零开始学编程---第一步-C语言(十二)

时间:2014-03-05 11:35    点击:

我们知道,循环条件不满足就会退出循环
那有没有可能我们在循环里中途就让它退出循环?答案是可能
我们需要break语句,这个语句我们已经接触过,用switch的时候用过
我想大家应该知道它的用法了
break不仅能跳出switch语句,也能跳出循环语句
不过break在循环语句里通常是和if语句一起的,换句话说,在循环里,if几乎是每个break的第一部分

下面程序是从1打印到10的程序
#include <stdio.h>
main()
{
      int i;
      for(i=1;i<=10;i++)
      {
          printf("%d ",i);
      }

}

我们要它在打印5的时候就退出循环怎么弄,很简单
#include <stdio.h>
main()
{
      int i;
      for(i=1;i<=10;i++)
      {
          printf("%d ",i);
          if(i==5)
          {break;}
      }

}
这个程序打印到5就会停止

有了break我们就可以让for括号里为空
#include <stdio.h>
main()
{
      int i=1;
      for(;;)
      {
          printf("%d ",i);
          i++;
          if(i>10)
          {break;}
      }

}

但是循环条件会有局限性

现在也许你还不知道循环中途跳出有什么用
等到了后面的程序你就会发现


掌握了break语句,我们接下来接触continue语句
continue是继续的意思
break是循环提前跳出,与之相反,continue就是强迫循环提前继续
continue也需要和if在一起
它的格式就是
continue;
很简单把,和break一样

continue强迫循环提前继续是个概念?
比如一个从1打印到10的程序
我要让程序循环到5时就让程序打印一句“找到了五”(不再显示数字5),然后跳出循环,进行下一周期循环
这样说你可能还不太懂,我举例子来说吧
看这个程序
#include <stdio.h>
main()
{
      int i;
      for(i=1;i<=10;i++)
      {
          if(i==5)
          {
            
              printf("找到了五 ");
            
          }
      printf("%d ",i);
        
      }

}

没有continue
程序打印1 2 3 4 找到了五 5 6 7 8 9 10
这样的程序它多打印了一个5,我就是要让这个程序循环到5时,只打印找到了五,不再显示5的数字

用了continue后
#include <stdio.h>
main()
{
      int i;
      for(i=1;i<=10;i++)
      {
          if(i==5)
          {
            
              printf("找到了五 ");
              continue;
          }
      printf("%d ",i);
        
      }

}
程序就会打印 1 2 3 4 找到了五 6 7 8 9 10

continue的作用你应该明白了吧
当循环到5时,如果i=5 就打印“找到了五” 再continue
这里continue的作用是跳出此次循环(并不结束),然后返回for
也就是if语句(contuine)后面的所有语句不再执行,if后面的printf("%d ",i);就直接被忽略不执行了,也就不会打印数字5
然后直接返回for,开始6的循环


continue的功能就是强迫循环进入新的循环周期

break和continue也能在while语句中使用


两个语句的用法大家一定要多加使用
下面用程序来概括它们的功能
#include <stdio.h>
main()
{
      int i;
      for(i=1;i<=10;i++)
      {
          if(i==5)
          {
            
              printf("找到了五 ");
              continue;
          }
          if(i==9)
          {
              printf("找到了九");
              break;
          }
        
        
          printf("%d ",i);
        
      }

}


break和continue的具体用处大家会在以后程序中看到

我们知道if语句可以包含if语句(俗称if语句嵌套)
其实循环语句也可以包含循环语句,就是循环嵌套
for,while,do-while可以相互包含,构成多重循环
例如:
1)for(){…
      while()
        {…}
      …
          }
(2)do{
        …
      for()
        {…}
      …
      }while();
(3)while(){
              …
              for()
                {…}
              …
            }
(4)for(){
          …
          for(){
          …
            }
          }
等等。。。


来一个常用的题目,用循环打印下面的九九乘法表


这题怎么做?我们先用while语句来解吧

首先你得先找出要循环哪些

乘法表一共9行9列,我们要从第1行循环到第9行,从第1列循环到第9列

数字需要循环吗?不用,你可以发现 x*y=z     x不正代表着列的数吗(第几列就显示第几个数字) 而y不正代表着行的数吗(第几行就显示第几行的数字)

结果就是x*y

既然是两层循环,怎么个循环法

先定义两变量x,y吧,x控制列循环,y控制行循环    x,y都必须小于等于9

x。y都需要每循环一次递增1

先从哪开始?是从行开始呢,还是从列开始

先从行开始,第一行开始    首先初始化y=1 y<=9

当y=1时 就打印x*1=1 并回车     我们发现x也需要循环,如何循环?

当y循环一次时(就是回车一次)    x都要从1开始循环到y的列数


例如

1*1=1

1*2=2 2*2=4

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



当y=1 x就要循环1

当y=2 x就要从1循环到2

当y=3 x就要从1循环到3

。。。。。。



也就是说x的循环条件就是x<=y     不可以大于y


现在就明了了

从第1行开始

首先y=1

循环条件while(y<=9)

再初始化x=1

x的循环条件就是while(x<=y)

当y=1    while(x<=y)条件满足    x循环1     1*1=x*y     y++ 回车

当y=2    初始化x=1 while(x<=y)条件满足 x循环1,2 1*2=x*y 2*2=x*y,y++ 回车

。。。。。。。。。。。。。


x每次循环开始都是从1开始,所以每次都需要初始化x为1

由y的循环控制x的循环

y每次循环一次    x初始化1 再X自己循环从1到y循环的次数

由此可见y循环在外,x循环在内    (y为外循环,x为内循环)

程序如下:

#include <stdio.h>
main()
{
     int x,y;
     y=1;
     while(y<=9)
     {
         x=1;
         while(x<=y)
         {
             printf("%d*%d=%d\t",x,y,x*y);
             x++;
         }
         printf("\n");
         y++;
     }


}





while(x<=y)
         {
             printf("%d*%d=%d\t",x,y,x*y);
             x++;
         }
这里printf("%d*%d=%d\t",x,y,x*y); 里的\t是制表符 相当于TAB键

你用printf("%d*%d=%-4d",x,y,x*y); 也可以 %-4d是往右补4个空格 %4d则是往左补4的空格    (如果%d是两位数则补3个空格)

%4d的含义我以前说过了,这里在说一次,%d 前面加数字,例如%4d 表示按4位数输出,%d如果多于4位数,按4位输出,少于4位 按原样输出且靠右 即右对齐



扯远了,这里主要是打印格式美观,没特殊含义



用do-while来解这题

#include <stdio.h>
main()
{
     int x,y;
     y=1;
     do
     {
         x=1;
         do

         {
             printf("%d*%d=%d\t",x,y,x*y);
             x++;
         }while(x<=y);
             printf("\n");
             y++;
   

     }
     while(y<=9);

       
}


如果用while你还不太明白,那用for你应该比较容易理解

#include <stdio.h>
main()
{
     int x,y;    //x表示列,y表示行
     for(y=1;y<=9;y++) 每循环一次回车
     {
         for(x=1;x<=y;x++) 从1到y循环打印x*y=x*y
         {
             printf("%d*%d=%d\t",x,y,x*y);
         }
         printf("\n");
     }

       
}

你还可以反过来打印乘法表,只需改y的循环

#include <stdio.h>
main()
{
     int x,y;
     for(y=9;y>=1;y--)
     {
         for(x=1;x<=y;x++)
         {
             printf("%d*%d=%d\t",x,y,x*y);
         }
         printf("\n");
     }

       
}

来源:幻想编程//所属分类:站长原创/更新时间:2014-03-05 11:35
顶一下
(8)
100%
踩一下
(0)
0%
上一篇:从零开始学编程---第一步-C语言(十一)
下一篇:从零开始学编程---第一步-C语言(十三)
相关内容