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

2022-11-13 10:40:44 浏览数 (1)

/关系运算符:比如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("%dn",x);//两个条件都为真,返回1 x=(a<1)&&(b>6); printf("%dn",x);//有一个条件为假,返回0 x=(a>1)||(b>6); printf("%dn",x);//两个条件都为真,返回1 x=(a<1)||(b>6); printf("%dn",x);//至少有一个条件为真,返回1 x=(a<1)||(b<6); printf("%dn",x);//两个条件都为假,返回0 printf("%dn",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=An”);break; case 9:printf(“grade=An”);break; case 8:printf(“grade=Bn”);break; case 7:printf(“grade=Cn”);break; case 6:printf(“grade=Cn”);break; case 5:printf(“grade=Dn”);break; case 4:printf(“grade=Dn”);break; case 3:printf(“grade=Dn”);break; case 2:printf(“grade=Dn”);break; case 1:printf(“grade=En”);break; case 0:printf(“grade=En”);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=a000/1000; bai=a00/100; shi=a0/10; ge=a; printf("%d%d%d%d%dn",wan,qian,bai,shi,ge); printf("%d%d%d%d%d",ge,shi,bai,qian,wan); } else if(a>999) { printf(“四位数n”); qian=a000/1000; bai=a00/100; shi=a0/10; ge=a; printf("%d%d%d%dn",qian,bai,shi,ge); printf("%d%d%d%d",ge,shi,bai,qian); } else if(a>99) { printf(“三位数n”); bai=a00/100; shi=a0/10; ge=a; printf("%d%d%dn",bai,shi,ge); printf("%d%d%d",ge,shi,bai); } else if(a>9) { printf(“两位数n”); shi=a0/10; ge=a; printf("%d%dn",shi,ge); printf("%d%d",ge,shi); } else { printf(“一位数n”); ge=a; printf("%dn",ge); printf("%d",ge); } return 0;}/

0 人点赞