C语言 第四周知识点随记

这篇博客详细介绍了C语言中的布尔运算,包括逻辑非、逻辑与、逻辑或运算符的使用。同时,解释了短路逻辑在&&和||运算中的作用。此外,还讨论了条件运算符和switch语句在实现多路分支中的应用。示例代码展示了如何判断字符是否为大写字母以及如何根据成绩计算等级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑类型

布尔运算

#include <stdbool.h>
int main()
{

}
    bool a = 6>5;     //由于6>5为真值,a的结果应该为1
    bool b = ture;     //由于true在布尔运算中是1,所以b的结果为1

    bool b = 3;    //这条语句也能被编译,因为b是一个整数,但取值只能是0或1,因此b仍等于1

逻辑运算

逻辑运算是对逻辑量进行的运算,结果只有0或1;

逻辑量是关系运算或逻辑运算的结果。

运算符描述示例结果
!逻辑非!a如果a是true结果就是false,如果a是false结果就是true
&&逻辑与a&&b如果a和b都是true,结果就是true;否则就是false
||逻辑或

a||b

如果a和b有一个是true,则结果是true;两个都是false,结果为false

    x > 4 && x < 6;    //表达数学中的区间,x∈(4,6)
    4 < x < 6;    //不是c能正确计算的式子,因为4 < x的结果是一个逻辑值(0或1)

判断一个字符是否是大写字母

    c >="A" && c <= "Z";    //c在“A”与“Z”之间,若结果为1,则c是大写字母;否则结果为0

优先级比较

  • ! > && > ||
  • !done &&(count>MAX)

短路

逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果了,就不会做右边的计算

  • a==6 && b==1(左边如果是false,右边不会再计算了)
  • a==6 && b+=1

对于&&,左边是false时就不做右边了。

对于||,左边是true时就不做右边了。

条件运算符

count = (count > 20)? count - 10: count+10

条件满足时的值和条件不满足时的值

if ( count >20 )
    count = count - 10;
else
    count = count + 10;

 级联的if-else

实现分段函数

	int x;
	
	scanf("%d", &x);
	
	int f=0;
	if ( x<0 ) {
		f = -1;
	} else if (x==0) {
		f=0;
	} else {
		f = 2 * x;
	}
	
	printf("%d\n",f);
	
	return 0;

多路分支

switch (控制表达式) {
case 常量:
    语句
    ……
case 常量:
    语句
    ……
default:
    语句
    ……
}
  • 控制表达式只能是整数型的结果
  • 常量可以是常数,也可以是常数计算的表达式
  • switch语句可以看作是一种基于计算的转跳,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,直到遇到一个break,或者switch结束为止。

例子1:

int type = 1;

switch (type) 
{
case 1:    //进入case 1,然而case 1中没有要运行的指令,因此跳转到case 2
case 2:    //进入case 2
    printf("你好\n");    //打印“你好”
    break;    //跳出switch case
case 3:
    printf("晚上好\n");
case 4:
    printf("再见\n");
    break;
default:
    printf("啊,什么啊?\n");
    break;
}

 例子2:

int type = 3;

switch (type) 
{
case 1:
case 2:
    printf("你好\n");
    break;
case 3:
    printf("晚上好\n");    //进入case 3,打印“晚上好”
case 4:
    printf("再见\n");    //没遇到break,继续执行case 4,打印“再见”
    break;    //遇到break,跳出switch
default:
    printf("啊,什么啊?\n");
    break;
}

练习:计算成绩等级

#include <stdio.h>
int main()
{
	int score = 0;
	
	printf("请输入成绩:");
	scanf("%d", &score);
	
	int type = 0;
	type = score/10;
	
	switch (type) {
		case 10:
		case 9:
			printf("A\n");
			break;
		case 8:
			printf("B\n");
			break;
		case 7:
			printf("C\n");
			break;
		case 6:
			printf("D\n");
			break;
		default:00
			printf("F\n");
			break; 
	}

	return 0;
}

程序设计:

变量-算法-流程图-程序

E.g:算平均数

  • 变量

    让用户输入一系列正整数,最后输入-1表示输入结束,然后让程序计算出这些数字的平均数,输出输入的数字的个数平均数。

变量

  • 一个记录读到的整数的变量
  • 平均数要怎么算?
    • 只需要每读一个树,就把它加到一个累加的变量里,到全部数据读完,再拿它去除督导的数的个数据可以了。
  • 一个变量记录累加的结果,一个变量就读到的数的个数。

算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值