C语言运算符与表达式练习附答案
本文档旨在提供C语言运算符与表达式的练习题和答案,以帮助读者更好地理解C语言的运算符和表达式。
一、逻辑表达式的值
在C语言中,逻辑表达式的值可以是0或1,分别表示假和真。在下面的练习中,我们将计算一些逻辑表达式的值。
1. a+b>c&&b==c
设a=3,b=4,c=5,则a+b>c&&b==c的值为0,因为a+b>c的值为1,而b==c的值为0。
2. a||b+c&&b-c
设a=3,b=4,c=5,则a||b+c&&b-c的值为1,因为a||b+c的值为1,而b-c的值也为1。
3. !(a>b)&&!c||1
设a=3,b=4,c=5,则!(a>b)&&!c||1的值为1,因为!(a>b)的值为1,而!c||1的值也为1。
4. !(x=a)&&(y=b)&&0
设a=3,b=4,则!(x=a)&&(y=b)&&0的值为0,因为!(x=a)的值为0,而(y=b)的值为1,但&&操作符的优先级高于||(逻辑或)操作符,因此整个表达式的值为0。
5. !(a+b)+c-1&&b+c/2
设a=3,b=4,c=5,则!(a+b)+c-1&&b+c/2的值为12,因为!(a+b)的值为0,而c-1的值为4,且b+c/2的值为7,但&&操作符的优先级高于||(逻辑或)操作符,因此整个表达式的值为12。
二、程序运行结果
1. #include <stdio.h>
main(){
int a=3,b=1, x=2, y=0;
printf("%d, %d \n",(a>b)&&(x>y) , a>b&&x>y);
printf("%d, %d \n", (y||b)&&(y||a), y||b&&y||a);
printf("%d\n",!a||a>b);
}
程序的运行结果为:1,1,1
2. main(){
int a=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a<b);
printf("%d,%d\n",k,m);
}
程序的运行结果为:1,0
3. main(){
int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);
}
程序的运行结果为:1
4. # include<stdio.h>
main(){
int a ,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);
}
程序的运行结果为:2,1
5. main(){
int m=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x);
}
程序的运行结果为:-2
6. main(){
int a=2,b=3,c=4;
printf("%d\n",1/3.0*3.0 ==1.0);
printf("%d\n", a+b>3*c);
printf("%d\n",(a<=b)==(b>c));
printf("%d\n",'A'!='a');
}
程序的运行结果为:1,0,0,1
三、条件表达式
1. 取三个数a、b、c中的最大者
可以使用以下条件表达式来实现:
(a>b&&a>c)>0?a:(b>a&&b>c)>0?b:c
2. 取三个数a、b、c中的最小者
可以使用以下条件表达式来实现:
(a<b&&a<c)>0?a:(b<a&&b<c)>0?b:c
本文档提供了C语言运算符与表达式的练习题和答案,旨在帮助读者更好地理解C语言的运算符和表达式。