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月前
|
存储 C语言
【C语言程序设计——函数】递归求斐波那契数列的前n项(头歌实践教学平台习题)【合集】
本关任务是编写递归函数求斐波那契数列的前n项。主要内容包括: 1. **递归的概念**:递归是一种函数直接或间接调用自身的编程技巧,通过“俄罗斯套娃”的方式解决问题。 2. **边界条件的确定**:边界条件是递归停止的条件,确保递归不会无限进行。例如,计算阶乘时,当n为0或1时返回1。 3. **循环控制与跳转语句**:介绍`for`、`while`循环及`break`、`continue`语句的使用方法。 编程要求是在右侧编辑器Begin--End之间补充代码,测试输入分别为3和5,预期输出为斐波那契数列的前几项。通关代码已给出,需确保正确实现递归逻辑并处理好边界条件,以避免栈溢出或结果
66 16
|
1月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
77 18
|
1月前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
57 18
|
1月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
52 13
|
1月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
37 3
|
1月前
|
存储 算法 安全
【C语言程序设计——函数】分数数列求和1(头歌实践教学平台习题)【合集】
if 语句是最基础的形式,当条件为真时执行其内部的语句块;switch 语句则适用于针对一个表达式的多个固定值进行判断,根据表达式的值与各个 case 后的常量值匹配情况,执行相应 case 分支下的语句,直到遇到 break 语句跳出 switch 结构,若没有匹配值则执行 default 分支(可选)。例如,在判断一个数是否大于 10 的场景中,条件表达式为 “num> 10”,这里的 “num” 是程序中的变量,通过比较其值与 10 的大小关系来确定条件的真假。常量的值必须是唯一的,且在同一个。
20 2
|
1月前
|
存储 编译器 C语言
【C语言程序设计——函数】回文数判定(头歌实践教学平台习题)【合集】
算术运算于 C 语言仿若精密 “齿轮组”,驱动着数值处理流程。编写函数求区间[100,500]中所有的回文数,要求每行打印10个数。根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。如果操作数是浮点数,在 C 语言中是不允许直接进行。的结果是 -1,因为 -7 除以 3 商为 -2,余数为 -1;注意:每一个数据输出格式为 printf("%4d", i);的结果是 1,因为 7 除以 -3 商为 -2,余数为 1。取余运算要求两个操作数必须是整数类型,包括。开始你的任务吧,祝你成功!
52 1
|
1月前
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
63 23
|
1月前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
68 15

热门文章

最新文章