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

发布时间:2024年01月23日

???欢迎大家来到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语句会使程序逻辑被破坏,造成不可预想的后果。

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

文章来源:https://blog.csdn.net/2302_81149370/article/details/135045512
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。