初识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')将后面没有用的部分读取掉。避免后面读取其他有用信息时错误

 

《餐馆点餐管理系统——基于Java和MySQL的课程设计解析》 在信息技术日益发达的今天,餐饮行业的数字化管理已经成为一种趋势。本次课程设计的主题是“餐馆点餐管理系统”,它结合了编程语言Java和数据库管理系统MySQL,旨在帮助初学者理解如何构建一个实际的、具有基本功能的餐饮管理软件。下面,我们将深入探讨这个系统的实现细节及其所涉及的关键知识点。 我们要关注的是数据库设计。在“res_db.sql”文件中,我们可以看到数据库的结构,可能包括菜品表、订单表、顾客信息表等。在MySQL中,我们需要创建这些表格并定义相应的字段,如菜品ID、名称、价格、库存等。此外,还要设置主键、外键来保证数据的一致性和完整性。例如,菜品ID作为主键,确保每个菜品的唯一性;订单表中的顾客ID和菜品ID则作为外键,顾客信息表和菜品表关联,形成数据间的联系。 接下来,我们来看Java部分。在这个系统中,Java主要负责前端界面的展示和后端逻辑的处理。使用Java Swing或JavaFX库可以创建用户友好的图形用户界面(GUI),让顾客能够方便地浏览菜单、下单。同时,Java还负责MySQL数据库进行交互,通过JDBC(Java Database Connectivity)API实现数据的增删查改操作。在程序中,我们需要编写SQL语句,比如INSERT用于添加新的菜品信息,SELECT用于查询所有菜品,UPDATE用于更新菜品的价格,DELETE用于删除不再提供的菜品。 在系统设计中,我们还需要考虑一些关键功能的实现。例如,“新增菜品和价格”的功能,需要用户输入菜品信息,然后通过Java程序将这些信息存储到数据库中。在显示所有菜品的功能上,程序需要从数据库获取所有菜品数据,然后在界面上动态生成列表或者表格展示。同时,为了提高用户体验,可能还需要实现搜索和排序功能,允许用户根据菜品名称或价格进行筛选。 另外,安全性也是系统设计的重要一环。在连接数据库时,要避免SQL注入攻击,可以通过预编译的PreparedStatement对象来执行SQL命令。对于用户输入的数据,需要进行验证和过滤,防止非法字符和异常值。 这个“餐馆点餐管理系统”项目涵盖了Java编程、数据库设计管理、用户界面设计等多个方面,是一个很好的学习实践平台。通过这个项目,初学者不仅可以提升编程技能,还能对数据库管理和软件工程有更深入的理解。在实际开发过程中,还会遇到调试、测试、优化等挑战,这些都是成长为专业开发者不可或缺的经验积累
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

成电吴彦祖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值