189 8069 5689

入门C语言第一话:分支与循环语句(上)——秒懂文章,分支如此简单!-创新互联

在这里插入图片描述

专注于为中小企业提供成都网站设计、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业察隅免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

前言:想必大家都听说过三大结构,它们是十分神奇的,因为他们可以用逻辑描述在这个世界中所发生任何事情,今天就来了解一下实现这三大结构所用的其中一种语句——控制语句。

内容简要:
在这里插入图片描述

文章目录
  • 一.分支语句
    • 1.if
      • 1.if语句
      • 2.if else
      • 3.if else if语句
      • 4.if __else if__else语句
      • 5.书写建议
        • 第一:使用if语句时要加大括号,提高代码的可读性。
        • 第二:再进行变量与常量判断是否相等时,应将常量放在前面,变量放在后面。
        • 第三:等号与大于等于号分开写
    • 2.switch语句
    • 总结

一.分支语句 1.if 1.if语句

执行逻辑:在这里插入图片描述
下面用代码实现一下:

int main()
{int true = 1;
   int false = 0;
   if(true)//非0为真,这里的true换成其他非0的数字也可以。
   { printf("真命题\n");   
   }
   if(false)//0为假不执行
   { false = 1;
   }
   printf("%d",false);//验证:如果执行则为1,反之为0。
   return 0;
}
2.if else

执行逻辑:在这里插入图片描述
注意:else与最近的if匹配。

实现代码:

#includeint main()
{   int a = 2;
   if(a>1)//如果a大于1只执行if,否则执行else语句。
   {printf("真命题");
   }
   else
   {printf("假命题");
   }

  return 0;
}
3.if else if语句

执行逻辑:
在这里插入图片描述
说明:当语句在所有情况都成立时,只执行第一个条件,当都不成立时,跳过所有语句。

代码实现:

int main()
{int a = 3;
  if(a>3)
  {printf("a大于3\n");
  }
  else if(a>4)
  {printf("a大于4\n");
  }//很显然这里都不执行,所以什么也不打印。
  if(a>1)
  {printf("a大于1");
  }
  else if(a>2)
  {printf("a大于2");
  }//这里情况都成立,只执行第一句。
  return 0;
}
4.if __else if__else语句

执行逻辑:
在这里插入图片描述
代码实现:

#includeint main()
{  int a = 5;
  if(a<4)
  {printf("a小于4\n");
  }
  else if(a<3)
  {printf("a小于3\n");
  }
  else
  {printf("a大于4");
  }//这里第一丶二条语句都不成立,执行第三条语句。
  return 0;
}
5.书写建议第一:使用if语句时要加大括号,提高代码的可读性。

不良代码举例:

#includeint main()
{int a = 0;
    int b = 2;
    if(a == 1)
        if(b == 2)
            printf("hehe\n");
    else
        printf("haha\n");
      //这里什么也不打印,如果没想通看一下上面 if else 的注意事项。
    return 0;
}

修改后的代码

#includeint main()
{int a = 0;
    int b = 2;
    if(a == 1)
    {  if(b == 2)
        {   printf("hehe\n");
        }
     else
        {  printf("haha\n");
        }
    }
    //这样是不是好看,好读多了呢?
    return 0;
}
第二:再进行变量与常量判断是否相等时,应将常量放在前面,变量放在后面。

代码举例:

#includeint main()
{//判断a是否等于1
   int a = 1;
   if(a==1)
   {printf("a的值为1\n");
   }
   //易错
   if(a=1)//注意:这里是将1的值赋给a而不是等于!并且编译器是不会报错的!
   {  printf("a的值为1\n"); 
   }
 
   
   if(1==a)
   { printf("a的值为1\n");
   }
   if(1=a)//注意:这里编译器会提示出现表达式左边必须是常量的bug,可以提醒你。
   { printf("a的值为1\n");
   }

return 0;
}
第三:等号与大于等于号分开写

代码举例:
1.等号:

int main()
{int a = 2;
	int b = 2;
	int c = 2;
	//错误代码:
	if(a==b==c)
	{printf("abc相等\n");
	}
	else
	{printf("abc不相等\n");
	} 
	//正确代码
	if(a==b&&b==c)
	{printf("abc相等\n");
	}
	else
	{printf("abc不相等\n");
	}
	return 0;
}

这里a == b == c代码的执行逻辑是先判断b==c如果正确,此表达式结果为1,反之为0,再将a == 表达式的结果(0/1)判断,如故果成立执行语句,如果不成立跳过语句。

2.大于,大于等于,小于,小于等于
代码举例:

#includeint main()
{int a = 0;
  //错误代码
  if(1printf("a大于1小于2\n")
  }//这里会打印,思考一下代码的执行逻辑。
  //正确代码
  if(a>1&&a<2)
  {printf("a大于1小于2\n")
  }
  return 0;
}

这里1

2.switch语句

内容:Switch主要用于多情况的判断,可以借助if ,else if,else语句进行理解
执行逻辑:这是没有break的switch,就像没有判断的if语句一样只执行不判断,不过唯一的区别是输入情况是几,就从那条语句开始进行执行。在这里插入图片描述代码实现:

#includeint main()
{int n = 0;
	scanf("%d",&n);//输入1
    switch(n)
    {case 1:
    printf("hehe\n");
    case 2:
    printf("haha\n");
    default:
    printf("heihei\n");
    }
    //试着思考一下代码结果。
    printf("\n");
    switch(n)
    {case 2:
    printf("haha\n");
    case 1:
    printf("hehe\n");
    default:
    printf("heihei\n");
    }//这跟上一段代码的打印结果相同吗?
    printf("\n");
     switch(n)
    {default:
    printf("heihei\n");
    case 2:
    printf("haha\n");
    case 1:
    printf("hehe\n");
    }//这跟上一段代码的打印结果相同吗?
    printf("\n");
     switch(n)
    {case 1:
    printf("hehe\n");
    default:
    printf("heihei\n");
    case 2:
    printf("haha\n");
    }//这一段的代码的结果是?
	return 0;
}

答案:在这里插入图片描述
解析:
这几段的代码都是从输入的值的情况 处开始从上往下运行,直到最后一条语句。如果没有则执行default。
注意:
1.switch括号里面只能整形的变量或常量,case 后只能跟整形常量!
2.default:是除case情况外的其他情况进行执行的,一个switch只能有一条default。
如果输入几就只执行那一条语句的情况呢?
答:
这里要引入一个关键字:break——有终止,打破的意思,可以帮我们终止后面语句的执行。

代码实现:

#includeint main()
 {int n = 0;
	scanf("%d",&n);//输入1
    switch(n)
    {  case 1:
      printf("hehe\n");
      break;
      case 2:
      printf("haha\n");
      break;
      default:
      printf("heihei\n");//最后一句是switch语句的终点,故不需再加breaK,小编还是建议加上。
      break;
    }
    return 0;
 } 
思考:如果要知道一年的一个月有几天该如何实现呢(用switch语句)?

解析:

#includeint main()
{//思路:1.3.5.7.8.10.12月,31天永不差
//     2月:闰年29天,平年28天
//     4.6.9.11月,30天
//闰年判断规则:1:能被4整除并且不能被100整除
            // 2: 能被四百整除
               //注意这两个条件只要满足一个即可
	int month = 0;
	int year = 0;
	scanf("%d %d",&year,&month);
	switch(n)
	{case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		printf("31天\n");//想一下switch的运行逻辑
		break:
	case 4:
	case 6:
	case 9:
	case 11:
 		printf("30天\n");
 	case 2:
 		{if(((year%4==0)&&(year%100!=0))||(year%400==0))//因为这里并不知道优先级故要加括号,具体可参考if( ( ()&&() )||()  )这个框架。
 		{printf("29天\n");
 		}
 		else
 		{printf("28天\n");
 		}
 		break;
 		}
	default://其他情况如13
       printf("查无此月\n"); 
	}
    
return 0;
}

注意:switch是可以嵌套使用的!
例题:

int main()
{int n = 1;
        int m = 2; 
        switch (n)
        {case 1:
           {  m++;
           }
        case 2:
          {  n++;
          }
        case 3:
        {switch (n)//注意这里n为2。
            {case 1:
                {  n++;
                }
            case 2:
                { m++;
                 n++;
                 break;
                }
            }
         }
        case 4:
            {  m++;
              break;
            }
        default:
            break;
        }
        printf("m = %d, n = %d\n", m, n);
        return 0;
    }

答案:
在这里插入图片描述
不知你做对了吗?

总结

希望大家,学有所成,思有所得,得有所就!如果有误,请委婉一点指出,如果觉得文章不错,请留下您的点赞与评论,小编会继续加油!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享名称:入门C语言第一话:分支与循环语句(上)——秒懂文章,分支如此简单!-创新互联
本文地址:http://cdxtjz.cn/article/dijige.html