C语言——入门分支与循环

简介: C语言——入门分支与循环

1.if循环结构

if 语句的语法形式如下:
if
    ( 表达式 )
 
表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏
如:
#include<stdio.h>
 
int main()
{
    int a = 8;
    if (a < 9) {                   //默认情况下,if else后只跟一条语句时,不需要大括号括进
        printf("hehe");        //如果多条语句,则放进大括号   注:为方便理解,最好都放进大括号里!
    }
    return 0;
 
}
 
输入8,满足8<9,则输出hehe;

1.1else语句(常常与if搭配)

如果一个数不是奇数,那就是偶数了,如果任意一个整数,我们要清楚的判断是奇数还是偶数怎么表示呢?

这⾥就需要 if...else... 语句了,语法形式如下:
判断一个整数为偶数还是奇数:
#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if (num % 2 == 1)
        printf("%d 是奇数\n", num);
    else                                 //不满足奇数则执行else语句输出偶数
        printf("%d 是偶数\n", num);
    return 0;
}

在 if else 语句中, else 可以与另⼀个 if 语句连用,构成多重判断。

如:要求输入一个整数,判断输入的整数是0,还是正数或者负数。请看如下代码:

#include <stdio.h>
 
int main()
{
       int num = 0;
       scanf("%d", &num);
       if ( num == 0)  
              printf("输⼊的数字是0\n");
       else if    (num > 0) //这⾥的if 相当于嵌套在els语句中,形成了嵌套结构
              printf("输⼊的数字是正数\n");
      else
              printf("输⼊的数字是负数\n");
 
return 0;
 
}

如有更多要求,可无限嵌套。

如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近的 if 匹配。

我们⾸先从下⾯代码开始  

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

运行代码,输出的结果是:什么都不输出

2.关系操作符

>、<、>=、<=、==、!=(不等于)

通常返回0或1表示真假

&&:并且

||:或者

条件操作符

1.  exp1?exp2::exp3

如果exp1为真,则执行exp2,且exp2的结果为整个表达式的结果,如果exp1为假,则执行exp3,exp3的结果为整个表达式的结果

逻辑操作符:&&,||,!

!:逻辑取反运算符(改变单个表达式的真假,真变假,假变真)

&&:与运算符,并且的意思(两侧为真,则为真,否则为假)

||:或运算符,或者的意思(至少一个表达式为真,则为真,否则为假)

!:

a !a
非0                       真--> 0                           假
0                           假--> 非0                        真

&&:

a b a&&b
非0 0 0
0 0 0
非0 非0 非0

||:

a b a||b
0 0 非0
非0 非0 非0
非0 0 非0

3.短路

C语言逻辑运算符还有一个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。

如果左边的表达式满足逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。

if ( day>= 3 && day <= 5)

表达式中&& 的左操作数是 day >= 3 ,右操作数是 day<= 5 ,当左操作数 day >= 3 的结果是0的时候,即使不判断 day<= 5 ,整个表达式的结果也是0。

所以,对于&&操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏。


对于 || 操作符是怎么样呢?我们结合前面的代码:

if (day == 12 || day==1 || day == 2)

如果day== 12,则不用再判断day是否等于1或者2,整个表达式的结果也是1。

所以, || 操作符的左操作数的结果不为0时,就无需执行右操作数。

总结:

对于&&操作符来讲:有假则输出假

对于||操作符来讲:有真则输出真

4.switch语句

除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。

switch 语句是一种特殊形式的if...else 结构,用于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。

如:

switch (expression) {
 
    case value1: statement
    case value2: statement
 
    default: statement
}

注意:

  • switch 后的 expression 必须是整型表达式
  • case 后的值,必须是整形常量表达式
  • case 和后边的数字之间必须有空格
  • 每一个 case 语句中的代码执行完成后,需要加上 break ,才能跳出这个switch语句。否则将会执行下一个case,直到执行完

问:想一想,如果switch语句中没有break将会怎么样呢?

输入5,结果出来为“余数是1”,好像与加了break输出是一样的,是否觉得没有问题呢?

那我们接着往下看:

怎么输出了两个。我们从表达式中看,输入4,4/2==0,则运行case 0;输出“整数,余数为0”,因为没有返回语句,所以接着运行case 1;所以输出了两个。

如果switch的表达式中无法表达case()时,就要引用default

switch (expression) {
     case value1: statement                    
     case value2: statement              // 如果不满足case 1,case 2
default: statement                           //则运行default的表达式
}

在 switch 语句中case语句和default语句有要求顺序吗? default 只能放在最后吗?

其实,在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要你的顺序是满足实际需求的就可以。

但一般情况下是把default语句放在最后处理的(易于对循环的理解)。

5.while与for循环

C语言提供了3种循环语句, while就是其中⼀种,接下来就介绍⼀下 while 语句。

while 语句的语法结构和 if 语句非常相似。

 

if与while
#include <stdio.h>
int main()
{
if(1)
     printf("hehe\n");           //if后边条件满⾜,打印⼀次hehe
     return 0;
}
让我们再来看看while语句
 
#include <stdio.h>
int main()
{
while(1)
     printf("hehe\n");           //while后边的条件满⾜,死循环的打印hehe
     return 0;
}

他们的区别是while语句是可以实现循环效果的。

for 循环是三种循环中使用最多的,for循环的语法形式如下:
for(表达式1; 表达式2; 表达式3)
语句();

如果有多个表达式时,要用大括号括起来

表达式1 用于循环变量的初始化

表达式2 用于循环结束条件的判断

表达式3 用于循环变量的调整

6.do while语句

while 和 for 这两种循环都是先判断,条件如果满足就进⼊循环,执行循环语句,如果不满足就跳

出循环;

而do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执行while 后的判断表达式,表

达式为真,就会进行下⼀次,表达式为假,则不再继续循环。

#include <stdio.h>
int main()
{
     int i = 1;
  do                     //当i的值进入,先执行的printf(“%d”,i),在进行i=i+1,最后在进行i的判断
{
     printf("%d ", i);
     i = i + 1;
}    while(i<=10);
 
return 0;

7.continue

continue 是继续的意思,在循环中的作用就是跳过本次循环中continue 后边的代码,继续进行

下⼀次循环的判断。

#include <stdio.h>
int main()
{
int i = 1;
     while(i<=10)
{
     if(i == 5)
continue;
                     //当i等于5后,执行continue,直接跳过continue的代码,再次进入循环
                 //因为这里跳过了i = i+1,所以i⼀直为5,程序将会陷⼊和死循环
    printf("%d ", i);
    i = i+1;
}
return 0;
}

8.goto语句

C语言提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同一个函数内跳转到设置好的标号处。

例如:

#include <stdio.h>
int main()
{
printf("hehe\n");
      goto next:
     printf("haha\n");            //这里本应该打印hehe,但由于goto next
                    
     next:                            //所以直接跳过进行当行语句
     printf("跳过了haha的打印\n");
return 0;
}

注:

对于goto语句一般需要少使用,因为大量的goto语句会使你逻辑混乱


oi!!!点个赞走吧



相关文章
|
11天前
|
C语言
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
42 19
|
11天前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
65 18
|
11天前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
41 18
|
11天前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
43 13
|
11天前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
29 6
|
11天前
|
C语言
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
35 5
|
11天前
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
36 4
|
11天前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
31 1
|
1月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
103 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
3月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
52 8

热门文章

最新文章