栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

分支机构程序设计

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分支机构程序设计

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

当输入三角形的三条边长为:3,4,5时结果为

说明:程序运行时,首先输入三角形的三条边,分别保存在三个整型变量ab.c中,然后根据三角形的构成条件,判断任意两边之和是否大于第三边。若不满足此条件,则这三条边就不能构成一个三角形,若满足此条件就可以构成三角形,则根据相应的公式计算出三角形的面积。

编写好程序,输入x的值,按以下分段函数计算并输出y的值:

#include
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;
}

 输入x的值为2时结果为

输入x的值为0时结果为

4.2.1关系运算符和关系表达式

1.关系运算符

关系运算符用于判断两个操作数的大小关系。在C语言中有6个关系运算符,如下表所示

运算符含义
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于

 注意:

(1)关系运算符都是双目运算符,其结合方向是左结合。

(2)关系运算符的优先级低于算术运算符,但是高于赋值运算符。

(3)关系运算符中,>、<、> =、< =的优先级相同,==、!=的优先级相同,前者的优先级高于后者,即“>=”的优先级高于“==”。

2.关系表达式

用关系运算符将两个表达式连接起来的式子称为关系表达式。关系表达式的一般形式为

                                               表达式1关系运算符表达式2

功能:比较两个表达式的大小,返回一个逻辑值。

注意:

(1)注意区分运算符“一”和“==”。“二”是赋值运算符,“==”是关系运算符。

(2)对实数进行相等判断可能得不到正确的结果,例如“1.0/3* 3.0==1.0”的结果为0。

(3)关系表达式中可以出现赋值运算符,如“a>(b=0)”,但是不能写成“a>b=0”的形式。因为关系运算符的优先级高于赋值运算符,表达式“a>b=0"相当于“(a>b)=0”,赋值运算符左边不是变量,会出现编译错误。

关系表达式主要用于分支结构中的条件判断。关系表达式的结果是一个 逻辑值“真”或假”,由于C语言中没有逻辑类型的数据,因此用“1”表示“真”,“0”表示“假”。例如关系表达式“(a=3)>(b= 8)”的值为0。

                                                             关系运算示例 

#include
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,%dn", i + j + k == -2 * j, k == j == i + 5);
	return 0;
}

 运行结果为

 注:若自己经过计算会发现运行结果与书上的并不一样,我们自己的计算结果为1,1,0,1,0,0,这是因为 1 < j < 5这一段有两个判断,C语言只判断了前面的 1 < j 而不会计算后面的所以结果是1

4.2.2逻辑运算符和逻辑表达式

1.逻辑运算符

关系表达式只能描述单一的条件。对于较复杂的复合条件,例如“x小于10且x大于4”,如果用关系表达式“4

逻辑运算符如下表所示:

运算符&&||
名称逻辑非逻辑与逻辑或
结合性右结合左结合左结合
优先

注意:与运算符&&和或运算符||都是双目运算符,非运算符!为单目运算符。

2.逻辑表达式

用逻辑运算符将两个表达式连接起来的式子称为逻辑表达式。逻辑表达式的一般形式为:

                                                    表达式1逻辑运算符表达式2

                                                            逻辑运算符表达式1

逻辑表达式的结果也是一个逻辑值“真”或“假”,即为“1”或“0”。 逻辑运算的真值表如下表所示。

xy!xx&&yx||y
0000
0非0101
非00001
非0非0011

关于逻辑表达式的说明

(1)参与逻辑运算的数据可以是1和0.也可以是非零值和0,还可以是任何类型的数据,但最终都是以非0和0来判断他们是“真”或“假”。

(2)在逻辑表达式中也可以使用赋值运算符,如“a&.&.(b=0)”,但是不能写成“a&.&.b=0”的形式。因为逻辑运算符的优先级高于赋值运算符,表达式“a&&b=0”相当于“(a&&b)=0”,赋值运算符左边不是变量,会出现编译错误。

(3)C语言规定,只对决定整个表达式值所需的最少数目的子表达式进行运算。即在由若干个子表达式组成的逻辑表达式中,从左向右计算,当计算出一个子表达式的值就确定了整个逻辑表达式的值时,此后就不再计算右边剩下的子表达式的值,这种情况称为“短路”。

①对于逻辑与(&.&.)运算,若“&.&.”左边的表达式的值为假,则可以得出整个表达式的值为假 ,那么“&.&."”右边的表达式将不再进行计算;只有当“&&”左边的表达式值为真时,才计算右边表达式的值。 

②对于逻辑或(|)运算,若“|”左边的表达式的值为真,则可以得出整个表达式的值为真,那么“||”右边的表达式将不再进行计算;只有当“|”左边的表达式值为假时才计算右边表达式的值。

逻辑运算示例

#include
int 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;
}

 

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

 编写程序,输入x,计算并输出下列分段函数f(x)的值(保留两位小数),要求调用sqrt()函数求平方根,调用pow()函数求幂。

输入三个实数,要求从小到大的顺序输出。

#include
int 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>c)
	{
		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;
}

运行结果

编写程序,输入x,计算并输出下列分段函数f(x)的值(保留2位小数),要求调用pow()函数求幂

#include
#include
int main()
{
	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;
}

 编写程序,判断输入的年份是否为闰年。要求分别使用if语句的标准格式、嵌套格式及多分支格式实现。

1.标准格式实现

#include
int main()
{
	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;
}

 说明:

(1)变量year表示年份,leap作为“标志变量”,用于表示输人的年份是否为闰年。如果是闰年,就使leap的值为1,如果不是闰年,就使leap的值为0。最后检查leap的值,如果是1,就是闰年,输出“是国年”的信息;如果是0,就不是闰年,输出“不是闰年”的信息。

(2)if(leap)表示如果leap的值为真(为1),也可以等价写为if(leap!=0)。

2.嵌套格式实现

#include
int main()
{
	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;
}

3.多分支格式实现

#include
int 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;
}

 由键盘输入一个3位的整数,判断该数是否为升序数。若输入的不是3位数,输出“Enter error”。升序是指高位数依次小于其他低位数的数。入359为升序数:

#include
int 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;
}

输入一个三位数整数234结果为 :

 说明:

(1)表达式“n<100||n>999”的含义是:变量n小于100或者大于999时其值为真。此时n不是3位数,不符合题意。

(2)表达式“a

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/588957.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号