初学C语言(简单问题)在线等待!!

谁能帮忙解释一下下面的问题

1.有以下定义语句:
double a,b; int w; long c;
若各变量已正确赋值,则下列选项种中正确的表达式是________.
(A)a=a+b=b++ (B)w%((int)a+b) (C)(c+w)%(int)a (D)w=a==b

2.设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式1/2(a+b)h计算结果不相符的是_____.
(A)(a+b)*h/2 (B)(1/2)*(a+b)*h (C)(a+b)*h*1/2 (D)h/2*(a+b)

3.已知字符A的ASCLL码值为65,以下程序运行时若从键盘输入:B33<回车>。则输出结果是____.
#include<stdio.h>
main()
{char a,b;
a=getchar();scanf("%d",&b);
a=a-'A'+'0';b=b*2;
printf("%c%c\n",a,b);
}

回答问题时请给出每个答案错误的原因(要的是详细解答)
回答的好高分悬赏!!!
}
回答时分别解释ABCD的对错原因
谢谢各位回答

告诉大家正确答案是:1.C 2.B 3.B(答案肯定是正确的我已经上机测试过了,就是不理解)

1.D正确

A.只能给变量赋值,a+b不是变量。
B.(int)a+b结果依然是浮点型。
C.我也不知道,但D肯定对。
D.可以将逻辑值(a==b)赋给w

2.D不相符

因为整数除法的结果不包含小数点后的部分,而D中h/2的结果为1,不是1.5,导致最终结果错误。

3.由输入知:a的值为'B',b的值为'/33'。
a=a-'A'+'0''B'-'A'+'0'=1+'0'='1'
b=b*2='/66',对应ASCLL码为B。
故输出结果为:
1B
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-04
1. D? A 不对,赋值的优先级是最低的所以相当于会出现(a+b)=b++ 是不行的;B不对((int)a+b) 是浮点类型的,%只能用于整数;C 一边是long,一边是int我吃不准;D 虽然说浮点数用==来比较大小是不能体现其实际大小的,但是使用这个==也是可以的,整个表达式是w=(a==b) 应该没有任何问题,表达式的结果应该是0;
2 B 只有B在/2的除号两边都是整数,结果是0,其它都是浮点除法,不会出错的
3 1B a=a-'A'+'0' ='B'-'A'+'0' = '0' + 1 就是0的下一个字符,所以是1,b=b*2 = 33*2 = 66 是 A的下一个所以是B

第一题D有什么问题呀,你上机的时候报什么错呀
第2个回答  2009-03-04
1.a.左值不能为表达式 b.c.取模运算必须是整数
2.题目不完整?
3.B-->a
33-->b
第3个回答  2009-03-06
第一题:A赋值运算只能在最后一个等号才有表达式 B求余必须是整形 C同B的错误 D a==b是判断,就等于将判断结果1或者0赋给w

第二题:B 因为1/2直接等于0了,无法输出结果

第三题:输出结果aB 输入B计算a=a-A+0就是得到1 而33*2=66,ASCALL值是66的为B 所以输出1B
第4个回答  2009-03-04
a=a+b=b++
实在没见过这样的
第5个回答  2009-03-04
1.d。2.b 3.1B

【C语言关于运行时间的小问题】【谢谢大家】【在线等】
一、使用c的time.h中的函数 或者windows api GetTicketCount()函数 使用方式下面的程序里面有介绍,相信结合具体程序,你更易懂些。二、使用线程控制函数 _beginthreadex,想要使计时不受任何东西影响,最好的方式就是使用线程。具体请看下面我写的一个示例程序,编译一下就可以直接运行。这个程序你可以...

...成大写英文字母,并将结果显示出来。在线等待!!
s); for(int i = 0; i < 11; i++) { if(s[i] >= 'a' && s[i] <= 'z')printf("%c",s[i] + 'A' - 'a'); else printf("%c",s[i]); } return 0;}

我想学习编程,但不知道从哪入手,基础也为零,求大神给点建议,推荐基本书 ...
回答:别人写的一篇关于初学电脑的心得文章,可以给你一些参考。 零基础如何学习编程 心得笔记 自学编程2年来,加过n多群,泡过n多论坛,接触过心怀激情的编程新人,遇到过沉着冷静的技术大牛……编程,吸引了一批又一批的热血青年,或许是为了理想,或许是心中的爱好,不断有新人的加入,也不断有人从编程中退出...

...成大写英文字母,并将结果显示出来。在线等待!!
void main(){int i;char c;for (i=0;i<10;i++){c=getchar();\/\/这一句不知道对不对?if (c>='a'&&c<='z')c=c-32;printf("%c ",c);} }

如何学习C语言
1、《The C Programming Language》(后面称为 K&R)里面包含了一个简单的语法解析器,包含了malloc如何实现,包含了一个完整的操作系统目录浏览程序,这些程序的实用性极高,可以这样说,如果学习任何一门语言能够自己独立动手实现以上的功能,基本上就可以算是入门了; 2、《C和指针》指针的重要性,学过C语言(或者C++)的...

...|4各等于多少?是怎么算出来的,请高手帮忙,急!!!(在线等待...
include<stdio.h> main(){ printf("%d %d\\n",3&&4,3||4);} 都是1,&&是与,||是或,3、4都是真的,结果都为真

c语言的网络编程特点有哪些?(在线等待,答得好马上给分!)
1. C语言的特点 C语言是一种广受欢迎的结构化程序设计语言,具有极强的生命力."C语言无所不能!" :适用面比较广,具有高级语言的优点和低级语言特点 与硬件无关,可移植性强 C语言是一门简洁语言:仅有32个关键字,9种控制语句 在所有高级语言中,目标代码质量高,运行效率最高 结构化,模块化语言,...

...被7或者11或者13整除,能则输出YES 不能则输出NO 在线等待 急...
include <stdio.h> int main(void){ int liv_in;scanf("%d", &liv_in);if (liv_in %7 || liv_in || 11 || liv_in % 13){ puts("YES");} else { puts("No");} return 0;}

这个快速排序法的终止条件是什么啊?小弟初学C语言,请求诸位大神帮帮忙...
每次把数组分为小于和大于特定值的两段分别各自做快速排序,所以递归调用排序的数组长度小于2时就是排序好了

bat skip求教(在线等待……)
动动脑筋就可以完成操作了。FOR 语句是一次运行的,不可以动态修改运行。以下是方法 for \/l %%v in (1,1,5) do (for \/f "skip=%%v" %%r in (1.txt) do echo %%v %%r>>r.bat )call r.bat

相似回答