c语言的题目!!

1若有定义:int x=3,y=4;则表达式!x||y的值为?
2若有定义:int a=5,b=2,c=1;则表达式a=-b<c||b==c的值是?
3若有定义:int x,y;则表达式(x=2,y=5,x++,x+y++)的值是?
4若有定义:int a=2,b=2,c=2;则语句++a||++b&&c;运行后b的值为?
还有最后一个问题就是++a和a++和a--和--a这两个是什么意思??比如a的值为6,那这4个值等于多少,最好说清楚一下,说的好给高分!!!!

1 ||是逻辑或的意思,也就是说两遍的值只要有一个是真,那就是真。C语言判定大于0的值是真,显然3和4真是真,那么表达式x||y的值是真,和判定不同,返回值的时候C语言用1表示真,0表示假(但是在判定的时候像2 3 4 5 6这类大于0的值也都是真),所以x||y = 1。!的意思是取反,1变0,0变1,所以!x||y = 0.当然我没有记各个符号的优先级,所以不知道是先算!x还是先算x||y,你可以查优先级表,如果先算!x那么最终结果是1因为!x=0,0||y = 0||4 = 1。

2 c||b = 1;-b==-2显小于1是真,所以a=1,c也等于1,因此a==c是真,结果是1。

3 2,但凡有括号的,虽然表达式全部计算,但返回值只是第一个表达式也就是x=2;但是这个x已经被后面的x++和x+y++计算过了,x=8,结果是8.

4 1,a和b大于0,++a肯定大于0是真,后面是或运算,只要有一个真,那么或右边不管是什么整个或运算的结果都是真,也就是1。

5 ++a和a++都是a自加1,--同理,四个值:7755;
区别:
++a直接返回a=a+1的值,等同于a=a+1。而a++等同于这个函数:
int tempp(int a)
{
int temp = a;
++a;
return temp;
}
也就是说a++涉及的运算所取得的a值都不是a,而是这个函数里面的temp,也就是a还没有加1的值,当然a本身已经加1,所以只要运算涉及a本身那么a的值还是加1后的a。
打个比方:
int a=5;
printf("%d" "%d" ++a,a++);
printf("%d",a);
a=5,第一次++a使得a的值变成了6,所以输出第一个值是6.第二个a++使得a的值变成了7,但是这里的运算取得a不是a,而是那个temp,也就是原本的那个等于6的a,所以第二个输出是6.
第三个输出,由于a的值是7,输出当然是7.
--同理。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-11
1.“||”是逻辑变量'简洁或',一般是判断ture or flase "||"两边只要有一个不为0就是真,例如你上边的第一题就是真 第二题就是假
但还有一点要注意,就是只有“||”左边为假时才计算右边,若左边为真(即不为0)就不计算右边,例如 int a=5,b=3; a=a+1 || b=b+1; printf("%d,%d",a,b);此刻a=6 而b=3不变

3,9
4 详解如下:
“++” “--" 为自加 和 自减 即假如 a++ 等价与 a=a+1;a--等价于 a=a-1
而++a是先加在使用 而a++是先使用再加 a-- 是先使用再减 --a是先减在使用

希望对你有帮助追问

那这题呢,int k,i=3,j=3;则表达式k=(++i)*(j--)的值是多少??

追答

因为k=(++i)*(j--)
++i 此刻i先加在使用,即i=4 而j--为先使用再加 所以j=3
所以k=4*3=12

第2个回答  2011-10-11
1.!x||y为 (!x)||y为 (!3)||4 等于1;
2.考运算符的优先级 a=-b<c||b==c 为a=(-b<c)||(b==c) 为a=(-2<1)||(2==1) 等于1;
3. 逗号表达式等于最后那个表达式的值,即(x+y++)此时x为3,所以结果为8;
4.有人可能认为b等于3,实际上因为++a||++b&&c,逻辑与 左边的表达式为真,右边的表达式就不计算了。所以b等于2;
最后一题:要看实际情况,++a,是指a使用以前加1; a++,是指a使用以后加1。--a,a--同理
你可以验证一下
==========================================================================
#include <stdio.h>
int main()
{
int x = 3, y = 4;
int a = 5, b = 2, c = 1;
printf( "!x||y is \t%d\n", !x||y);
printf( "a=-b<c||b==c is \t%d\n", a=-b<c||b==c);
printf( "(x=2,y=5,x++,x+y++) is \t%d\n", (x=2,y=5,x++,x+y++) );
a = 2;
b = 2;
c = 2;
++a||++b&&c;
printf( "++a||++b&&c the b is \t%d\n", b );
}追问

那这题呢,int k,i=3,j=3;则表达式k=(++i)*(j--)的值是多少??

追答

i在使用前加1,则k=4*3结果12。

第3个回答  2011-10-11
前面4个,你根据运算符优先级来算就可以算出来了。
最后,那个是先加(++a)和后加(a++)的问题,如果a=6;
++a,便是在该表达式运算之前就先给a加1,相当于a+=1;
++a,便是在该表达式运算完之后再给a加1,相当于a+=1;
--a,和上面道理是相同的。追问

什么乱七八糟的....

追答

我靠,你一点都不会吗?
上面那些“!|| && = ++ -- == | ^ ”都是运算符。
好吧,我承认我乱,唉,你慢慢解决吧。

第4个回答  2011-10-11
1、!3是0,而‘4’是逻辑值1,所以可以直接知道:!x||y的值为1
2、-b<c为真,所以逻辑值是‘1’所以a=1为真,所以前面逻辑值为1,后面就不用看了 所以表达式a=-b<c||b==c的值是1
3、这是逗号表达式,只应该是最后一个值 即x+y++ 因为x=2,y=5 所以为2+5=7
4、&&的优先级别大于|| 所以++a||++b&&c等同于++a||(++b&&c)又因为++a逻辑值为1 所以后面就不用看了,即b++没有执行,所以b还是2。
5、++a就是说在a自加1以后才进行操作,而a++是使用操作a以后a才加1,--a与a--同,只不过把加变成减。如果a的值为6,那么++a 等于7,a++等于6,--a等于5,a--等于6,。
这种题刚开始是有点难理解哦 多问问老师同学,就好了!!
第5个回答  2011-10-11
我觉得在电脑上运行一下这些代码 你会明白的

c语言程序设计简答题汇总?
C语言题目简答题1、(c=65c=90)?(c=c+32):(c=c)\/*符合你的要求,不是C语句,而是C表达式*\/ 2、a%10==5\/*符合你的要求,不是C语句,而是C表达式*\/ 3、【题目不全啊】4、【题目不全啊】5、这个题算是所有6个题中最难的了。首先,fun函数中定义了一个static类型的变量,含义如下:有...

速阅C语言经典考题
C语言经典题目 1、有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?2、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?3、用*号输出字母C的图案。4、输出9*9口诀。5、利用条件运算符的嵌套来完成此题:学习成绩>=90分...

帮忙完成一下这个C语言课设题目
1. 首先,定义篮球价格变量为300,最高价格变量为1000,猜测值变量为150。2. 使用循环进行猜测。如果猜测值与实际价格不同,根据实际情况调整猜测值。如果猜测值大于实际价格,猜测值更改为猜测值的一半;如果猜测值小于实际价格,猜测值更改为猜测值的三分之二再除以二。直到猜测值等于实际价格。具体代码...

C语言编程题目
下面是一些C编程题目:1. 编写程序,从键盘输入两个整数,输出它们的和、差、积、商、余数。2. 编写程序,从键盘输入三角形的三条边长,判断它们是否可以构成三角形,并输出三角形的类型(等边、等腰、一般)。3. 编写程序,从键盘输入字符串,统计其中的大写字母、小写字母、数字和其他字符的个数,并...

c语言经典100
您好,c语言经典100题:【程序1】题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数 都是多少 1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去 掉不满足条件的排列.2.程序源代码:main(){ int i,j,k;printf("\\n");for(i1;i<5;i++)\/*...

c语言 循环题目
题意大概意思是这样:循环进入后首先执行循环,首先判断i是否小于7,再判断如果I被2整除,i就自增1,s就是当前s和当前i相加的和,另个循环例如for 1.for 有两种形式:一种是数字形式,另一种是通用形式。数字形式的 for 循环,通过一个数学运算不断地运行内部的代码块。 下面是它的语法:block 将...

关于C语言的一个题目,如图,请教详细解释,谢谢.
int是占2个字节,long占4个字节,char占1个字节。如题 s->i[0] = 0x39, s->i[0] = 0x38,假如内存地址如下,则:地址 0x0000 0x0001 0x0002 0x0003 i[2]: 9 3 8 3 而c[4]则对应这4个地址,c[0]当然是9,选B....

c语言题目?
正确的是D。分析如下:A.a[10],错误,因为下标范围是0-9,只有a[0]至a[9]。B.a[3.5],错误,因为下标不能是小数。C.a(5),错误,因为数组元素引用要用方括号。D.a[10-10],正确,因为a[10-10]相当于a[0]。

急!急!简单c语言编程题,求编写代码
\/\/第一题#include<stdio.h>void fun(int n){ int i,j,k,t;for(k=0;k<n;k++)\/\/控制总行数{ for(i=0;i<n-k-1;i++)\/\/控制输出空格,因为空格不好看见,就用*代替 printf("%c",'*'); for(j=0;j<2*k+1;j++)\/\/控制输出字母 { printf("%c",65+j)...

C语言的一道题~求解~最好有原因***
正确答案是B。A和D都很明显,c 不在赋值符号最左边,所以不可能正确把值赋给a,b。对于c,是一个逻辑与表达式,一旦运算符&&前面值为假(值为0)则不会继续运算后面部分,这里c为0 ,所以后面 b = c不会执行。综上,答案为B。

相似回答
大家正在搜