c语言笔记2大一(选择结构程序设计,逻辑)

简介: 关系运算符:比如a>c,如果a为4且b为3则返回真,否则就返回假。关系运算符及其优先级:C语言提供的关系运算符主要为6种,分别是:< (小于) ; <= (小于等于) ; >( 大于) ; >= (大于等于)以上四个优先级相同(高)== 等于;!= 不等于这两个优先级相同(低)在C语言中用整数1表示逻辑值为真,用整数0表示逻辑值为假。比如(a=3)>(b=8);由于逻辑值为假所以返回0。

/关系运算符:



比如a>c,如果a为4且b为3则返回真,否则就返回假。


关系运算符及其优先级:


C语言提供的关系运算符主要为6种,分别是:< (小于) ; <= (小于等于) ; >( 大于) ; >= (大于等于)以上四个优先级相同(高)== 等于;!= 不等于这两个优先级相同(低)在C语言中用整数1表示逻辑值为真,用整数0表示逻辑值为假。比如(a=3)>(b=8);由于逻辑值为假所以返回0。


求值过程:


(1)计算运算符表达式两边的值;

(2)比较这两个值的大小,如果是整形的话就直接比较大小,如果是字符类型的话就比较ASCII值。3>4!=2 //先判断3>4结果为假(0),然后在判断0!=2结果为真(1)‘a’>‘b’//比较ASCII值,97>98所以结果为02+5!=3>4-1//等价于(2+5)!=(3>(4-1))结果为1条件运算的优先级高于赋值运算,低于关系运算和算术运算逻辑运算:&& || !

C语言提供三种逻辑表达式,按照运算优先级从高到低依次为: !、&&、 ll。


注意事项:


1.由系统给出的逻辑运算结果非0即1,不可能是其他数值

2.逻辑运算符两侧的运算对象可以是数字0、1,也可以是字符型、实型、指针型等。

3.一条语句中,并不是所有的逻辑运算符都被执行,若由前序逻辑运算已知表达式的值,则后续逻辑运算不会执行。如:a&&b&&c,只有a为真时才去判断b,只有a和b都为真才会去判断c。&&当两个运算量都是真时,其结果为真。因此,当左边已是0,右边的表达式不再求解。| |当两个运算量有一个为真时,其结果为真。因此,当左边已是1时,右边的表达式不再求解。

对于:(m=a>b)&&(n=c>d)当:a=1,b=2,c=3,d=4,m=1,n=1时,(n=c>d)不被执行,n的值不是0而仍保持原值1

/#include <stdio.h>
int main(){ 
int a,b,c,x;
 a=5;
 b=7;
 c=8;
 x=(a>1)&&(b>6);
 printf("%d\n",x);

//两个条件都为真,返回1 x=(a<1)&&(b>6); printf("%d\n",x);//有一个条件为假,返回0 x=(a>1)||(b>6); printf("%d\n",x);//两个条件都为真,返回1 x=(a<1)||(b>6); printf("%d\n",x);

//至少有一个条件为真,返回1 x=(a<1)||(b<6); printf("%d\n",x);//两个条件都为假,返回0 printf("%d\n",a!=1);

//不等于1返回真即1 return 0;}运行结果:101101条件运算符:表达式1 ? 表达式2 : 表达式3如果表达式1的值为真,则整个条件运算的结果为表达式2的值;如果表达式1的值为假,则整个条件运算的结果为表达式3的值。!(非)>算术运算符(+—%、)> 关系运算符(>= >等)>&&和||>赋值运算符 /选择结构和条件判断; 一、if条件语句的基本语法

//如果n=1,则执行+1操作int n=1;if(n==1){n++;

//n的结果为2}&1.if(条件语句){代码块;}条件里面的判断if(0)不执行;if(1)执行;当if(2)等非0数字就会默认为1去执行;表达式的结果对错 0,1系统表示 条件语句必须是一个布尔表达式,即布尔表达式的值必须是一个布尔值(true或者false)(0或者1) 只有当布尔表达式的值为true时,才会执行对应的代码块。不带大括号的条件语句,只会执行下一行代码。想要执行多行代码,必须用大括号括起来。&2.3.if-else 选择结构if(条件){条件为真的时候执行的语句}else{条件为假的时候执行的语句}&3多重if选择结构if(条件1){条件1为真的是时候,执行的语句}else if(条件2){条件2为真的是时候,执行的语句}else if(条件n){条件n为真的是时候,执行的语句}else{所有条件都不成立的时候}从上到下开始判断;


例如


/#include <stdio.h> int main(){ double x,y; //定义x,y变量类型
printf(“please input x:\n”); 
scanf("%lf",&x); // 输入x的值 if(x<1) //如果x小于1;
y=x y=x; else if(x<10) //如果x大于1,小于10;
y=2x-1 , y=2x-1;

//没必要用逻辑&&,因为前面会判断是不是小于1;不是才会搞这个了 else if(x>=10) //如果x大于10,y=3x-11; y=3x-11;

//没必要用逻辑&&,因为前面会判断是不是大于1及小于10;不是才会搞这个了printf(“y=%lf”,y);

//输出y的值 return 0; }

//6.嵌套if 结构1)三种if结构都可以相互嵌套2)嵌套最好不要超过三层

//switch语句 switch(表达式){ case常量表达式:语句1 case常量表达式:语句2… default:语句}当表达式的值与某个case后的常量值相等的时候,执行此case分支语句,如果有break则跳出全部循环,如果没有就执行下一条case分支语句。表达式中的值和常量表达式的值只能是整型或者字符型。(不要搞个范围进去)并且case分支的常量表达式的值应该不同。break也称间断语句,作用是跳出整个循环。比如说语句1后加了一个break后,那么就跳出了switch这条语句,而不会去执行语句1后面的语句。

#include <stdio.h>int main(){ int sorce,grade; printf(“请输入单科成绩(0~100):”); scanf("%d",&sorce); grade=sorce/10; switch(grade) { case 10:printf(“grade=A\n”);break; case 9:printf(“grade=A\n”);break; case 8:printf(“grade=B\n”);break; case 7:printf(“grade=C\n”);break; case 6:printf(“grade=C\n”);break; case 5:printf(“grade=D\n”);break; case 4:printf(“grade=D\n”);break; case 3:printf(“grade=D\n”);break; case 2:printf(“grade=D\n”);break; case 1:printf(“grade=E\n”);break; case 0:printf(“grade=E\n”);break; }return 0;}

如果没有加break的话,如果输入55,那么他就会显示:D D D D E E但是后面有break后那么它执行完那条语句后就直接跳出,也就是只输出D。

switch(a) { case(0): salary=I0.1;break; case(1): salary=salary1+(I-100000)*0.075;break; case(2): case(3): salary=salary12+(I-200000)*0.05;break; case(4): case(5): salary=salary24+(I-400000)*0.03;break; case(6): case(7): case(8): case(9): salary=salary46+(I-600000)*0.015;break; defaulf: salary=salary610+(I-1000000)0.01;break; }

在这个里面,a=2和a=3共同执行一个东西,即无论是2或3都执行 salary=salary12+(I-200000)0.05;break; 4和5,6.7.8.9也是一样。 题目: 给一个不多于5位的正整数,要求:①求出它是几位数; ②分别输出每一位数字; ③按逆序输出各位数字,例如原数为321,应输出123。

/#include <stdio.h>int main(){ int a,ge,shi,bai,qian,wan; scanf("%d",&a); if(a>9999) { printf(“五位数\n”); wan=a/10000; qian=a%10000/1000; bai=a%1000/100; shi=a%100/10; ge=a%10; printf("%d%d%d%d%d\n",wan,qian,bai,shi,ge); printf("%d%d%d%d%d",ge,shi,bai,qian,wan); } else if(a>999) { printf(“四位数\n”); qian=a%10000/1000; bai=a%1000/100; shi=a%100/10; ge=a%10; printf("%d%d%d%d\n",qian,bai,shi,ge); printf("%d%d%d%d",ge,shi,bai,qian); } else if(a>99) { printf(“三位数\n”); bai=a%1000/100; shi=a%100/10; ge=a%10; printf("%d%d%d\n",bai,shi,ge); printf("%d%d%d",ge,shi,bai); } else if(a>9) { printf(“两位数\n”); shi=a%100/10; ge=a%10; printf("%d%d\n",shi,ge); printf("%d%d",ge,shi); } else { printf(“一位数\n”); ge=a%10; printf("%d\n",ge); printf("%d",ge); } return 0;}/


相关文章
|
1月前
|
网络协议 编译器 Linux
【C语言】结构体内存对齐:热门面试话题
【C语言】结构体内存对齐:热门面试话题
|
2月前
|
C语言
C语言判断逻辑的高阶用法
在C语言中,高级的判断逻辑技巧能显著提升代码的可读性、灵活性和效率。本文介绍了六种常见方法:1) 函数指针,如回调机制;2) 逻辑运算符组合,实现复杂条件判断;3) 宏定义简化逻辑;4) 结构体与联合体组织复杂数据;5) 递归与分治法处理树形结构;6) 状态机管理状态转换。通过这些方法,可以更高效地管理和实现复杂的逻辑判断,使代码更加清晰易懂。
229 88
|
13天前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
56 16
|
1月前
|
编译器 C语言 Python
C语言结构
C语言结构
15 0
|
1月前
|
编译器 C语言 C++
【C语言】精妙运用内存函数:深入底层逻辑的探索
【C语言】精妙运用内存函数:深入底层逻辑的探索
|
2月前
|
存储 算法 C语言
数据结构基础详解(C语言): 二叉树的遍历_线索二叉树_树的存储结构_树与森林详解
本文从二叉树遍历入手,详细介绍了先序、中序和后序遍历方法,并探讨了如何构建二叉树及线索二叉树的概念。接着,文章讲解了树和森林的存储结构,特别是如何将树与森林转换为二叉树形式,以便利用二叉树的遍历方法。最后,讨论了树和森林的遍历算法,包括先根、后根和层次遍历。通过这些内容,读者可以全面了解二叉树及其相关概念。
|
2月前
|
存储 C语言
C语言程序设计核心详解 第十章:位运算和c语言文件操作详解_文件操作函数
本文详细介绍了C语言中的位运算和文件操作。位运算包括按位与、或、异或、取反、左移和右移等六种运算符及其复合赋值运算符,每种运算符的功能和应用场景都有具体说明。文件操作部分则涵盖了文件的概念、分类、文件类型指针、文件的打开与关闭、读写操作及当前读写位置的调整等内容,提供了丰富的示例帮助理解。通过对本文的学习,读者可以全面掌握C语言中的位运算和文件处理技术。
|
2月前
|
存储 机器学习/深度学习 C语言
数据结构基础详解(C语言): 树与二叉树的基本类型与存储结构详解
本文介绍了树和二叉树的基本概念及性质。树是由节点组成的层次结构,其中节点的度为其分支数量,树的度为树中最大节点度数。二叉树是一种特殊的树,其节点最多有两个子节点,具有多种性质,如叶子节点数与度为2的节点数之间的关系。此外,还介绍了二叉树的不同形态,包括满二叉树、完全二叉树、二叉排序树和平衡二叉树,并探讨了二叉树的顺序存储和链式存储结构。
|
1月前
|
C语言 C++
C语言 之 内存函数
C语言 之 内存函数
33 3
|
C语言
《C语言程序设计》一 第 3 章 程序的控制结构Ⅰ——选择结构程序设计
本节书摘来自华章出版社《C语言程序设计》一 书中的第3章,作者:赵宏 陈旭东 马迪芳,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1092 0