运算符与表达式

算术运算符和表达式

运算符含义操作数结合性
-取相反数一元从右向左
*二元从左向右
/二元从左向右
+二元从左向右
-二元从左向右

注:1.求余运算限定两个操作数必须为整型;
2. 复合的赋值运算
3. 增1 和减1 运算符

例如:11%5=1 11%(-5)=1 (-11)%5= -1
【例题】计算并输出一个三位整数的个位、十位和百位数字之和。

# include<stdio.h>
int main()
{
	int b0,b1,b2,sum;
	int x;
	printf("Please input x(100<=x<=999):\n");
	scanf("%d",&x);
	
	b0 = x/100;
	b1 = (x/10)%10;
	b2 = x%10;
	sum = b2+b1+b0;
	printf("个位数字为%d\n",b0);
	printf("十位数字为%d\n",b1);
	printf("百位数字为%d\n",b2);
	printf("sum=%d\n",sum);
	
	return 0;
}

逻辑运算符与表达式

逻辑运算符运算数含义结合性
单目从右向左
&&双目从左向右
II双目从左向右

注:

  1. 逻辑与:全为真则为真;
  2. 逻辑或:有真则真
  3. 逻辑非:真变假,假变真。
  4. 运算符&& 与运算符 || 都具有“短路”特性。

【题目】编程输入三角形的三条边a,b,c ,判断它们能否构成三角形。指出是何种三角形。

/*
    题目:下面程序用于输入三角形的三条边a,b,c判断它们能否构成三角形,若能,则指出是何种三角形:
    等腰三角形、直角三角形、等腰直角三角形,一般三角形。若不能,则输出“不是三角形\n”
	
*/
# include <stdio.h>
# include <math.h>
# define EPS 1e-1   //直接判断经计算得到的两个实型数是否相等的精度要求,不高时是可取10^(-1)
int main (void)
{
	float a,b,c;
	int flag = 1;  //置标志变量flag为非0值
	printf ("Input a,b,c:");
	scanf ("%f,%f,%f",&a,&b,&c);
	if (a+b>c && a+c>b && b+c>a)   //判断是否满足三角形的基本要求,若是,进而判断三角形的类型;不是则执行else,输出“不是三角形”;
	{
	    if (fabs(a-b)<=EPS || fabs(a-c)<=EPS || fabs(b-c)<=EPS)
		{
			printf ("等腰");
			flag = 0;
		}
		else if (fabs(a-b)<=EPS && fabs(a-c)<=EPS && fabs(b-c)<=EPS)
		{
			printf ("等边");
			flag = 0;
		}
		if (fabs(a*a+b*b-c*c) <= EPS || fabs(a*a+c*c-b*b) <= EPS || fabs(b*b+c*c-a*a) <= EPS)  //等腰与直角不是非此即彼的关系,应当用并列的if来判断
		{
			printf ("直角");
			flag = 0;
		}
		if (flag)
		{
			printf ("一般");
		}
		printf ("三角形\n");  //在类型后加“三角形”三个字,以便当是三角形是输出的字样为:**三角形。
	}
	else 
	{
		printf ("不是三角形\n");
	}

	return 0;
}

位运算

位运算就是对字节或字内的二进制数位进行测试、抽取、设置或移位等操作。其操作对象只能是char与int类型。

运算符含义运算数结合数用途
~按位取反单目从右向左使操作数的各位取反,即1变为0,0变为1
<<左移位双目从左向右x<<n,把x的每一位向左平移n位,右边空位补0
>>右移位双目从左向右x>>n,表示x的每一位向右平移n位
&按位与双目从左向右用于对字节中的某位清0,即两个操作数中的任意一位为0,则对应为结果为0
^按位异或双目从左向右若两个操作数对应位不一样,则结果对应位为1
I按位或双目从左向右使字节中的某位置为1,即两个操作数中的任意一位为1,则对应为结果为1

注:1. 无论是左移位还是右移位,从一端移走的位不移入另一端,移除的位信息都丢失了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值