【C语言入门】分支和循环

 ✨✨欢迎大家来到Celia的博客✨✨

🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉

所属专栏:C语言

个人主页:Celia's blog~

目录

引言

1. if语句

1.1 if

 1.2 else

1.3 if的嵌套 

2. 操作符

2.1 关系操作符

2.2 条件操作符 

2.3 逻辑操作符

2.3.1 逻辑取反运算符 !

2.3.2 逻辑或运算符 | |​编辑

2.3.3 逻辑与运算符 &&

3. switch语句

4. 循环

4.1 while循环

4.2 for循环

4.3 do while循环

5. break 与continue语句

6.循环的嵌套

7.goto语句


引言

  在C语言中,有三种结构,分别是顺序结构,选择结构,循环结构,这篇文章将会简单介绍选择结构和循环结构。

1. if语句

1.1 if

  if语句的语法如下:

if(表达式)
{
    语句
}

在C语言中,0为假,非0为真, 如果表达式里的结果为真,就执行下面的语句,反之不执行。 

 举例:

#include<stdio.h>
int main()
{
	int a = 3;
	if(a==3)
	{
		printf("%d", a);
	}
	return 0;
}

这个程序会判断a是否等于3,如果是则输出a的值。结果如下:

 

注意: 如果if后只有一条语句,是可以不加花括号的,如果if后有多条语句,就必须加上花括号。

 1.2 else

  如果一个数不是偶数,那么这个数一定是奇数,我们用if else语句来实现判断一个数是奇数还是偶数,代码如下:

#include<stdio.h>
int main()
{
	int a ;
	scanf("%d", &a);
	if (a % 2 == 0)
	{
		printf("偶数\n");
	}
	else
		printf("奇数\n");
	return 0;
}

 

 

注意

1.else的后面是不能加“ ()”的。在这里,如果a可以被2整除,就执行if后的语句,除这种情况外,都会执行else后的语句。

2.else总是和最近的if进行匹配。

1.3 if的嵌套 

  在if else语句中,else后的语句中可以包含if,形成多重判断。举一个简单的例子。

输入一个人的成绩 grade

  • 90<grade<=100,输出A
  • 80<grade<=90,输出B
  • 59<grade<=80,输出C
  • 0<grade<=59,输出D
#include<stdio.h>
int main()
{
	int grade ;
	scanf("%d", &grade);
	if (grade>90 && grade<=100)
	{
		printf("A");
	}
	else
	{
		if (grade > 80 && grade <= 90)
		{
			printf("B");
		}
		else
		{
			if (grade > 59 && grade <= 80)
			{
				printf("C");
			}
			else
			{
				if (grade > 0 && grade <= 59)
				{
					printf("D");
				}
			}
		}
	}
	return 0;
}

我们也可以简化一下代码:

#include<stdio.h>
int main()
{
	int grade ;
	scanf("%d", &grade);
	if (grade>90 && grade<=100)
	{
		printf("A");
	}
	else if (grade > 80 && grade <= 90)
		{
			printf("B");
		}
	else if (grade > 59 && grade <= 80)
			{
				printf("C");
			}
	else if (grade > 0 && grade <= 59)
			{
				printf("D");
			}
	return 0;
}

2. 操作符

2.1 关系操作符

  • >:大于运算符
  • <:小于运算符
  • >=:大于等于运算符
  • <=:小于等于运算符
  • ==:等于运算符
  • !=:不等于运算符

例如:

a>b
a<b
a>=b
a<=b
a==b
a!=b

 关系表达式通常返回 0 或 1 ,表示真假。

注意:多个关系运算符不宜连用,比如a>b>c,实际上运算的形式为:

(a>b)>c

在上面的式子中,(a>b)会返回0或1与c进行比较。

正确的写法为:

a>b && b>c

2.2 条件操作符 

  条件操作符也叫三目操作符,形式如下:

exp1 ? exp2 :exp3

它的意思是,判断 exp1的真假,如果为真,exp2计算,计算的结果就是整个表达式的结果,如果为假,exp3计算,计算的结果就是整个表达式的结果。

比如下表面这段代码:

#include<stdio.h>
int main()
{
	int a, b;
	scanf("%d", &a);
	if (a > 5)
		b = 3;
	else
		b = 6;
	printf("%d", b);
	return 0;
}

我们可以将它改造成:

#include<stdio.h>
int main()
{
	int a, b;

	scanf("%d", &a);
	b = a > 5 ? 3 : 6;
	printf("%d", b);

	return 0;
}

2.3 逻辑操作符

  • &&:逻辑与运算符(两侧表达式都为真,则为真,否则为假)
  • | |:逻辑或运算符(两侧表达式有一个为真,则为真)
  • !:逻辑取反运算符(改变表达式的真假)

2.3.1 逻辑取反运算符 !

#include<stdio.h>
int main()
{
	int a=0, b=10;

	if(!a)
	 printf("%d", b);

	return 0;
}

如果a为真,!a就为假,如果a为假,!a就为真。 

 

2.3.2 逻辑或运算符 | |

#include<stdio.h>
int main()
{
	int a=0, b=10;

	if(a==0||b==5)
	 printf("%d", b);

	return 0;
}

 a==0 与 b==5 这两个条件满足其中一个即为真。

2.3.3 逻辑与运算符 &&

#include<stdio.h>
int main()
{
	int a=0, b=10;

	if(a==0 && b==5)
	 printf("%d", b);

	return 0;
}

 a==0 与 b==5 这两个条件必须同时满足才为真。 

如上所示,什么都没有输出。 

3. switch语句

  除if语句外,switch语句也是一种分支结构,它是一种特殊形式的if else语句,用于判断条件有多个结果的情况。

#include<stdio.h>
int main()
{
	int a;
	scanf("%d", &a);
	switch(a)
	{
	case 1 :
		printf("A\n");
		break;
	case 2 :
		printf("B\n");
        break;
	default:
	    printf("C\n");
	}

	return 0;
}

  这段代码会判断a的值,如果a的值为1,则执行case 1后的语句,如果a的值为2,则执行case 2后的语句,除了这两种情况之外,执行default后的语句。

  当switch语句进入case后,会一直执行下去直到遇到break。如果删掉break,那么执行结果是这样的:

#include<stdio.h>
int main()
{
	int a;
	scanf("%d", &a);
	switch(a)
	{
	case 1 :
		printf("A\n");
	case 2 :
		printf("B\n");
	default:
		printf("C\n");
	}

	return 0;
}

 所以一定不要忘了在每个case和default后加上break。

注意:

1.switch后括号内的值必须是整型表达式(字符会转换成ASC码)。

2.case后的值,必须是整形常量表达式(字符会转换成ASC码)。

3.case和default没有先后的位置限制。

4. 循环

4.1 while循环

  while循环的结构如下:

  while(条件)

{

        循环体;

}

  当程序执行到while循环时,会先判断条件是否为真,如果为真,则执行一次循环体,然后再次进行条件判断。如果循环体执行了n次,那么条件语句则执行了n+1次。

4.2 for循环

  for循环的结构如下:

for(表达式1;条件 ; 表达式3)

{

        循环体;

}

  当程序执行到for循环时 ,会先执行表达式1,之后进行条件判断,如果为真,则执行一次循环体,最后执行表达式3,再进行条件判断。如果循环体执行了n次,那么条件语句则执行了n+1次。

4.3 do while循环

do while循环的结构如下:

do

{

        循环体;

}while(条件);

  当程序执行到do while循环时,会先执行一次循环体,然后进行条件判断,如果为真,则执行一次循环体,再进行条件判断。如果循环体执行了n次,那么条件语句则执行了n次。 注意do while循环的while后需要加上一个分号。

5. break 与continue语句

  跳出循环的方法除了不满足循环条件外,还可以用break和continue语句来对循环进行控制。

  • break:跳出整个循环体。
  • continue:跳出当前循环,进行下一轮循环。

来举一个简单的例子:

 

在这段代码中,当 i 等于1 的时候,跳出循环,只打印了2个c。

在这段代码中,当i等于1的时候,执行continue语句,跳出当前一轮循环,并进行下一轮循环。故当i等于1的时候没有打印c,总共只打印了4个c。

6.循环的嵌套

  

这段代码中, 在for循环里嵌套了一个for循环。外层循环会执行4次,每次外层循环会执行一次内层循环,每次内层循环会打印4个 * ,之后在每次外层循环最后进行换行,就可以打印出上图所示的图案。当然,while循环,do while循环,for循环都是可以互相嵌套的,需要视不同情况进行选择。

7.goto语句

goto语句的结构如下:

again:

        代码段

goto again;//again可以替换成其他的字符,仅仅作为标识使用。

  goto语句可以使程序跳转到任意代码段,如下图所示:

在这段代码中,当执行到if语句时,判断条件为真,使程序跳转到了对应的代码段,这就使得c被打印了2次。goto语句虽然方便,但是在日常代码的书写时不推荐使用,因为不当的使用goto语句会使程序逻辑被破坏,造成不可预想的后果。

以上就是分支与循环的全部内容啦~

相关推荐

  1. C语言分支循环语句—while

    2024-01-24 12:48:01       23 阅读
  2. C语言分支循环总结

    2024-01-24 12:48:01       23 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-24 12:48:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-24 12:48:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-24 12:48:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-24 12:48:01       20 阅读

热门阅读

  1. backtrader结合大语言模型chatGPT

    2024-01-24 12:48:01       35 阅读
  2. 大语言模型常见的文本切分方式整理汇总

    2024-01-24 12:48:01       33 阅读
  3. IOS-闭包学习-Swift

    2024-01-24 12:48:01       38 阅读
  4. Node.js Shell 脚本开发指南(下)

    2024-01-24 12:48:01       30 阅读
  5. Vue nextTick使用场景及实现原理

    2024-01-24 12:48:01       31 阅读
  6. 2.docker client

    2024-01-24 12:48:01       32 阅读
  7. 数据库(SQL语句:DML&&DQL)

    2024-01-24 12:48:01       27 阅读
  8. R语言【taxa】——taxa包中的类

    2024-01-24 12:48:01       35 阅读