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


相关文章
|
10天前
|
C语言
【精通C语言】:分支结构if语句的灵活运用
【精通C语言】:分支结构if语句的灵活运用
21 1
|
11天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
11天前
|
C语言
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
C语言 浙大版《C语言程序设计(第3版)》题目集 练习8-8 移动字母 (10分)
|
11天前
|
C语言
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
|
11天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
11天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
|
11天前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
14天前
|
C语言
C语言:内存函数(memcpy memmove memset memcmp使用)
C语言:内存函数(memcpy memmove memset memcmp使用)
|
8天前
|
缓存 安全 编译器
【C 言专栏】C 语言函数的高效编程技巧
【5月更文挑战第1天】本文探讨了C语言中函数的高效编程技巧,包括函数的定义与作用(如代码复用和提高可读性)、设计原则(单一职责和接口简洁)、参数传递方式(值传递、指针传递和引用传递)、返回值管理、调用约定、嵌套与递归调用,以及函数优化技巧和常见错误避免。掌握这些技巧能提升C语言代码的质量和效率。
【C 言专栏】C 语言函数的高效编程技巧
|
11天前
|
C语言
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)