C语言的分支与循环语句

目录

1. if语句

1.1 if

1.2 else

1.3 嵌套if

2. 关系操作符

3. 条件操作符

4. 逻辑操作符

4.1 逻辑取反运算符 !

4.2 逻辑与运算符 &&

4.3 逻辑或运算符 ||

4.4 短路

5. switch语句

6. while循环

6.1 if和while的对比

6.2 while循环的实战

7. for循环

7.1 语法形式

7.2 for循环的实战

7.3 while循环和for循环的对比

8. do-while循环

9. break和continue语句

10. 案例展示

10.1 猜数字游戏代码实现

10.2 九九乘法表代码实现


1. if语句

1.1 if

if 语句的语法形式如下:

if (表达式)
   语句

在C语言中,0为假,非0表示真,也就是说表达式的结果如果是0(为假),则语句不执行,表达式的结果如果是非0(为真),则语句执行

例:输入一个整数,判断是否为奇数

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int num = 0;
	//输入一个数
	scanf("%d", &num);
	//判断
	if (num % 2 == 1) // == 是判断相等   = 是赋值
		printf("%d 是奇数\n", num);

	return 0;
}

1.2 else

if ... else ... 语句的语法形式如下:

if (表达式)
   语句1
else
   语句2

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

#define _CRT_SECURE_NO_WARNINGS

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

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

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年\n");
		printf("可以谈恋爱了\n");
	}
	else
	{
		printf("未成年\n");
		printf("好好学习\n");
	}
	return 0;
}

1.3 嵌套if

if else 语句中,else可以与另⼀个 if 语句连⽤,构成多重判断。有了嵌套if语句,就可以完成更多复杂逻辑的判断。

例1:输⼊⼀个整数,判断输⼊的整数是0,还是正数或者负数

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    //判断
    if (n == 0)
        printf("输入的值是0\n");
    else if (n > 0)
        printf("输入的值是正数\n");
    else
        printf("输入的值是负数\n");
 
    return 0;
 
}

例2:输⼊⼀个⼈的年龄, 如果年龄 < 18岁,打印"少年", 如果年龄在18岁⾄44岁打印"⻘年",如果年龄在45岁⾄59岁打印"中⽼年", 如果年龄在60岁⾄89岁打印"⽼年",如果90岁及以上打印"⽼寿星"

#define _CRT_SECURE_NO_WARNINGS

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

2. 关系操作符

关系操作符是C 语⾔用于比较的表达式,又之称为 “关系表达式”,在⾥⾯使⽤的运算符就称
为“关系运算符”,主要有以下六个:

  • > ⼤于运算符
  • < ⼩于运算符
  • >= ⼤于等于运算符
  • <= ⼩于等于运算符
  • == 相等运算符
  • != 不相等运算符

关系表达式通常返回 0 或 1 ,表示真假。在C 语⾔中,0 表示假,所有非零值表示真。且关系表达式常用于 if 或 while 结构中

注意:

相等运算符 == 与赋值运算符 = 是两个不⼀样的运算符,千万不要混淆。且多个运算符不宜连用。

例:我们输⼊⼀个年龄,如果年龄在18岁~36岁之间,我们输出⻘年。

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d", &age);
    if (age >= 18 && age <= 36)
    {
        printf("⻘年\n");
    }
    return 0;
}

3. 条件操作符

条件操作符也叫三⽬操作符,需要接受三个操作数的,它的形式如下所示:

exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果 exp1 为真,exp2 计算,exp3 不计算,计算的结果是整个表达式的结果;如果exp1 为假,exp2 不计算,exp3 计算,计算的结果是整个表达式的结果。

例1:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d", &a);
	b = a > 5 ? 3 : -3;
	printf("%d\n", b);
	return 0;
}

例2:使⽤条件表达式实现找两个数中的较大值

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    scanf("%d %d", &a, &b);
    int m = a > b ? a : b;
    printf("%d\n", m);

    return 0;
}

4. 逻辑操作符

逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有以下三个:

  • ! :逻辑取反运算符(改变单个表达式的真假)
  • && :逻辑与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)
  • || :逻辑或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)

4.1 逻辑取反运算符 !

例:如果 flag 为真, !flag 就是假,如果 flag 为假, !flag 就是真

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int flag = 0;
	if (!flag)
	{
		printf("do something\n");
	}
	return 0;
}

4.2 逻辑与运算符 &&

&& 就是逻辑与运算符,是并且的意思,且 && 也是⼀个双⽬操作符,使⽤的⽅式是 a && b,&& 两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假

例:⽉份是3⽉到5⽉,是春天

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int month = 0;
	scanf("%d", &month);
	if (month >= 3 && month <= 5)
		printf("春天");
	return 0;
}

4.3 逻辑或运算符 ||

|| 就是逻辑或运算符,是或者的意思, 且 || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b ,|| 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,整个表达式才为假

例1:月份是12⽉或者1⽉或者2⽉,是冬天

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int month = 0;
	scanf("%d", &month);
	if (month == 12 || month == 1 || month == 2)
		printf("冬天");
	return 0;
}

例2输⼊⼀个年份year,判断year是否是闰年

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int year = 0;
	scanf("%d", &year);
	if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
		printf("%d是闰年", year);
	return 0;
}

4.4 短路

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

  • && 左边为假,右边无需计算,整体为假
  • || 左边为真,右边无需计算,整体为真

例:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	//i = a++ && ++b && d++;
	i = a++||++b||d++;
	printf("a = %d\n b = %d\n c = %d\nd = %d\n", a, b, c, d);
	printf("i=%d\n", i);
	return 0;
}

5. switch语句

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

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

switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执⾏default ⼦句。

注意:

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

例1:输入任意一个整数,计算这个数除以三之后的余数是多少

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    switch (n % 3)
    {
    case 0:
        printf("可以整除,余数是零\n");
        break;
    case 1:
        printf("余数是1\n");
        break;
    case 2:
        printf("余数是2\n");
        break;
    }
    return 0;
}

例2:输入⼀个1~7的数字,打印对应的是星期几

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a)
	{
	case 1:
		printf("星期一");
		break;
	case 2:
		printf("星期二");
		break;
	case 3:
		printf("星期三");
		break;
	case 4:
		printf("星期四");
		break;
	case 5:
		printf("星期五");
	case 6:
		printf("星期六");
		break;
	case 7:
		printf("星期天");
		break;
	}
	return 0;
}

例3:输入1 - 5,输出的是“⼯作⽇”;输⼊6 - 7,输出“休息⽇”

int main()
{
	int a = 0;
	scanf("%d", &a);
	switch (a)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日");
		break;
	case 6:
	case 7:
		printf("休息日");
		break;
	default:
		printf("输入错误");
		break;
	}
	return 0;
}

6. while循环

6.1 if和while的对比

if 语句的语法形式如下:

if (表达式)
   语句

while语句的语法形式如下:

while (表达式)
      语句

while语句的执行流程:

⾸先上来就是执⾏判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执⾏循环语句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。

6.2 while循环的实战

例1:在屏幕上打印 1~10 的值

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int i = 1;//循环变量的初始化
	while (i <=10) //判断
	{
		printf("%d ", i);
		i++;  //调整
	}
	
	return 0;
}

例2:输⼊⼀个正的整数,逆序打印这个整数的每⼀位

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
    int i = 0;//循环变量的初始化
    scanf("%d", &i);  //123
    while (i!=0) //判断
    {
        printf("%d ", i % 10);
        i = i / 10;
    }

    return 0;
}

例3:打印1 - 100之间所有3的倍数的数字

#define _CRT_SECURE_NO_WARNINGS

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

7. for循环

7.1 语法形式

for 循环是三种循环中使⽤最多的, for 循环的语法形式如下:

for (表达式1; 表达式2; 表达式3)
    语句
  • 表达式1 循环变量的初始化 表达式2 循环结束条件的判断 表达式3 循环变量的调整
  • for循环的初始化、判断、调整三个部分是可以省略的
  • for循环的判断部分如果省略的话,意味着判断恒成立

for循环的执行流程:

⾸先执⾏ 表达式1 循环变量的初始化,接下来就是执⾏ 表达式2 的循环结束条件的判断, 表达式2 的结果如果== 0,则循环结束; 表达式2 的结果如果 != 0则执⾏循环语句,循环语句执⾏完后,再去执行 表达式3 , 调整循环变量,然后再去 表达式2 的地方执行判断, 表达式2 的结果是否为0,决定循环是否继续。整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。

7.2 for循环的实战

例1:在屏幕上打印1-10的值

#define _CRT_SECURE_NO_WARNINGS

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

例2:计算1-100之间3的倍数的数字之和

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	for (i = 1; i <= 100; i++)
	{
		//判断i是否是三的倍数
		if (i % 3 == 0)
		{
			sum += i;
		}
	}
	printf("%d ", sum);
	return 0;
}

7.3 while循环和for循环的对比

for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部分非常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就比较分散,所以从形式上 for 循环要更优⼀些。

8. do-while循环

do-while循环语句相较于while循环、for循环使用的较少,它的语法形式如下:

do
	语句;
while (表达式);

do-while语句的执行流程:

在 do while 循环中先执⾏图上的“语句”,执⾏完语句,在去执⾏“判断表达式”,判断表达式的结果是 != 0,则继续循环,执⾏循环语句;判断表达式的结果 == 0,则循环结束。

例1:在屏幕上打印1-10

#define _CRT_SECURE_NO_WARNINGS

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

例2:输⼊⼀个正整数,计算这个整数是⼏位数

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int cnt = 0;
	do
	{
		cnt++;
		n = n / 10;
	} while (n);
	printf("%d\n", cnt);
	return 0;
}

9. break和continue语句

  • break 的作⽤是⽤于永久的终止循环,只要 break 被执⾏,直接就会跳出循环,继续往后执⾏。
  • continue 的作⽤是跳过本次循环 continue 后边的代码,但是在 for 循环和 while 循环中有所差异的。

while循环和for循环使用continue的时候两者间的差异:
1.  在while循环中,continue是直接跳过去之后,来到判断部分
2.  在for循环中,continue是直接跳过去之后,来到调整部分;在while循环中,是有可能跳过调整部分的
3.  所以for循环是不容易造成死循环的,但while是有可能的

10. 案例展示

10.1 猜数字游戏代码实现

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void game()
{
	//1.生成随机数
	int r = rand() % 100 + 1;
	//2.猜数字
	int guess = 0;
	int count = 5;
	while (count)
	{
		//system("cls");
		printf("还剩下%d次机会", count);
		printf("请猜数字:>");
		scanf("%d", &guess);
		if (guess > r)
			printf("猜大了\n");
		else if (guess < r)
			printf("猜小了\n");
		else
		{
			printf("恭喜你,猜对了!!!\n");
			break;
		}
		count--;
	}
	if (count == 0)
	{
		printf("很遗憾,在规定的次数内没能猜出结果\n");
	}
}
void menu()
{
	printf("*********************\n");
	printf("****** 1. play ******\n");
	printf("****** 0. exit ******\n");
	printf("*********************\n");
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));

	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束\n");
			break;
		default:
			printf("选择错误,重新选择\n");
			break;
		}
	} while (input);
	return 0;
}

10.2 九九乘法表代码实现

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
int main()
{
	int i = 0;
	int j = 0;
	for (i = 1; i <= 9; i++)
	{
		for (j = 1; j <= i; j++)
		{
			printf("%d * %d = %2d ", i, j, i * j);
		}
		printf("\n");
	}
	return 0;
}

  • 47
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值