c语言初阶学习1(分支,循环语句)

目录

一,初识C语言

 二,分支语句和循环语句

   1.什么是语句?

2.分支语句(选择结构)

2.1 if语句

2.2 switch语句

3.循环语句

3.1 while循环

3.2  for循环

3.3 do  while()循环

3.4 练习

 4.goto语句



一,初识C语言

  文章链接:(1条消息) 初识c语言_Shany_Ming的博客-CSDN博客

                     (1条消息) 初识c语言2_Shany_Ming的博客-CSDN博客

  说实话,做得并不好 但也能凑活着看,也可以去看一些大佬写的。

 二,分支语句和循环语句

   1.什么是语句?

c语言中有五种语句:

a.表达语句

b.函数调用语句

c.控制语句

d.复合语句

e.空语句

  接下来,我们来介绍控制语句

控制语句用于控制程序的执行流程,来实现程序的各种结构方式,他们由特定的语句定义符组成,c语言有九种控制语句。(会用就行,但想会用就得弄清本意)

可分为以下三类:

1.条件判断语句也叫分支语句:if语句,switch语句;

2.循环执行语句:do while语句,while语句,for语句;

3.转向语句:break语句,goto语句,continue语句,return语句。

2.分支语句(选择结构)

   举个最简单的例子:如果你好好学习,拿一个好offer,你就是下一代龙王。

 如果你不学习,失业,工地搬砖。这就是选择

2.1 if语句

首先,我们来了解一下if语句的语法结构:

这便是结构,当我们也需要实例:

 

if后的括号内条件为真就执行,条件为假就不执行,如果if后面只有一个语句就不用代码块即{}

  如果有多条语句就需要,但实际我们可以养成使用代码块的习惯,因为很多时候我们都会用到,像for,while,do while循环等。

    既然有真,那必然有假,在c语言中,我们用0表示假,非0则为真,乍看好像没有什么用其实用处可不小,先记住,咱以后再详讲。

   当然我们也可以只用if 不用else,这个是被允许的。

2.1.1 悬空else

  这个点在这讲过:(4条消息) c语言中的易错点(对萌新很有帮助)_Shany_Ming的博客-CSDN博客

 现在再来详细的讲一遍:

  else与离他最近的if匹配 而不是与和它格式对齐的if匹配

什么意思呢?

当你写出这类代码的时候就知道了

 对此我们进行修改

 这说明适当的使用{}可以是代码逻辑更清楚,其次代码风格很重要,你未来的同时可不希望有一个猪队友。

2.1.2 练习

1.判断一个数是否为奇数

2.输出1-100间的奇数

2.2 switch语句

当我们有许多选择条件时,用if else的形式会变得十分繁琐,这时候就需要用到我们的switch语句

何为语句项?

是一些case语句

就如这种形式,因为在switch语句中,我们无法直接实现分支,搭配break:才能实现真正的分支。

如果没有break;将进行下一个case直至语句完或出现break。(易错点里讲过)

那如果周六与周日写成周末,我们能这样操作

 

 如果周一到周五写成工作日,那也是这样

 break语句的实际效果是把语句列表划分为不同分支部分

2.2.1 default子句

有时会有说不完的条件,在if语句里,我们用else处理,而在switch历,我们用default子句,当然没有这个子句也不会报错,就想没else一样,但你如果不行忽略这些要被跳过的条件就可以使用

 default写在与case相同的位置,且必须在switch语句的最后,我们要养成放default与break的好习惯。

2.2.2 练习

1.用switch语句表示高三学生的学习日(只有周天休息)

3.循环语句

循环语句有三种:

1.while

2.for

3.do while

3.1 while循环

我们已经学习过了if语句来进行判断,但是if语句的局限性导致条件判断只能进行一次。

生活中同一件事我们需要多次完成,那我们该怎么做了,很多个if语句吗?那样太愚蠢了

那么我们应该怎么做呢?

  c语言中给我们引入了:while语句,可以实现循环。

    while 语法结构

while(表达式)

循环语句

 我们来实现一个程序:

        在屏幕上打印1-10的数字

上面便是while的执行方式,while后括号里的内容与if一致,为真则执行。

说到这,聪明的朋友就会想到:那会不会死循环?当然,这是肯定的,那怎么执行呢?

其实我们在上文中就提到过:c语言中0为假,非0为真,那这个问题就变得简单了

while(1)

{

循环语句

}

这便是一个死循环,当然,你也可以改成其他数,非0即可,那死循环如何破解?它有什么用了?让我们继续来看

3.1.1 while语句中的break与continue

break介绍

实例演示:

  此处提醒一句 = 号是赋值,把后者的值赋值给前者,而 == 为判断 就如我们小学加法里的那个等号

   从这个实例我们看出:循环只打印了1 2 3 后面的语句直接停止。

总结:

在循环中只要遇到break,就停止后面的所有循环,直至终止循环。

如此,终止死循环的问题我们就解决了。

continue介绍

实例演示:

咦?输出结果和break一样,难道用处也一样? 

 那我们对代码进行细微的修改

加了之后发现结果更奇怪了 我们先来看一下规律 在排除2的情况下它其实是个依次加2的等差数列,刚好与循环语句中的两个i=i+1对应,那么问题出在第一个2?当然不是,我们第一进入循环传进的是1,+1后刚好是2,打印后又加了1变成了3,我们继续第二次循环以3传入,3+1=4,刚好符合if条件,本来应该打印4,然后就出问题了,那为什么会变成5呢?4+1=5,这便是答案,4又被传上去了。

总结:

continue语句在while循环中的作用:

continue用于终止本次循环的,也就是本次循环continue后边的代码不会执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

3.2  for循环

已经有了一个循环,我们为什么还要for循环呢?

3.2.1 语法

for(表达式1;表达式2;表达式3)

循环语句

表达式 1
表达式 1 初始化部分 ,用于初始化循环变量的。
表达式 2
表达式 2 条件判断部分 ,用于判断循环时候终止。
表达式 3
表达式 3 调整部分,用于循环条件的调整。
实际例子:打印1-10
#include <stdio.h>
int main ()
{
       int i = 0 ;
//for(i=1/* 初始化 */; i<=10/* 判断部分 */; i++/* 调整部分 */)
        for ( i = 1 ; i <= 10 ; i ++ )
         {
               printf ( "%d " , i );
         }
   return 0;
}
我们来对比一下两个循环:
可以发现在 while 循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较 远,这样 查找修改就不够集中和方便。所以,for 循环的风格更胜一筹; for 循环使用的频率也最高。

3.2.2 break和continue在for循环中的应用

我们发现在 for 循环中也可以出现 break continue ,他们的意义和在 while 循环中是一样的。
但是还是有些差异:

其实也是跳出循环与终止本次循环,只是i++条件的位置可能不同,结果与while不同是因为循环语句不同。

3.2.3 for语句的循环控制变量

 建议:

1. 不可在 for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议 for 语句的循环控制变量的取值采用 前闭后开区间 写法。

int i = 0 ;
// 前闭后开的写法
for ( i = 0 ; i < 10 ; i ++ )
{}
// 两边都是闭区间
for ( i = 0 ; i <= 9 ; i ++ )
{}
3.2.4 一些for循环的变种

 

 第一个为死循环 第二个打印了100个haha因为没打印十个呵呵第二个for循环结束,第一个for循环只执行了一次。

 打印了10个

 具体原因大家用所学知识进行分析。不懂评论区留言

3.3 do  while()循环

3.3.1 语句的语法

do
循环语句 ;
while ( 表达式 );
3.3.2 do语句的特点
循环至少执行一次,使用的场景有限,所以不是经常使用。表现为先执行后判断。

 3.3.3 do while循环中的break和continue

与上两个循环的意义一致,就不多赘述 

3.4 练习

1. 计算 n 的阶乘。
2. 计算 1!+2!+3!+……+10!
3. 在一个有序数组中查找具体的某个数字 n 。(二分查找)
4. 编写代码,演示多个字符从两端移动,向中间汇聚。
5. 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则
提示登录成,如果三次均输入错误,则退出程序。
3.4.1 参考

 

for循环也能实现,可以尝试一下

 至于1 2 过于简单,就不写了,其他大佬也写过,不会的可以去看

3.4.2 二分查找

比如我买了一双鞋,你好奇问我多少钱,我说不超过 300 元。你还是好奇,你想知道到底多少,我就让
你猜,你会怎么猜?
答案:你每次猜中间数。

 3.4.3 猜数字游戏

规则:输入一个数,判断是猜大了还是猜小了

参考代码:(1条消息) 1024为大家带来个猜数字游戏_Shany_Ming的博客-CSDN博客

 4.goto语句

C 语言中提供了可以随意滥用的 goto 语句和标记跳转的标号。
从理论上 goto 语句是没有必要的,实践中没有 goto 语句也可以很容易的写出代码。
但是某些场合下 goto 语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用 break 是达不到目的的。它只能从最内层循环退出到上一层的循环。
goto 语言真正适合的场景如下:
for (...)
    for (...)
  {
        for (...)
      {
            if ( disaster )
                goto error ;
      }
  }
   
error :
if ( disaster )
        // 处理错误情况
下面是使用 goto 语句的一个例子,然后使用循环的实现方式替换 goto 语句:
一个关机程序

不用go to 语句我们也能实现

shutdown指令不需要掌握,感兴趣的兄弟第可以去网上看看。

end.持续更新中... 

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Shany-Ming

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

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

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

打赏作者

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

抵扣说明:

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

余额充值