首页 > 其他分享 >c语言分支循环语句

c语言分支循环语句

时间:2024-11-19 23:14:43浏览次数:3  
标签:语句 ... int else while 循环 分支

大家好!今天为大家带来的是有关分支与循环语句的相关内容,希望对您有所帮助。

正文如下:

众所周知,c语言是结构化的程序设计语言,其中的结构化就体现在对于三大基本结构的多元化使用,而这三大结构分别是:顺序结构,选择结构,循环结构

通过对三大结构的学习,我们就可以掌握c语言程序的简单编写了!

我们可以通过if...else 和switch 来进行我们的选择

for,while和do...while来帮助我们进行循环执行我们的代码

1,if语句

1.1if

if在英语中就是如果的意思,我们可以通过它进行我们的选择

if的语法为:if(条件){...}

对于条件,判断的是这个条件的真与假,如果是真,就执行大括号内的内容,如果是假,就跳过该语句。

对于假的概念,在计算机中,只要是 0就是假

#include<stdio.h>
int main()
{
    int n = 0;
    if(n == 1)
    {
     printf("你爱我");
    }
    return 0;
}

如上一般,n是0 它不是1,条件为假,所以你爱我是不会输出的。

1.2else

当我们在选择东西的时候,不要这个了,但是我们想要另一个,我们会选择else

else的语法为:if(){};else{}

就是很显然的在if后面加上else就行了

当我们有多个选项时我们就可以这样写了

if(条件1){...}

else if(条件2){...}

else if(条件...){...}

else{...}

这样就可以方便我们的选择了,当然最后一个else可以不要,如果要就代表它包含的条件是除了之前条件之外的条件了,使用时应当小心。

应当注意的是:在if(条件)+语句;这种写法也是可以的,不加大括号时,只能填入一条语句,超出就会离开if的作用范围了,就会出现错误。

​
#include<stdio.h>
int main()
{
    int age = 0;
    scanf("%d",&age);
    if(age < 18)
    printf("未成年,不准谈恋爱!");
    else
    printf("已成年,可以谈恋爱!");
    return 0;
}

​

如上一般,当只有一条语句时,可以不加大括号

1.3悬空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在屏幕上面,但是这个代码却什么都没有打印出来。

究其原因是因为我上来就将第一个If和else对齐,让人误解了,实际else是与第二个if对齐的,当第一个a是否等于1条件判断为假后,就不执行里面的内容了。

当代码写成下面这种形式时就可以很方便的看出来问题了:

 #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,switch语句

除了if语句以外,c语言还提供了,switch语句来实现我们的选择

switch是一种特殊的if...else语句,但是更加的简洁明了。

语法如下:

switch(整型表达式)

{

case 整型常量表达式 :

        语句1;

        break;

case 整型常量表达式 :

        语句2;

        break;

......

defaut:

        语句end;

}

如上,当其他选项都不执行时就会执行default语句

每一个case语句执行完后,都需要加上一个break;跳出switch语句

如果不加就会将后面其他的语句也一并执行了。

我们的每一个case与后面的整型常量表达式中间都需要一个空格,整型常量表达式之后需要加上:

#include<stdio.h>

int main()
{
	char ch;
	scanf("%c", &ch);
	switch (ch)
	{
	case 'a':
		printf("A");
		break;
	case 'b':
		printf("B");
		break;
	case 'c':
		printf("C");
		break;
	default:
		printf("NO");
		break;
	}

	return 0;
}

还有一点需要注意的是,对于字符类型是归类到整型家族的,所以这个整型常量表达式可以写成符号的形式。

default的使用;

当我们选项中的值无法与其他选项匹配时,就执行我们的deault语句

对于其中default和case的顺序问题:

在一般情况中,default是放在case之后的,但是放在前面也是没有问题的,只要符合你的代码逻辑

3,while循环

c语言提供了三种循环语句,while是其中的一种,它的使用与if相似

语法如下:

while(条件){...}

不得不提的就是,我们在写代码的时候一定要避免死循环的发生,简单一点的就是不要使我们条件没机会变成假(0)

与if相似的是,当我们只有一条语句去执行时,我们可以不加大括号

当有多条语句去执行时,我们就需要加入大括号了

我们写个小代码来看看和if之间的差别吧:


#include <stdio.h>

 int main()
 {
 if(1)
   printf("hehe\n");
//if后边条件满⾜,打印⼀次hehe 
 return 0;
 }
#include<stdio.h>
int main()
{
    while(1)
        printf("hehe\n");
//条件成立死循环的打印hehe
    return 0;
}

所以他两是很相似的,但是while可以进行多次的循环操作这个代码

例:循环打印1~10的数

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

这样我们就通过一个简单的代码实现了循环的打印1~10的数字

4,for循环

for也是一种循环,是我们平时使用的最多的一种循环

语法如下:

for(表达式1; 表达式2; 表达式3){...}

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

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

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

关于这几个表达式执行的顺序是:

首先由我们的表达式1开始执行,将循环变量初始化后,判断循环条件是否为真,为真就执行大括号内的语句,执行完大括号内的语句之后就执行表达式三,对循环变量进行调整。准备下一次的循环,之后的循环就不在执行表达式1了,直接判断循环条件,进行语句的执行。

for的简单使用:

#include<stdio.h>
//打印1~10的数字
int main()
{
    int i = 0;
    for(i = 1; i <= 10; i++)
    {
        printf("%d ",i);
    }

    return 0;
}

如上,跟while循环来比较是很相似的,但是for循环,更加的方便,它将定义,条件,调整几个都写在了一起,使用更加方便

5,do...while循环

do...while循环是跟while 循环差不多的,区别在于do...while循环会先去执行一次语句,再进行循环的判定,可以有助于某些特定情况下的处理。

语法如下:
do{...}while(条件);

#include<stdio.h>
//打印1~10的数
int main()
{
    int i = 1;
    do
    {
        printf("%d ", i);
        i++;
    }while(i <= 10)

    return 0;
}

如上便是do...while循环的简单使用

6,break和continue关键字

在循环过程中,如果遇见某种特殊要求,需要停止循环时,我们就会使用到break与continue关键字

break:break是一种永久的终止循环,当遇到break时就会不在执行循环里面break之后的语句,跳出循环,执行循环之后的语句

continue:continue的作用是跳过本次循环之后的语句,进行下次的循环,在for循环和while循环中,使用有所差异

1,break举例

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

如上代码,当执行到i等于5时满足if条件执行break关键词,跳出while循环,停止打印,而且可以发现5也没有被打印出来,所以break会跳过之后的语句。

2,continue举例

continue是继续的意思,在循环中的作用就是跳过该次循环之后的语句,继续之后的循环

那如果将上面的代码换成continue会怎么样呢?

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

不难发现,光标一直在动,程序一直在执行之中,导致了死循环

为什么呢?

实际上,当continue执行后,后面的i++就没有执行,导致i一直就是5,致使死循环的发生了

可以得出结论是循环的调整如果在continue之后,就可能造成死循环的发生,平时要注意!

2,for循环之中的break和continue

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

    return 0;
}

跟上面在while中类似

如果改成continue会怎么样呢?

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

    return 0;
}

我们会发现出现了不同!!!

为什么会和while不同呢?

我们发现for循环循环变量的调整是在前面写在一起的,所以continue不会影响到循环变量的调整。

在do...while循环中,也是和while一样,读者可以自行尝试。

这就是continue在for循环和while循环中的不同差异了

希望这篇文章能够对您有所帮助!

标签:语句,...,int,else,while,循环,分支
From: https://blog.csdn.net/qiuyunoqy/article/details/143837560

相关文章

  • 针对初学者的C和C++23的对比学习-4.循环结构的学习
    4.循环结构的学习学习目标:学习内容:了解for语句:for循环的执行流程了解while语句:while循环的执行流程了解dowhile语句:dowhile循环的执行流程了解break和continue的使用for,while和dowhile的对比练习学习目标:了解循环结构了解for语句了解while语句了解d......
  • C语言分支和循环相关游戏
    文章目录猜数字游戏1随机数生成1.1rand1.2srand1.3time1.4设置随机数的范围2.猜数字游戏实现猜数字游戏游戏要求:电脑自动生成1~100的随机数玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束1随机数生成如何产生随机数,一......
  • 2024/11/18日 日志 数据结构实验(1)---链表逆置、线性表A,B顺序存储合并、双向循环链表应
    链表逆置题目:https://pintia.cn/problem-sets/1855808612225744896/exam/problems/type/6?problemSetProblemId=1855808768018968576解答:点击查看代码structListNode*reverse(structListNode*head){structListNode*prev=NULL;structListNode*current=head;......
  • 循环内的会被其他核修改的变量需要使用volatile的例子说明,及内存屏障的原理及使用
    一、背景之前在做 rt-linux之防止优先级反转-CSDN博客 里的优先级反转的实验的验证时,在模拟长时间占锁的代码里使用了死循环死等一个标志位的方式,遇到了这篇博客里说的这个不加volatile导致的代码运行与编写预期不一致的情况。我觉得是一个比较典型的情况,所以有必要单独写一......
  • 【C语言的奥秘2】分支语句、循环语句、转向语句(1)
    一、控制语句及其分类控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:1.条件判断语句也叫分支语句:if语句、switch语句;2.循环执行语句:dowhile语句......
  • c语言的循环结构
    循环结构在生活中我们常常遇到需要重复处理的问题,我们在编程时解决需要重复处理的问题需要使用循环语句循环语句主要有3种:while()循环;do-while()循环和for()循环while()循环用法:while(循环条件){循环体;……}说明:当程序遇到while()循环的时候,首先会判断while()的......
  • git提交提示本地分支 '(no branch)' (远程分支 = '(no branch)') 是无效的。引用名称
    这个错误提示表明你正在使用一个没有有效分支的Git仓库,或者是Git无法识别当前的分支(通常是由于HEAD被指向了一个无效或空的引用)。具体来说,`'(nobranch)'`是因为你当前处于一个`detachedHEAD`状态(即没有指向一个有效的分支),通常在你检出一个提交(而不是分支)时会出现这种情......
  • redis管理语句
    命令行删除slave节点./redis-cli-a1111111-h192.168.0.110-p6000--clusterdel-node192.168.0.10:600097c76add58386f7d592c774347651ec34651283c 命令行查看集群节点信息redis-cli-h192.168.0.110-p6000-a111111clusternodes创建集群./redi......
  • vscode go语言注释语句黄色波浪线
    go语言注释代码总是飘着黄色波浪线提示:(withoptionalleadingarticle)(ST1021)go-staticcheck,非常影响观感。经过查询发现,go-staticcheck是一个用于Go代码静态分析的工具,用来检测代码中的潜在问题、代码规范以及常见的错误。本次错误信息来自go-staticcheck中的规则ST10......
  • 前端必知必会-JavaScript For Of循环
    文章目录JavaScriptForOf循环循环遍历数组循环遍历字符串总结JavaScriptForOf循环ForOf循环JavaScriptforof语句循环遍历可迭代对象的值。它允许您循环遍历可迭代数据结构,例如数组、字符串、映射、节点列表等:语法for(variableofiterable){//要......