例4.1
输入三角形的三个边长,判断是否能构成三角形,并计算面积
流程图
代码
#include<stdio.h>
#include<math.h>
int main() {
int a, b, c;
float area;
double s;
printf("请输入三角形的三条边长:");
scanf_s("%d,%d,%d", &a, &b, &c);
s = (a + b + c) / 2.0;
if (a + b <= c || a + c <= a || a + c <= b) {
printf("不构成三角形\n");
}
else {
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("三角形的面积是:%f", area);
}
return 0;
例4.2
输入x的值,按分段函数计算并输出y的值
流程图
代码
#include<stdio.h>
int main() {
int x;
float y;
printf("输入x的值:");
scanf_s("%d",&x);
if (x!=0) {
y = 1.0 / x;
}
else {
y = 0;
}
printf("%d,%f",x,y);
return 0;
}
1.关系运算符
关系运算符用于判断两个操作数的大小关系。
2.关系表达式
用关系表达式将两个表达式连接起来的式子称为关系表达式。
例4.3
(1)关系运算符都是双目运算符,其结合方向是左结合
(2)关系运算符的优先级低于算术运算符,但是高于赋值运算符
(3)关系运算符中,>,<,>=,<=的优先级相同,==、!=的优先级相同,前者的优先级高于后者,即是“>=”的优先级高于“==”
流程图
代码
#include<stdio.h>
int main() {
char c = 'm';
int i = 10, j = 20, k = 30;
float x = 13e+5, y = 10.85;
printf("%d,%d,",'a'+5<c,-i-2*j>=k+1);
printf("%d,%d,", 1<j<5,x-5.25<=x+y);
printf("%d,%d,", i+j+k==-2*j,k==j==i+5);
return 0;
}
1.逻辑运算符
&&和||都是双目运算符!为单目运算符
2.逻辑表达式
将两个表达式连接起来的式子称为逻辑表达式
真或假既为1或0
例4.5
流程图
代码
#include<stdio.h>
int main() {
int a = 3, b = 3, c = 2, d;
printf("%d,",!a&&!b&&c);
printf("%d,",!a||!b||c);
printf("%d\n",a>=b&&b>c);
d = c-- || (b = 6) && a++;
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
return 0;
}
1.条件运算符
条件运算符由?和:两个符号组成
2.条件表达式
由条件运算符将3个表达式连接起来的式子称为条件表达式
例4.6
流程图
代码
if——else语句
1.双分支if语句
例4.7
流程图
代码
例4.8
流程图
代码
例4.9
流程图
代码
例4.10
流程图
代码
例4.11 输入三个实数,要求按从小到大的顺序输出
流程图
代码
例4.12
代码
一个if语句中包含一个或者多个if语句的现象称为if语句的嵌套
为了避免二义性,在c语言中规定其对应原则是:else总是与它前面最近的一个未匹配的if相匹配。
输入3个任意整数,找出其中最大值:
例4.13
流程图
代码
例4.14
多分支if语句是最常用的实现多路分支的方法
首先求解表达式1,如果表达式1的值为“真”,则语句1.并结束整个if语句的执行,否则,求解表达式2,......,若表达式1至表达式n-1的值都为“假”时,执行语句n.
输入x的值,按分段函数计算并输出y的值
流程图
代码
例4.15转换字母的大小写
流程图
代码
(1)switch后的表达式可以是任何表达式,其值只能为整型,字符型,枚举型之一。
(2)每个case后面的常量表达式互不相同,否则就会出现互相矛盾的现象。
(3)各个case和default的出现次序不影响执行结果。
(4)可以让多个case共用一组执行语句。
1、在switch语句格式中的每个语句后面都使用break语句;
例4.16
编写程序,输入一个月份的值,输出该月份是第几季度:
流程图:
代码
例4.17
流程图
代码
例4.18
流程图
代码
例4.19
流程图
例4.20
流程图
代码
例4.21
流程图
代码