vlambda博客
学习文章列表

C语言基础3“选择结构+循环结构”

选择结构+循环结构

C语言基础3“选择结构+循环结构”
C语言基础3“选择结构+循环结构”

Merry Christmas

#include<stdio.h>


int main()


{

一 :if语句


if(如果)语句,用来判断表达式的值。  条件判断语句

printf("");

else(否则)


条件成立

   做这件事


条件不成立

    干另外一件事


表达式返回真或假,  0:假;  非0:表示真

if (表达式)



if、else、else if  后面作用只管一条语句,除非后面是一个语句块,才能同时打印两个语句.  如果不加语句块,不管成不成立都会打印第二个语句



/*

表达方式:


(1)、if(表达式)

           一条语句


例:

int a = 10, b = 20;

int c = a < b;//c=1  因为a<b成立,为真,输出为一,所以c=1

int c = a > b;//因为a>b不成立,为假,所以c=0


if、else、else if  后面作用只管一条语句,除非后面是一个语句块,才能同时打印两个语句.  如果不加语句块,不管成不成立都会打印第二个语句


if (0)//if(1) 条件永远成立; if(0)  条件永远不会成立

{

printf("今天下雨\n");

printf("而且温度还很低\n");


}



(2)、if(表达式)

           一条语句

else

   一条语句


例:

int a = 10, b = 20;

int c = a < b;//c=1  因为a<b成立,为真,输出为一,所以c=1

int c = a > b;//因为a>b不成立,为假,所以c=0


if后面作用只管一条语句,除非后面是一个语句块


if (a>b)//if(1) 条件永远成立; if(0)  条件永远不会成立

printf("今天下雨\n");

else                                 //后面也只能跟一条语句,除非加语句块,才能打印出两条或多条语句

{

printf("今天出太阳\n");

printf("并且今天天气很热\n");

}



    (3)、if(表达式)                                 例:如果今天下雨

           一条语句                                        我就去图书馆

else if     否则如果        //另外一种条件                如果今天阴天

   一条语句                                        我就去打篮球

else if                                               、、、

一条语句

、、、

else                                                  如果下冰雹

   一条语句                                         我就、、、


例:


int a = 70, b = 20;

int c = a > b;//因为a>b不成立,为假,所以c=0


if后面作用只管一条语句,除非后面是一个语句块


if (a<b)//if(1) 条件永远成立; if(0)  条件永远不会成立

printf("今天下雨\n");

else if (a == b)

{

printf("今天下雨并且出太阳\n");

}

else if (a>=50)

{

printf("今天天气特别热,50度\n");    //如果两个条件都满足,他只会打印一个,即第一个,因为else if只执行一条语句,即只执行一种情况,不会执行多种情况。上面的情况满足了,下面就不会执行了

}

else if (a >= 40)

{

printf("今天天气特别热,40度\n");

}

else                                 //后面也只能跟一条语句,除非加语句块,才能打印出两条或多条语句

{

printf("今天出太阳\n");

printf("并且今天天气很热\n");

}

*/




/*

int c = a > b;//因为a>b不成立,为假,所以c=0


if后面作用只管一条语句,除非后面是一个语句块


if (a<b)//if(1) 条件永远成立; if(0)  条件永远不会成立

printf("今天下雨\n");

else if (a == b)

{

printf("今天下雨并且出太阳\n");

}

else if (a>=50)

{

printf("今天天气特别热,50度\n");    //如果两个条件都满足,他只会打印一个,即第一个,因为else if只执行一条语句,即只执行一种情况,不会执行多种情况。上面的情况满足了,下面就不会执行了

}

else if (a >= 40)

{

printf("今天天气特别热,40度\n");

}

else                                 //后面也只能跟一条语句,除非加语句块,才能打印出两条或多条语句

{

printf("今天出太阳\n");

printf("并且今天天气很热\n");

}


if (a > 20)        //在一个程序中,可以存在多个if 语句。     上面的if语句已经执行,下面的这个语句也可以执行,因此,if语句可以存在多个。即if语句的嵌套

{

printf("今天天气一般,20度\n");

}



if语句的嵌套

 if语句里面还可以有if语句

不要嵌套太深


   例:20<=a<=50

a = 30;

if (a >= 20)

{

printf("a大于等于20\n");


if (a <= 50)

{

printf("a小于等于50\n");

}

else

{

printf("a大于50\n");

}

}

else

{

printf("a小于20\n");

}

*/




       二:switch 语句

    /*


    switch (整型或整型表达式)可以是字符,因为字符的存储方式为ASCII码,ASCII就是一个整数。把字符类型归纳为整型。    //括号只能是整型或者整型表达式,不能是浮点型,但是可以是字符类型:a,b,c...

    {

    case  (选择判断) : 整型常量,不能是变量    。case里面不能重复匹配,即原来已经匹配了的,不能再次匹配     。  case语句里不能直接定义语句,要加语句块

                 注意:

 1.case语句必须是整型常量、常量表达式

 2.case语句如果定义变量要打花括号,定义语句块

break:跳出switch语句    ,如果不适用,它就不跳出来,程序会继续执行下面的语句                                


default:(上面所列举的都不满足),即什么都匹配不了                                                             

     }                                                                                                            


    */                                                                                                                 

/*

     int a;                                                                                                         


     printf("请输入今天星期:\n");

     scanf("%d", &a);


switch (a)

{

case 0:                       //判断a 为什么值

printf("输入错误:\n");

break;                    //跳出switch语句

case 1:

printf("星期一:\n");

break;

case 2:

printf("星期二:\n");

break;

case 3:

printf("星期三\n");

break;

case 4:

printf("星期四\n");

break;

case 5:

printf("星期五\n");

break;

case 6:

printf("星期六\n");

break;

case 7:

printf("星期七\n");

break;

default:                             //表示上面的情况都不满足,即默认

printf("你输入的情况都没有\n");

break;


}

*/



int a;


printf("请输入今天星期:\n");

scanf("%d", &a);


把字符类型归纳为整型


switch (a)

{

case 'a': //字符常量                              //判断a 为什么值

printf("输入错误:\n");

break;                                      //跳出switch语句

case 1:case 2:                                 //case里面可以连着写,即可以一起实现,只需输入1或2就可以执行

printf("星期一和星期二是国家节日:\n");

break;


case 3:

case 4:                                      //可以放在同一行,也可以不用

printf("星期三和星期四不用上班\n");

break;

case 5:

printf("星期五\n");

break;

case 6:

printf("星期六\n");

break;

case 7:

printf("星期七\n");

break;

default:                                 //表示上面的情况都不满足,即默认

printf("你输入的情况都没有\n");

break;


}




注意: case语句里不能直接定义变量,要加语句块


例:

int a;


printf("请输入今天星期:\n");

scanf("%d", &a);


把字符类型归纳为整型


switch (a)

{

case 'a': //字符常量                              //判断a 为什么值

printf("输入错误:\n");

break;                                      //跳出switch语句



case 1:case 2:                                 //case里面可以连着写,即可以一起实现,只需输入1或2就可以执行


{

int num = 0;

printf("星期一和星期二是国家节日:\n");

break;

}



case 3:

case 4:                                      //可以放在同一行,也可以不用

printf("星期三和星期四不用上班\n");

break;

case 5:

printf("星期五\n");

break;

case 6:

printf("星期六\n");

break;

case 7:

printf("星期七\n");

break;

default:                                 //表示上面的情况都不满足,即默认

printf("你输入的情况都没有\n");

break;


}




判断你输入的三条边能否构成三角形

任意两边之和大于第三边

int a;

int b;

int c;

printf("请输入三角形的三条边:\n");

scanf("%d%d%d", &a, &b, &c);


if (a + b > c && a + c > b && b + c > a)//或者用嵌套的方式

{


printf("你输入的:%d,%d,%d能构成三角形\n",a,b,c);

}

else

{

printf("你输入的:%d,%d,%d不能构成三角形\n",a,b,c);

}


switch语句能做的,if语句都能做         只能判断整型,不能判断浮点型

if语句能做的,switch不一定能做






         三、循环语句

1、while语句

      while(表达式)   直到条件不满足,退出循环,可以利用a++ 或a-- 来实现。    后面也只能跟一个语句,要想打印多个语句,要加语句块

      一条语句或一个语句块


int a = 1;

//while(1)条件永远成立,永远循环,死循环。 

//while(0) 表示条件永远不成立,不会执行,一句都不会打印


while (a < 10)//不满足条件就不会执行

{


printf("a=%d\n", a);

printf("是否成立");


a++;//a=a+2

}



(1)先判断a<10表达式是否成立,若成立,执行,又继续判断表达式是否成立,若成立,继续打印。一直循环下去



求1+2+3+...+100=5050

int i = 1, result = 0;

while (i <= 100)

{

result = result + i;

i++;

}

printf("result=%d\n", result);



(2)循环也可以嵌套     九九乘法表

int a = 1, b = 1;

while (a<= 9)//外层循环   

{

b = 1;//b每次都要从1开始

while (b <= a)//里层循环         (b<=a):例1<=1.所以只打印一次。。。若a=2,有1<2;2<=2,所以打印两次,以此类推。。。。

{

printf("%d*%d=%d", a, b, a*b);

b++;//b=b+1,只有里层加一,因为每次从外层到里层b=1,  而里层每次加一

}

a++;//使外层的a每次都能加一

printf("\n");

}




    2、  do...while循环   不管条件成不成立,都会先执行一遍

        形式

/*

do

...

while(表达式);

*/


例:

int a = 1;

do    //先执行一遍再去判断条件是否成立

{


printf("Hello world\n");

a++;

}

while (a < 10);//若条件成立,继续执行,进行循环。若不成立,不会执行

a++;



例:

(1)求1+2+3+...+100=5050

int i = 1, result = 0;

do

{

result= result + i;

i ++;

while (i <= 100);

printf("result=%d\n",result);



(2)九九乘法表

int i = 1, j = 1;

do

{

j = 1;

do

{

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

j++;

}

while (j <= i);

i++;

printf("\n");

}

while (i <= 9);





         for  循环

       形式

/*

for(语句1;语句2;语句3)

         一条语句或语句块


语句1:进行初始化

语句2:判断条件          若不加判断条件,就会陷入死循环

语句3:条件修正


执行顺序:(1)先执行初始化,只执行一次;(2)执行判断,条件成立,执行printf;(3)执行printf,即输出;(4)执行条件修正

*/


例:

ingt a=1

for( ; i<100;a++)  括号的的分号表示一个空语句,这个空语句不能省略,因为括号里必须有三个语句


for (int a = 1; a < 100; a++)//若已经在外面进行初始化,那么括号里可以不用写

printf("a=%d\n", a);


(1)求1+2+...+100=5050

int i=1,result=0;         若已经在外面进行初始化,那么括号里可以不用写

for( ; i<=100;i++) 括号的的分号表示一个空语句,这个空语句不能省略,因为括号里必须有三个语句    若不加判断条件,就会陷入死循环


int result = 0;

for (int i = 1; i <= 100; i++)

{

result+=i;

}

printf("result=%d\n", result);




(2)九九乘法表

int i = 1, j = 1;

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

{

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

{

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

}

printf("\n");

}




(3)

int i = 0, result = 0;

int b = 0;

int n = 0;

for (i = 0, b = 0; i < 100, b < 200; i += 5, b+= 40)//两个判断条件都要满足才能执行

{

printf("%3d+%3d=%3d\n",i, b, i + b);

n++;

}

printf("执行次数:n%d\n", n);




         四、跳转语句:

              1、goto语句

              2、break语句

              3、continue语句


  1、break语句,跳出语句,终止循环  只能用于循环,switch, 跟它最近的这一层循环

int i = 0, j = 0;

while (i < 100)

{

while (j < 200)

{

if (i == 85)

break;//跳出循环, 只能跳出它最近的这一层循环

printf("j=%d\n", j);

j++;

}

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

i++;

}




  2、continue语句, 结束当前循环,开启下一次循环

int a = 0;

while (a < 100)

{

if (a % 2 == 0)

{

printf("偶数:%d\n");

a++;

continue;//结束当前循环,开启下一次循环,因此不会继续执行下面的程序,直接进入循环

}

printf("奇数:%d\n", a);//第二次a++等于1,为奇数,所以打印奇数,即执行下面的程序,进入循环,第三次,a++=2,为偶数,打印偶数,continue结束当前循环,进入下一次循环,。。。

a++;

}


  3、goto语句,   标识符,后面冒号

int a = 0, b = 10;

int n;

ABC:

{

printf("hello world\n");

}


  goto ABC;


return 0;

}



我知道你在看

新浪微博:@秀米XIUMI