首页 > 其他分享 >与C语言的旅程之分支与循环

与C语言的旅程之分支与循环

时间:2024-10-14 11:17:10浏览次数:8  
标签:语句 旅程 int age else num printf C语言 分支

        

        C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构选择结构循环结构

        C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。

        我们可以使⽤ if 、 switch 实现分⽀结构,

        使⽤ for 、 while 、 do while 实现循环结构

1. if语句

1.1 if

if语句的语法形式如下:

if ( 表达式 )

        语句

        表达式成⽴(为真即非0),则语句执⾏,表达式不成⽴(为假即0),则语句不执⾏

        在C语⾔中,0为假⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果不 是0,则语句执⾏。

        例⼦:输⼊⼀个整数,判断是否为奇数

#include <stdio.h>

int main()
{
     int num = 0;
     scanf("%d", &num);
     if(num % 2 == 1)
         printf("%d 是奇数\n", num);
     return 0;
}

        以下为 if 语句执⾏流程与奇数判断流程

1.2 else

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

这⾥就需要 if...else... 语句了,语法形式如下:

if ( 表达式 )

        语句1

else

        语句2

        例⼦:输⼊⼀个整数,判断是否为奇数,如果是奇数打印是奇数,否则打印偶数。

#include <stdio.h>

int main()
{
     int num = 0;
     scanf("%d", &num);
     if(num % 2 == 1)
         printf("%d 是奇数\n", num);
     else
         printf("%d 是偶数\n", num);
 return 0;
}

练习:输⼊⼀个年龄,>=18岁就输出:成年,否则就输出:未成年

#include <stdio.h>

int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age>=18)
     printf("成年\n");
 else
     printf("未成年\n");
 return 0;
}

1.3 分⽀中包含多条语句

        默认在 if else 语句中默认都只控制⼀条语句,⽐如:

#include <stdio.h>

int main()
{
 int age = 0;
 scanf("%d", &age);
 if(age >= 18)
     printf("成年了\n");
     printf("可以谈恋爱了\n");
 return 0;
}

        上⾯的代码,你会发现输⼊的值不管是>=18还是<18,“可以谈恋爱了”,都会打在屏幕上

        这是因为 if 语句只能控制⼀条语句,就是 printf("成年了\n"); ,

        if语句为真,则打印成年了, if语句为假,则不打印,对于 printf("可以谈恋爱了\n");

        是独⽴存在的,不管if语句的条件的真 假,都会被执⾏。

        那如果我们要if语句同时控制2条语句,怎么办呢?

        那就要使⽤ {} 将代码括起来, else后也可以跟上⼤括号。

如下:

#include <stdio.h>

int main()
{
     int age = 0;
     scanf("%d", &age);
     if(age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句 
     {
         printf("成年了\n");
         printf("可以谈恋爱了\n");
     }
 return 0;
}
#include <stdio.h>

int main()
{
     int age = 0;
     scanf("%d", &age);
     if(age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句 
     {
         printf("成年了\n");
         printf("可以谈恋爱了\n");
     }
     else //else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句 
     {
         printf("未成年\n");
         printf("不可以早恋哦\n");
     }
 return 0;
}

1.4 嵌套if

        在 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 相当于嵌套在else语句中,形成了嵌套结构 
         printf("输⼊的数字是正数\n");
     else
         printf("输⼊的数字是负数\n");
 
 return 0;
}

        上图中的代码就是嵌套在前⾯的 else ⼦句中的,构成了嵌套的if语句。

        再⽐如:

输⼊⼀个整数,如果是正数,再判断是奇数还是偶数,并输出;

 

如果不是正数则输出:⾮正数。

#include <stdio.h>

int main()
{
     int num = 0;
     scanf("%d", &num);
     if(num>0)
     {
         if(num%2 == 0)
             printf("偶数\n");
         else

             printf("奇数\n");
         }
         else

         {
             printf("⾮正数\n");
         }
 return 0;
}

        上⾯的代码中,代码也是嵌套在 if 语句中的,构成了嵌套的 if 语句。 以上就是嵌套if语句的语法,有了嵌套if语句,就可以完成更多复杂逻辑的判断。

        练习:

输⼊⼀个⼈的年龄 如果年龄18岁,打印"少年"

如果年龄在18岁⾄44岁打印"⻘年"

如果年龄在45岁⾄59岁打印"中⽼年"

如果年龄在60岁⾄89岁打印"⽼年"

如果90岁及以上打印"⽼寿星"

参考代码:

    //⽅法1 

#include <stdio.h>

int main()
{
     int age = 0;
     scanf("%d", &age);
     if(age<18)
         printf("少年\n");
     else if(age<=44)
         printf("⻘年\n");
     else if(age<=59)
         printf("中⽼年\n");
     else if(age<=89)
         printf("⽼年\n");
     else

     printf("⽼寿星\n");
 return 0;
}
 //带上⼤括号更容易看明⽩ 

#include <stdio.h>

int main()
{
     int age = 0;
     scanf("%d", &age);
     if(age<18)
     {
         printf("少年\n");
     }
     else 
     {
         if(age<=44)
         {
             printf("⻘年\n");
         }
         else 
         {
             if(age<=59)
         {
              printf("中⽼年\n");
         }
         else 
         {
         if(age<=89)
              printf("⽼年\n");
         else

         printf("⽼寿星\n");
         }
     }
 }
 return 0;
}

1.5 悬空else问题

        如果有多个 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;
}

        程序运⾏的结果是啥?

        很多人,上来以判断 a 是0,不等于1,那就执⾏ else ⼦句,打印 haha  但是当你去运⾏代码,输出的结果是:啥都不输出。

        为什么呢?

         这就是悬空 else 的问题,如果有多个 ifelse ,可以记住这样⼀条规则, else 总是跟最接近 的 if 匹配。 上⾯的代码排版,让 else 和第⼀个 if 语句对⻬,让我们以为 else 是和第⼀个if匹配的,当 if

        语句不成⽴的时候,⾃然想到的就是执⾏ else ⼦句,打印 haha

        但实际上 else 是和第⼆个 if

        进⾏匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不 成⽴,嵌套 ifelse 就没机会执⾏了,最终啥都不打印。

         如果代码改成下⾯这样就更加容易理解了

#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;
}

或者如果我们希望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. 关系操作符

        在使用if......等,顺序结构选择结构循环结构,的时候常常要在表达式中使用一些关系操作符。因此在下面的学习中我们简单了解一些关系操作符。

        C语⾔⽤于⽐较的表达式,称为“关系表达式”(relational expression),⾥⾯使⽤的运算符就称为“关系运算符”(relational operator),主要有下⾯6个。

• “> ”         ⼤于运算符

• “<”          ⼩于运算符

• “>=”        ⼤于等于运算符

• “<=”        ⼩于等于运算符

• “==”        相等运算符

• “!=”         不相等运算符

下⾯是⼀些例⼦。

标签:语句,旅程,int,age,else,num,printf,C语言,分支
From: https://blog.csdn.net/do_yo/article/details/142911277

相关文章

  • C语言分支与循环的学习(小知识)
    学习目录 1.if 表达式成立(为真),则语句执行;表达式不成立(为假),这语句不执行。    注解:C语言中,非零表示真,0表示假。如果一个表达式的结果不是0,这语句执行。反之,则语句执行。实例:输入一个整数,判断是否为奇数该程序的执行逻辑是包含头文件#include<stdio.h>,输入主函数,......
  • 有关C语言中的数据类型(持续更新)
    有关计算机中的数据单位:计算机存储容量基本单位是字节(byte)字节byte:8个二进制位(bit)为一个字节(B),最常用的单位。一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。计算机的最小存储单位:比特(bit)位bit(比特)(BinaryDigits):存放一位二进制数,即......
  • C语言中输入/输出缓冲区行为乱序的问题
    问题代码这一串代码就是输出提示,读取输入,这样做3遍但是看到运行结果会发现,第二个和第三个的提示字符串输出到同一行了,没法输入操作符原因这是因为输入缓冲区的缘故当我们输入第一个数字1的时候,按下回车确认,但同样的,回车的换行符也同样保留在输入缓冲区了,数字1被读取消耗掉......
  • 刷c语言练习题8(牛客网)
    1、如果有inta=5,b=3,在执行!a&&b++;后a和b的值分别是()A、5,3B、0,1C、0,3D、5,4答案:A解析:按照优先级顺序,先计算!a,得到0。由短路法则,b++不进行计算,又!a并没有改变a的值,所以a和b的值分别是5,3,选择选项A。2、以下程序的输出结果是()1234567main(){     ......
  • 【妙趣横生】01_C语言的指针是啥?为啥那么难懂?
      引入:C语言的指针是啥?为啥那么难懂?C语言中的指针是C语言的一个核心概念,也是其强大和灵活性的重要来源之一。然而,对于初学者来说,指针确实可能是一个难以理解的概念。下面我会尽量用简单的语言来解释什么是C语言中的指针,以及为什么它可能会让人觉得难懂。趣味解释:C语言......
  • 【趣学C语言和数据结构100例】
    【趣学C语言和数据结构100例】问题描述找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无......
  • PTA C语言 7-1 字符串比对 单位 郑州轻工业大学输入两个长度相同的字符串,字符串长度小
    7-1字符串比对分数10作者 zzuli单位 郑州轻工业大学输入两个长度相同的字符串,字符串长度小于20,且只包含英文字符。将两个字符串逐字符对比的结果输出(由+和-构成的一行字符),具体规则如下:如果两个字符串对应字符是同一字母则输出+如果两个字符串对应字符不是同一字母......
  • c语言栈-回文
    include<stdio.h>include<stdlib.h>defineMAXSIZE7//定义结构体structStack{charworld[MAXSIZE];inttop;};//定义栈structtemp{structStacks;};intmain(){Stacks{};//入栈charc1[MAXSIZE]={0};printf("输入字符串,最多%d个字符\n",MAXSI......
  • C语言中以下概念,以及这些概念之间的关系: 1.代码段 2.数据段 3.堆栈 4.全局变量 5.局部
    在C语言程序中,内存布局通常被分为几个主要的区域,每个区域都有不同的用途。以下是关于代码段、数据段、堆栈、全局变量、局部变量和函数的详细描述,以及它们之间的关系。1.代码段(TextSegment)代码段(也称为textsegment)是程序的只读部分,存储的是程序的指令(即代码)。这是可执行文......
  • C语言在Linux上编程的步骤
    如果对你有帮助,请点个免费的赞吧,谢谢汪。(点个关注也可以!)如果以下内容需要补充和修改,请大家在评论区交流~让大家都看见1.编程前的准备1.1新建文件夹mkdir【选项】【文件名】1.2选择编程工具1.使用VScode:code【文件或者目录】2.使用vi编译器(这里先不使用)1.3打开编......