C语言的几个书上的题目,请讲的简单、详细一点。呵呵,讲对后再奖二十分。

问题一、设intx=2,y=4;,值为非0的表达式是()A.1/X*YB.1/(x*y)C.1.0/x/yD1/x/(double)y这题书上选的是C。我感觉都差不多了,... 问题一、设int x=2,y=4;,值为非0的表达式是()
A.1/X*Y B.1/(x*y) C.1.0/x/y D1/x/(double)y
这题书上选的是C。我感觉都差不多了,请问这题考的是什么知识点啊?

问题二、呵呵,设int a=0;(-a)++语句怎么错了?

问题三、多分支选择语句,以下是书上对default的讲解。“若表达式的值和n常量表达式值均不同时,default可以省略,则该语句什么也不做。”

表达式的值和n常量表达式值均不同时。这里不懂,什么相同了?糊涂了。

问题4、看下列程序:
#include <stdio.h>
int fx(int n)
{ int s;
if (n= =0) s=0;
else s=n+fx(n-2);
return s;
}
void main( )
{
printf(“%\n”,fx(8));
}
请问:1)、文件#include <stdio.h>,第九行的void不要行吗?
2)、第二行的int fx(int n)好不懂啊,在语句中什么意思啊?
展开
 我来答
DJ8Angus
2011-11-14 · TA获得超过332个赞
知道小有建树答主
回答量:118
采纳率:0%
帮助的人:90.8万
展开全部
1,A选项:1/X=0 0*y=0; B选项:同理 D选项:同理 C选项:1.0/x 1.0是double类型,所以结果为0.125 本题主要考察:‘/’的使用和类型的自动转换!int—>double是自动转换 double—>int会丢失精度,需要强制转换(类似于数学里的四舍五入)
2.这个明显是语法错!’-0‘你想想是什么?
3.是switch 吧? 你记住只要所有的情况都不满足才会执行default里的,其他情况有一个符合,就不会执行default里的。
4.#include <stdio.h>是命令的意思,void表示没有返回类型 void main()是应用程序入口方法!这都是固定死的不能改!而且在一个程序中只能有一个这种方法! int fx(int n) 中,int是返回类型,fx是方法名,()中的是参数和参数类型。

补充:1/2意思是1整除2,1整除2的商是0啊! ‘ / ’是表示整除取商! ‘ % ’是整除取余数! 所以 1%2=1 明白不???
D项的 1/x/(double)y 应注意运算顺序啊!
1/x =1/2=0; 0*4.0 不还是0吗??
追问
呵呵,谢谢你的讲解。但是楼上在百度HI里对我的讲解好懂。
adoqq_bd
2011-11-14 · TA获得超过7050个赞
知道大有可为答主
回答量:1818
采纳率:63%
帮助的人:1603万
展开全部
一: 知识点是隐式类型转换
二:-a没有地址,所以不能++,也就是常说的-a是个右值
三:表达式的值和n常量表达式值均不同时:这句意思是:不同的n对应不同的结果,也就是不存在类似n超出某个区域时对应的结果是一个的情况
四.1 第九行的void不要行吗 ,这个在老式编译器上是可以的,比如TC2.0,现在的编译器必须指定返回值类型
.2第二行的int fx(int n)是在定义函数,同时充当函数声明
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
quistgray
2011-11-15 · 超过71用户采纳过TA的回答
知道小有建树答主
回答量:188
采纳率:0%
帮助的人:185万
展开全部
若表达式的值和n常量表达式值均不同时,default可以省略,则该语句什么也不做。
书上的表达不严密。意思是如果表达式的值和所有case后面的值都不相等,则执行default后面的操作。(比如switch(i) case 1: 某操作1; case 2:某操作2; case 3:某操作3; case4:某操作4; default 某操作,i=7,没有哪个case后面有7,所以执行default。如果针对i=7的情况不需要执行任何操作,也就相当于default 后面跟了个空语句,此时,default可以不写。)
追问
请问你举的这个例,“没有哪个case后面有7”是指case n里面的值,不是case1,2,3,4序数吧。而这里表达式的值是7,对吗?
追答
对,就是指表达式的值,不是顺序数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
折咏志0hfd5a
2011-11-14 · TA获得超过279个赞
知道小有建树答主
回答量:182
采纳率:0%
帮助的人:243万
展开全部
1:乘除法的特性(大范围数和小范围数做运算,以大范围位准,C答案就是正确的);
还有运算符优先级

2:
i和 -i 都是表达式
但一个是左值(i),一个是右值(-i)。
++,--这两种操作符要求作用于左值,所以i++合法,(-i)++不合法,在操作符右边。

3:不用这么纠结。default有没有都没关系。
比如
int i;//i只能有1,2两种值
switch(i)
{
case 1:
break;
case 2:
break;
}
一样可以用

4:1)不要也可以,编译器可以通过。文件#include <>的意思是包含你程序中使用到得一些函数申明。void不要的话,编译器可能按默认处理,有可能是int ,所以,实际是存在的。

2)int fx(int n);就是函数申明。一般放在头文件中,即#include <>包含的文件中
这部分,你需要看看多个文件是怎么编译的,就明白了。
追问
呵呵,你好,请问:我的问题二中还没明白什么叫左/右值,为什么右值在左值操作中不合法啊?
追答
在操作符左边,是左值;
右边是右值。
不合法是语法特性。就像乘除法优先级高于加减法一样,c语言规范
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
alan19921201
2011-11-14
知道答主
回答量:20
采纳率:0%
帮助的人:27.4万
展开全部
第一题考的是不同类型变量之间的计算,整形相除所得答案如果是浮点型数据,一般都是向零取整的
第二题的出错原因是因为,负数不能进行自加运算
第三题:
多分支选择语句如下
switch(n)
{case 1:(略);break;
case 2:(略);break;
case 3:(略);break;
......
default:(略);
}
如果n的值和case后面某个值是相等的,那么就执行该case后面的语句,如果没有任意一个case提供的值与n相等的话,那么程序就执行default语句.
第四题:
第一问:void不要是可以的,因为C语言编译器自动会给main函数定义为int型,这个根据不同的编译器有不同的规则.
第二问:int fx(int n)是程序员,就是你自己定义的一个函数,这个函数实现了一个递归的功能,这个程序的功能是输入0+2+4+6+8的值,这个函数定义在你看书看到函数那一章之后就会懂了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式