分支结构程序设计
输入三角形的三边,判断能否构成三角形,如果能构成三角形,计算三角形的面积。不能则不能构成三角形。
例【4.1】
#include#include 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 || b + c <= a || a + c <= b) printf("不构成三级形:n"); else { area = sqrt(s * (s - a) * (s - b) * (s - c)); printf("三角形的面积是:fn", area); } return 0; }
运行结果如下:
程序流程图:
例【4.2】
编写程序,输入x的值,按以下分段函数计算并输出y的之前。
#includeint 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; }
运行结果:
流程图:
例【4.3】
关系运算符、逻辑运算符、条件运算符1.关系运算符
关系运算符用于判断两个 *** 作数的大小关系。
2.关系表达式
用关系表达式将两个表达式连接起来的式子称为关系表达式。
#includeint 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,%dn", i + j + k == -2 * j, k == j == i + 5); return 0; }
运行结果:
流程图:
例【4.5】
逻辑运算符
运算符 ! && ||
名称 逻辑是非 逻辑与 逻辑或
结合性 右结合 左结合 左结合
优先级 高到低
代码:
#includeint main() { int a = 3, b = 3, c = 2, d; printf("%d,", !a && !b && c); printf("%d,", !a || !b || c); printf("%dn", a >= b && b > c); d = c-- || (b = 6) && a++; printf("a=%d,b=%d,c=%d,d=%dn", a, b, c, d); return 0; }
运行结果:
流程图:
例【4.6】
判断数的最大值
#includeint main() { int x, y; printf("请输入两个整数:"); scanf_s("%d,%d", &x, &y); printf("两个整数中的最大数为:%dn", x > y ? x : y); return 0; }
例【4.8】
计算y的1值。
y=f(X)=eX X<=1;
X*x-1 X>1;
#include#include int main() { double x, y; printf("输入x的值:"); scanf_s("%lf", &x); if (x <= 1) y = exp(x); else y = pow(x, 2) - 1; printf("f(%f)=%.2fn", x, y); return 0; }
例【4.9】
编写程序任意输入一个实数,输出其绝对值。
#includeint main() { float x; scanf_s("%f", &x); if (x < 0); x = -x; printf("%f", x); return 0; }
例【4.10】
#includeint main() { int x, y; printf("x="); scanf_s("%d", &x); if (x) y = 1; else y = -1; printf("y=%d", y); return 0; }
例【4.11】
if分支语句
#includeint main() { float a, b, c, t; scanf_s("%f,%f,%f", &a, &b, &c); if (a > b) { t = a; a = b; b = t; } if (a > b) { t = a; a = c; c = t; } if (b > c) { t = b; b = c; c = t; } printf("%5.2f,%5.2f,%5.2fn", a, b, c); return 0; }
例【4.12】
输入3个任意整数,找出其中的最大数。
int main() { int a, b, c, max; scanf_s("%d%d%d", &a, &b, &c); if (a > b) if (a > c) max = a; else max = c; else if (b > c) max = b; else max = c; printf("max=%dn", max); return 0; }
例【4.13】
#includeint main() { int x, y; scanf_s("%d", &x); if (x > 0) y = 1; else if (x == 0) y = 0; else y = -1; printf("y=%dn", y); return 0; }
例【4.14】
计算函数
#include#include int main() { float x, y; printf("输入x的值:"); scanf_s("%f", &x); if (x > 2) y = 2 * x; else if (x <= 10) y = 7 - 3 * x; else y = 1 - cos(x); printf("y=%0.6fn", y); return 0; }
例【4.15】
将小写字母转化为大写字母
#includeint main() { char c1, c2; printf("请输入一个字符:"); c1 = getchar(); if (c1 >= 'a' && c1 <= 'z') c2 = c1 - 32; else if (c1 >= 'A' && c1 <= 'Z') c2 = c1 + 32; else c2 = c1 + 1; putchar(c2); return 0; }
例【4.16】
使用switch语句实现分支结构
关于switch语句的几点说明:
(1)switch后的表达式可以是任何表达式,其值只能为整型、字符型、枚举型之一。
(2)每个case后面的常量表达式的值互不相同,否者就会出现相互矛盾的现象。
(3)各个case和default的出现次序不影响执行结果。
(4)可以让多个case共用一组执行语句。
(4)switch语句允许嵌套使用。
#includeint main() { int month; printf("输入月份:"); scanf_s("%d", &month); switch ((month - 1) / 3) { case 0: printf("%d月是第1季度n", month); break; case 1: printf("%d月是第2季度n", month); break; case 2: printf("%d月是第3季度n", month); break; case 3: printf("%d月是第4季度n", month); break; default: printf("输入错误n"); break; } return 0; }
例【4.17】
根据键盘输入的年、月,输出该年、该月的天数。
#includeint main() { int year, month, days; printf("请输入年,月:"); scanf_s("%d,%d", &year, &month); switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31; break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0) days = 29; else days = 28; break; } printf("%d年%d月的天数是%d天n", year, month, days); return 0; }
例【4.18】
switch语句
#include#include int main() { int expression; float x, y; printf("输入x的值:"); scanf_s("%f", &x); expression = (int)(1 * (x < 2) + 2 * (x >= 2 && x <= 10) + 3 * (x > 10)); switch (expression) { case 1: y = 2 * x; break; case 2: y = 7 - 3 * x; break; case 3: y = 1 - cos(x); break; } printf("y=%0.5fn", y); return 0; }
例【4.19】
#include#include int main(void) { float x, y; scanf_s("%f", &x); if (x >= 0) y = sqrt(x); else y = pow(x, 5) + 2 * x + 1 / x; printf("x=%.2f,y=%.2fn", x, y); return 0; }
例【4.20】
判断年份是否为闰年
#includeint main(void) { int year, leap; printf("输入年份:"); scanf_s("%d", &year); if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) leap = 1; else leap = 0; if (leap) printf("%d是闰年n", year); else printf("%d不是闰年n", year); return 0; }
嵌套类型
#includeint main(void) { int year, leap; printf("输入年份:"); scanf_s("%d", &year); if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0) leap = 1; else leap = 0; } else leap = 1; } else leap = 0; if (leap) printf("%d是闰年n", year); else printf("%d不是闰年n", year); return 0; }
多分支格式类型
#includeint main() { int year, leap; printf("输入年份:"); scanf_s("%d", &year); if (year % 4 != 0) leap = 0; else if (year % 100 != 0) leap = 1; else if (year % 400 != 0) leap = 0; else leap = 1; if (leap) printf("%d是闰年n:", year); else printf("%d不是闰年n:", year); return 0; }
例【4.21】
由键盘输入一个3位的整数,判断该数是否为升序。若输入的不是3位数,输出“Enter error”。升序是指高位数依次小于其低位数的数。如359为升序数。
#includeint main() { int n, a, b, c; printf("请输入一个3位整数:"); scanf_s("%d", &n); if (n < 100 || n>999) printf("输入错误:n"); else { a = n / 100; b = n / 10 % 10; c = n % 10; if (a < b && b < c) printf("%d是升序数n", n); else printf("%d不是升序数n", n); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)