大一基础C语言问题

有以下定义语句doublea,b;intw;longc;若各变量已正确赋值,则下列选项中正确的表达式是______。D、w=a=b;错误若变量a已正确定义,合法的语句是_... 有以下定义语句
double a,b; intw; long c;
若各变量已正确赋值,则下列选项中正确的表达式是______。
D、w=a=b; 错误
若变量a已正确定义,合法的语句是______。
C、a=a++=5错误
若变量已正确定义并赋值,下面符合C语言语法的表达式是______。
B、a=b=c+2 正确 为什么 前两个是错的 最后一个是正确的?
1.以下4个选项中,不能看作一条语句的是______。
A、{;} B、a=0,b=0,c=0;
C、if(a>0); D、if(b==0) m=1;n=2;???
答案:D
2.以下函数值的类型是______。
fun(float x)
{
float y;
y=3*x-4;
return y;
}
A、int B、不确定 C、void D、float
答案:A
3.若有代数式,则不正确的C语言表达式是( C )。
A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D. a*e/c/b*3
4.表达式18/4*sqrt(4.0)/8值的数据类型是( C )。
A. int B. floatC. double D. 不确定
5.( × ) 字符数组不要求它的最后一个字符为‘\0’,甚至可以不包含‘\0’。

然后下面5题麻烦讲解下
展开
 我来答
种烧饼的怪叔叔
2014-01-04 · TA获得超过2214个赞
知道小有建树答主
回答量:824
采纳率:65%
帮助的人:434万
展开全部
0)w=a=b w的类型和a b不同,类型不同占用的存储空间和存放的寄存器也不一样,如果要赋值需重新对类型进行注释:w=(int)a=(int)b
0)a=a++=5连环赋值是c和C++特有用法,顺序是从右到左依次赋值,但是,赋值的左边对象必须是一个左值,左值必须是占用固定存储空间的,a++就不是左值,他是一个运算式:a=a+1;
1)D、if(b==0) m=1;n=2;这个是两个语句,因为他有两个;符号
2)以下函数值的类型是 int ,c语言规定,函数类型不写的都是int,例如char fun(float x),函数类型就是char,fun(float x)和int fun(float x)是等价的。
3)暂时没找到错误
4)4.0是一个double类型,和常数混合运算后的值还是double类型。为什么知道4.0是double不是float,因为库函数规定了sqrt()中的形参必须是double。
5)最后一题在使用中的确是允许的,但是会出非常对的漏洞,例如puts的输出函数式见到‘0’就结束的,如果字符数组存满了数据,puts遇不到结束符‘0’就会一直输出,就会出现一堆乱码
更多追问追答
追问
w=a=b;   这个系统难道不会自动进行强制转换吗?
追答
不行的,赋值用组成原理的说法就是通过总线从一个寄存器传递到另一个寄存器,double类型的寄存器和int是不一样的。
匿名用户
2014-01-04
展开全部
我认为应该都可以的吧。我常这么用啊。

if(b==0) m=1;n=2;这个是因为这里有两条语句了。
if(b==0)
{m=1;n=2;}

我认为是D啊。

3.若有代数式,则不正确的C语言表达式是( C )。A.a/b/c*e*3
B.3*a*e/b/c
C.3*a*e/b*c
D. a*e/c/b*3

ABD都是
(3ae)/(bc)
C是
{3aec)/b

18/4*sqrt(4.0)/8
这里有低就高原则。(QtAIBt0qY4VjnFfyzUthl2NIeR8N2eq1a5P1dRtGBznGknoCIiE-jRk5tEGlxe-cYRHn6F88MMxbeuahP-XXmrB5k_Vd07)

字符数组不要求它的最后一个字符为‘\0’,甚至可以不包含‘\0’。
这个判断是错的。因为字符数组一定要以\0结束。不然就没有终止了。
追问
char a[4]={'a','b','c','d'}  这个字符数组难道有’\0'么?
追答
好吧,是我看错了,字符串必须有\0
那这个应该对的吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式