第五章 分支结构程序 (答案)

在C语言中有以下关系运算符:

1)       <   小于

2)       <=  小于或等于

3)       >   大于

4)       >=  大于或等于

5)       ==  等于

6)       !=  不等于


C语言中提供了三种逻辑运算符:

1)       &&  与运算

2)       ||  或运算

3)       !   非运算

按照运算符的优先顺序可以得出:

a>b && c>d   等价于    (a>b)&&(c>d)

           !b==c||d<a    等价于    ((!b)==c)||(d<a)

           a+b>c&&x+y<b  等价于    ((a+b)>c)&&((x+y)<b)



例如条件语句:

    if(a>b) max=a;

       else max=b;

可用条件表达式写为

    max=(a>b)?a:b;

执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。


1)       条件运算符的结合方向是自右至左。

例如:

a>b?a:c>d?c:d

应理解为

a>b?a:(c>d?c:d)

这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。


【例4.11】输入三个整数,输出最大数和最小数。


#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{	
	int a,b,c,max,min,med;
	printf("input three numbers: \n");
	scanf("%d%d%d",&a,&b,&c);
	//max = (((a>b)?a:b)>c)?((a>b)?a:b):c;
	//min = (((a<b)?a:b)<c)?((a<b)?a:b):c;
	
	max=(max=a>b?a:b)>c?max:c; 
	min=(min=a<b?a:b)<c?min:c; 
	med = (a<max&&a>min)?a:((b<max&&b>min)?b:c);
	printf("最大=%d 最小=%d 中间=%d \n",max,min,med);

}


比较4个数字的大小

 
#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{	
	int a,b,c,d,max,min,mid,mid2;

	printf("输入 4个 数字: \n");
	scanf("%d%d%d%d",&a,&b,&c,&d);

	//max=((a>b?a:b)>c?(a>b?a:b):c)>d?((a>b?a:b)>c?(a>b?a:b):c):d; 
	//min=((a<b?a:b)<c?(a<b?a:b):c)<d?((a<b?a:b)<c?(a<b?a:b):c):d;

	//max=(max=(a>b?a:b)>c?(a>b?a:b):c)>d?max:d;  //缩写
	//min=(min=(a<b?a:b)<c?(a<b?a:b):c)<d?min:d; 

	mid =(a>b?a:b);
	mid2=(a<b?a:b);

	max=(max=mid>c?mid:c)>d?max:d;  //4个数比大小。。。。5个数比大小清晰点。
	min=(min=mid2<c?mid2:c)<d?min:d;

	printf("最大=%d 最小=%d   \n",max,min );
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值