初识c语言之循环语句与分支语句

目录

​编辑

 一、分支语句(if,Switch)

1、if的基本用法

2、Switch的基本用法

二、循环语句

1、while的基本用法

while中的break问题

while中的continue问题

while中getchar的解读

2、for语句的基本用法

 3、do while的基本用法

三、总结


 

​​​​🛰️🛰️什么是语句呢?a+b;是一个语句,a;是一个语句,甚至;也是一个语句,叫做空语句。

🚄​​​​​​​🚄C语言语句总共分为五类:

         1、表达式语句

         2、函数调用语句

         3、控制语句

         4、符合语句

         5、空语句

        下面我们来了解一下控制语句吧!

 一、分支语句(if,Switch)

分支语句又叫做选择语句,其中包括了两大类,一个是if,另一类是Switch

1、if的基本用法

基本类型
if(表达式)
语句;

双分支
if(表达式)
语句;
else
语句;

多分支
if(表达式)
语句;
else if(表达式)
语句;
...
else
语句;

🛳️🛳️当if中表达式为真时,进入if,为假时,无法进入。什么是真与假?当表达示为0时,则是假,非0则是真,也就是表达式正确时是非0,错误的时候为0。并且,当表示的值为0时,也为假,为非0的值的时候,为真。这个真假,需要我们自己意会一下。

当不满足所有分支进入的条件时,则进入else分支,进行else分支的内容

 悬空else

🛰️🛰️当if中内容有多条语句时我们需要用{ },来进行代码块的使用,不然会造成悬空else,只会读取第一个语句的内容,让我们不方便判断程序的运行。下面我们来看一个例子

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

🛳️🛳️大家觉得答案是什么呢?是不是觉得是hehe,其实答案是空。因为根本就进入不了循环,else是就近匹配,所以他与第二个if匹配,而第二个if在第一个if的里面,第一个if根本就不能进入。这里就体现了格式和好的编译器的重要性。如果我们加了{ },是不是就更加容易判断了,而好的编译器,会帮你提前进行代码阅读,从而排版与第二个if对齐,会让你发现自己的错误,提高可读性。

2、Switch的基本用法

🚄​​​​​​​🚄Switch一般用于多分支,且分支点的条件一般为唯一点时使用,这时相较于if更加方便

switch(整型表达式)
{
  case 整型常量表达式:
   语句;
}

🛳️🛳️当整型常量等于整型表达的值时,就从该case开始执行Switch语句中的内容;值得注意的是,如果没有break,则会一直按顺序向下执行,直到遇到break才跳出Switch语句

例如

switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:printf(“工作日”);break;
case 6:
case 7:printf(“休息日”);break;
default:  printf(“输入错误”);break;
}

🛸🛸在这个例子中,当day为12345中任意一个语句时,都会得到“工作日”的输出,67同理。

而default则是,在不为任何case中的情况下,进入这个语句,与else语句类似;其中case与default的位置都可自由交换,default不一定放最后。

最后提醒大家,可以根据情况使用break来结束Switch语句,不一定每一个都加,怎么方便,怎么用。

二、循环语句

1、while的基本用法

while(表达式)
{
   循环语句;
}
    

🚢🚢while语句是循环体结构中最基础的结构。其表达式为真时(非0)进入循环体,为假时(为0)时退出循环或者不进入循环体。再循环体中可以使用其他结构进行嵌套

while中的break问题

#include<stdio.h>
int main()
{
   int i=1;
   while(i<10)
   {
      if(i==5)
          break;
          printf("%d ",i);
          i++;
   }
  return 0;
}

⛵​​​​​​​⛵​​​​​​​此处输出值为1 2 3 4。因为当i=5时,进入if语句,遇到break,直接跳出循环体,不在进行循环

while中的continue问题

#include<stdio.h>
int main()
{
   int i=1;
   while(i<10)
   {
      if(i==5)
          continue;
          printf("%d ",i);
          i++;
   }
  return 0;
}

🚈🚈此处输出值为1 2 3 4 无限循环 ,continue的用处为,当遇到continue时,跳到循环体的开始部分,而之前continue的部分不进行使用。总结,continue为终止本次循环,也就是continue之后的部分不执行

while中getchar的解读

#include<stdio.h>
int main(){
   int ch=0;
   while((ch=getchar())!=EOF)
      putchar();
 return 0;
}

🛳️🛳️getchar为读取字符,但是起返回值为整型,所以ch用int来定义。这里的这个循环能够一直读取我们输入的内容,直到输入Ctrl+z结束。EOF在计算机中代表-1

2、for语句的基本用法

for(表达式1;表达式2;表达式3){
循环体;
}

🛰️🛰️其中表达式1位初始化部分,用于初始化循环变量。表达式2为条件判断部分,相当于while()的部分。表达式3位调整部分,用于循环条件的调整,当然也可以用于其他的条件,但是不推荐

简单例子

#include<stdio.h>
int main(){
  int i=0;
  for(i=1;i<=10;i++)  //此处都可以使用空语句,但是会陷入无限循环
{
  printf(“%d”,i);
}
return 0;
}

此处打印了1~10,下面我们看看while与for的对比。

int i=0;
i=1;
while(i<=10)
{
printf("hehe\n");
i++;
}


for(int i=1;i<=10;i++)
{
printf("hehe\n");
}

 🛳️🛳️我们可以看到,for循环的代码量比while循环更少。事实上,while循环能进行的内容,for循环都能做到,并且更加简洁,但是由于更早之前的很多源代码都用到了while循环,也就将while循环保留了

 同样,在for中遇到break就会退出循环,遇到continue就会终止本次循环,跳到表达式2进行循环判定

 for循环的一些变种使用

代码1
for(;;){
printf(“呵呵”);
}
 //for中所有部分皆可以省略
代码2
int i=0;
int j=0;
for(i=0;i<10;i++){
  for(j=0;j<10;j++){
       printf(""hehe");
     }
}

代码3
 int i=0;
int j=0;
for(;i<10;i++){
  for(;j<10;j++){
       printf(""hehe");
     }
}  

🛸🛸代码3中大家觉得有几个hehe呢?只有10个,这一点特别容易错,因为每进行一次外层循环时,内层循环中的j没有重新定义为0,已经达到并且保持边界10,就不会进入内层循环 

 3、do while的基本用法

🛳️🛳️do while 循环与while循环类似,但是do while会先进行一次循环体的内容再判断是否继续循环,下面看基本用法

do{
循环体
}while(表达式);

do-while循环为三种循环中最不常用的一种,其break和continue的用法相同

三、总结

1、代码的使用必须要有严格的格式要求,方便他人也方便自己阅读

2、基本上好的代码格式,都要尽量使用{}来进行块代码的阅读,哪怕{}中只有一条语句

3、for循环体很重要,初始化部分不能忘记,循环的判断条件,尽量前闭后开,方便阅读,比如一个数组,我们可以根据条件知道他有几个单位,这样让条件有了意义

4、前文未提,scanf当遇到‘\n’ ‘ ’时,就会停止读入,假如我们只要前面的部分,我们可以用while(getchar()!='\n')将后面没有用的部分读取掉。避免后面读取其他有用信息时错误

 

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成电吴彦祖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值