分支和循环语句

一、什么是语句

可以分为五类:

1.表达式语句        例如表达式(2+3)

2.函数调用语句    例如调用函数Add(2,4)

3.控制语句    (用来控制程序的执行流程,以实现程序的各种结构方式)   控制语句又分为三种    

分别是:

条件判断语句(分支语句)  if语句    switch语句

循环执行语句    do while语句    for语句    while语句

转向语句     break语句      goto语句    continue语句    return 语句

4.复合语句

5.空语句     例如(;)

二、if语句

1.if语句的使用

代码举例:这是if的一般使用方法判断表达式为真还是假,为真执行语句1,为假执行else 后面的语句2 需要我们注意的是,C语言默认if语句只能控制一条语句,如果要控制多行语句需用{}.else也是同理

if(表达式)     if(表达式)        if(表达式)
        语句;      语句1;            语句1;
                      eles                  else if(表达式2)
                         语句2;              语句2;
                                                else
                                                  语句3;

2.悬空else

代码如下(示例):

#include 
int main()
{
   int a = 0;
   int b = 2;
   if(a == 1)   //(1==a)
       if(b == 2)   //if(2==b)
           printf("hehe\n");
   else
       printf("haha\n");
   return 0;
}

这里运行结果为无输出,因为else会跟最近的if进行匹配,只是单纯的对齐不会起作用,所以这里的else是和if(b==2) 匹配,a不满足时就不会再运行。

这里给大家一个代码书写的建议,用于判断一个数的值,这里把(b==2)改为(2==b),因为如果这里少打了一个=,第一种依然可以运行不会报错,代码二就可会体术报错,这样可以减少代码的错误。    

二、switch语句

举例:

#include 
int main()
{
   int day = 0;
   scanf("%d",&day);    
   switch(day)    注意:这里的day表达式必须为整形表达式
  {
       case 1:    注意:case后也必须为整形常量表达式
           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:       (default意为默认的,case所有都不满足执行default后的语句,一个循环只能有一个)
        printf(”输入错误“);
            break;
  }
   return 0;
}

switch语句也为分支语句,适用于多分支的情况

 这里也要注意一点,switch语句中表达式只会决定从那个case开始执行,如果没有遇到终止语句会一直执行下去,这里用到break 意为终止循环,还有continue为终止本次循环

2.switch支持嵌套使用

switch支持嵌套使用
#include 
int main()
{
   int n = 1;
int m = 2;
   switch (n)
  {
   case 1:
           m++;
   case 2:
           n++;
   case 3:
           switch (n)
          {//switch允许嵌套使用
            case 1:
                   n++;
            case 2:
                   m++;
                   n++;
                   break;
          }
   case 4:
           m++;
           break;
   default:
           break;
  }
   printf("m = %d, n = %d\n", m, n);   //运行结果为m=5 n=3
     return 0;
}

三、while语句     

whiile(表达式)
    循环语句;

//举例
#include 
int main()
{
int i = 1;
while(i<=10)
{
    printf("%d ", i);   //遇到break直接结束循环
    i = i+1;            //遇到contiune跳出本次循环
}
    return 0;
}

 while为循环语句判断()中的表达式是否为真 ,为真执行下面的循环语句,为假跳出循环

只要在while循环中遇到break,就停止后面的循环直接跳出循环

遇到contiune只是终止本次循环,本次contiune后面的语句不再执行,直接跳到判断部分,进行下一次循环

2.使用举例

#include //多组输入输出
int main()
{
    int ch = 0;   //为int型,接收的字符用acall码存储为int型
    while ((ch = getchar()) != EOF)   //ctrl+z终止   //EOF本质为-1  //EOF 为文件结束标志
    putchar(ch);
    return 0;
}

getchar()用来获取字符的一次接收一个字符,使用putchar输出

#include
int main()
{
char password[20] = { 0 };
 printf("请输入密码:>");
 scanf("%s", password);
//清理\n
 while (getchar() != '\n')    //可以清理回车和回车之前的所有字符
 {
;
 }
printf("请确认密码(Y/N):");
 int ch = getchar();     //getchar和scanf都是从输入缓冲区取得内容,两者不同,scanf不会拿走回车\n,第一次输入时会遗留下回车\n,当getchar运行时会直接拿走\n回车,使得后面功能失去作用。
 if (ch == 'Y')
 {
printf("确认成功\n");
}
 else
 {
 printf("确认失败\n");
 }
return 0;
}

四、for语句    


for(表达式1;表达式2;表达式3)   //表达式1为初始化部分,表达式2为条件判断部分,表达式3为调整部分
      循环语句;
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
    printf("%d ", i);
}
return 0;
}  
//1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
//2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

for语句中是可以省略三个部分的,当省略三个部分就恒为真

#include 
int main()
{
for(;;)
{
printf("hehe\n");
}
   //for循环中的初始化部分,判断部分,调整部分是可以省略的,省略后就意味着恒为真  
   int i = 0;
   int j = 0;
   //如果省略掉初始化部分,这里打印多少个hehe?
   for(; i<10; i++)
  {
       for(; j<10; j++)
      {
        printf("hehe\n");
      }
  }

这里只会打印十个hehe,当j输出十次时,变为10,第二次嵌套使用时他的初值还是10,就不会继续执行,所以只会有十个hehe

总结
以上就是今天要讲的内容,本文简单介绍了C语言中循环和分支语句,给大家讲了语句的分类,循环和分支语句的用法和注意事项

你可能感兴趣的:(c语言,青少年编程)