目录

C语言复习笔记-分支循环上

C语言复习笔记–分支/循环(上)

C语⾔是结构化的程序设计语⾔,这⾥的结构指的是 顺序结构、选择结构、循环结构. 在这里主要介绍分支结构.

分支(选择结构)

if

if 语句的语法形式

if(表达式)

语句

0为假,⾮0表⽰真,也就是 表达式的结果如果是0,则语句不执行,表达式的结果如果是 不是0,则语句执行.

if…else…

用于两种情况的选择.以及要是有多种选择要用if…if else…(if else…)…else…(本质上是 嵌套else语句 ).if/if else后面要加判断条件,但是 else后面没有判断条件.

形式例如下面代码:

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

注:1. 若if/if else/else后接不止一条语句,要用{}括起来.

2. 注意悬空else的问题,else只与离他最近的if相配对.

一个小练习:

输⼊⼀个⼈的年龄

如果年龄<18岁,打印"少年"

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

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

如果年龄在60岁以上打印"⽼年"

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	int n = 0;
	printf("请输入年龄\n");
	scanf("%d", &n);
	if (n < 18)
	{
		printf("少年\n");
	}
	else if (n >= 18 && n < 45)
	{
		printf("青年\n");
	}
	else if (n >= 45 && n <= 59)
	{
		printf("中年\n");
	}
	else
	{
		printf("老年\n");
	}
	return 0;
}

switch语句

switch语句⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式。根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值, 就执⾏ default 分⽀。格式见下:

switch (expression)

{

case value1:

statement

case value2:

statement

default:

statement

}

注:  1. switch 后的 expression 必须是整型表达式.

2. case 后的值,必须是整形常量表达式.

在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,比如 switch 后的表达式中的值⽆法匹 配代码中的 case 语句的时候 ,这时候要不就不做处理,要不就得 在 switch 语句中加⼊ default ⼦句 。

但是case只控制在哪里进入,进入之后不会跳出,所以它通常搭配break来使用.例除3余数:

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

若是想多 重情况一起输出 ,那就不用加break,在多种情况后加即可,例是否整除3:

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

关系操作符

一部分关系操作符== , != , < , > , <= , >=. (主意等于是两个等号,一个等号是赋值).

这些关系操作符的返回值为1或0,(1表示表达式的关系为真,0表示表达式关系为假). 为了避免将相等误写成赋值导致错误可以将常数写在右侧.

⼀个需要避免的错误是: 多个关系运算符不宜连用 .例如下:

https://i-blog.csdnimg.cn/direct/b81c750b65d648cc8fb4a7d30a49ba0b.png

上面图片的代码输出结果为真,这是因为 关系操作符是从左往右计算, 所以上面代码的执行方式就是(a<b)<c,因为a>b所以返回结果为0,0<c为真返回值为1.(要写区间的话要用"&&“或”||“来实现.)

条件操作符

也叫三目操作符,形式为exp1 ? exp2 : exp3.

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

练习:使⽤条件表达式实现找两个数中较⼤值。

int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int max = a > b ? a : b;
	printf("%d", max);
	return 0;
}

逻辑操作符:&& , || , !

简单介绍与练习

! :逻辑取反运算符(改变单个表达式的真假).

https://i-blog.csdnimg.cn/direct/b55a4c7f964549078b7ab57df2bf00e0.png

&& :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假).

https://i-blog.csdnimg.cn/direct/7264b88206ff4ecbbb9d512cc123b215.png

|| :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假).

https://i-blog.csdnimg.cn/direct/7a14c9867f3f4c73b76aafbfbfdbd589.png

经典练习:闰年的判断

int main()
{
	int year;
	scanf("%d", &year);
	if (((0 == year % 4) && (0 != year % 100)) || (0 == year % 400))
	{
		printf("yes\n");
	}
	else
		printf("no\n");
	return 0;
}

短路

C语⾔逻辑运算符还有⼀个特点,它总是先对左侧的表达式求值,再对右边的表达式求值,这个顺序是保证的。 如果左边的表达式满⾜逻辑运算符的条件,就不再对右边的表达式求值。这种情况称为“短路”。