简单学C——第三天

控制结构(二)spa

    前面咱们已经了解到了,控制结构中的判断结构,固然switch语句也是判断语句。不过若是if...else...语句你会了,我相信switch语句你也必定会的,它们的功能都是差很少的,只是switch语句在某些时候会让程序更简洁一点,此语法请看书自学。code

    下面进入正题。blog

    2.循环语句。编译器

    在c语言中,循环语句一共有两种,分别是           1):while循环.                     2):for循环it

    基本语法格式: io

   1):while循环for循环

 //第一种:
  while()  //括号内是判断语句,如为假,则不在执行大括号内的内容
  {
      printf("......");
  }
 //第二种:
  do//先执行下面的语句
  {
      printf("......");
  } while();  //注意有一个分号,括号内是判断语句,如为假,则再也不上面执行大括号内的内容

第一种与第二种有什么区别吗?确定是有的。先记着,第一种至少会运行0次大括号内的类容,第二种至少会运行一次大括号内的类容。下面会解释的。编译

      2):for循环class

for(   1  ; 2   ;  3  )
  {
      4
  }

    因为for循环比while循环复杂一点,因此有必要仔细把它讲一下。首先明确此语法在程序中的运行顺序基础

1->2->4->3->2->4->3->2......   若是不结束的话,就会如此循环往复的运行下去,何时结束呢?当3中的判断语句为假的时候,for循环就会结束。可能如今讲着有点抽象,下面我会用实际的样例来说清楚循环结构的用法。

    此时的你旁边有一台开着编译器的电脑吗?

    若是有的话,那么开始吧.

    很简单的一道题,在键盘中输入一百的数,而后输出从1到100之间全部数的和。

    固然,作了两个数相加(若是你认真看过前面的)的你确定能想到一种笨办法,它的程序以下 

#include<stdio.h>
int main()
{
    int a;
    //从键盘中输入100
    scanf("%d",&a);
    //省略的内容能补上去吧?我可不想作这么累的事
    printf("%d",1+2+3+4+...+100);
}

  若是你独立写出了上面我没完成的程序,那么我只能给你说,你太傻太天真。那么有什么方法能够简化这个操做呢?机器的优势,机器擅长作不少重复性的操做,固然计算机也是这样。而重复性的操做,既是循环。好好理解下面的代码,看看是如何转化为循环性的问题的。

 

#include<stdio.h>
int main()
{
    int a,i,sum=0;
    //从键盘中输入100
    scanf("%d",&a);
    /*i的初始值为1,每次i都加一,i++与++i的区别本身看看书
    位于中间的i<=a是一个相似if()括号中的判断,若是i<=a就执行
    大括号中的操做,否则就跳出循环*/
    for(i=1;i<=a;i++)
    {
        sum=sum+i; 
        //sum每次加上一个i的值,i每次都自加一
        //因而就实现了前i个正整数的和
    }
    printf("%d\n",sum); //"\n"为换行符,之前没提到过
}

若是理解了上面的程序,那么继续往下看吧.

对于每个for()循环,均可以转换为while()循环,对于每个while()循环,均可以转换为for()循环.下面用while()循环实现上面的程序的功能

#include<stdio.h>
int main()
{
    int a,i,sum=0;
    //从键盘中输入100
    scanf("%d",&a);
    i=1; //i的值从一开始
   while(i<=a)//若是i<=a的时候执行大括号内的操做
    {
        sum=sum+i;
        i++;//i自加一
    }
    printf("%d\n",sum); //"\n"为换行符,之前没提到过
}

固然,for() 和while()中能够有不少实现它的办法,不过原理老是不会变化的,都是实现一个"累加器"的过程,例如:

//for()循环中的内容能够放在适当的内容
//来实现一样的功能
i=1
for(; ; )
{
    sum=sum+i;
    i++;
    if(i==a+1) break;
}
//一样while()循环也能够
i=1
while(1)
//1在计算机中表明真,即while循环一直
//为真,即一直会循环下去,
{
    sum=sum+i;
    i++;
    //当i的值等于a+1时,须要打破这个循环
    if(i==a+1) break;
}

在上面的程序中,出现了 break; 这一语句,它的意思是 跳出/打破 这个循环.在c语言中,还有 contiue; 语句,它的意思是再也不执行下面的语句,继续运行这个循环语句中的下一个循环.上面两个都须要在循环中使用.   还有  goto 语句能够了解一下,比较实用.

 

运行结果:

 

 固然,前面提到的do  ...  while ; 和  while  循环的区别此时你确定已经能理解了,如不能理解,结合文字,或者本身写写代码试试。

上面的程序能理解的话,循环对你应该没过大的问题了.虽然这很基础,可是万变不离其宗.

那好,下面算算前n个正整数,其中的全部的偶数的和吧.

很简单,就是让i从0开始,在i不大于a的状况下,让i每次都自加2,这样获得的结果即为全部偶数的和了.

相关文章
相关标签/搜索