C语言问题,急!高手帮忙,今天晚上10:00之前要答案,急!

1.数据类型中属于构造类型的有什么:共用型,结构型,有数组型吗?2.sizeof(float)是:A一种函数调用B一个整形表达式能说明原因吗?3.写输出结果:printf... 1. 数据类型中属于构造类型的有什么:
共用型,结构型,有数组型吗?
2. sizeof(float)是:
A 一种函数调用 B 一个整形表达式
能说明原因吗?

3. 写输出结果:
printf("%d\n",strlen("\t\"\065\xff\n));
答案是5,把\065算做一个字符,说是一个八进制。
但书上说:转义字符\ 后面表示八进制的时候,开头不写0,所以我觉得这里应该看成\0 , 65 。
这当然是不对的,但我还是不理解为什么可以写成 \065 ?

4. int a[]={0,1,2,3,4,5,6,7,8,9},*p=a;
int i;
其中0≤i≤9,则对a数组元素不正确的引用是:
A. a[p-a] B. p[i] C. *(*(a+i))
我知道应该选C
(1)为什么A 是正确的?
(2)p[i]表示的是数组元素的值吗?
(3)为什么C 中的(a+i) 是数组a中第i项元素的值?那么里面的a表示什么,数组名?数组的首地址?

5.下面程序的运行结果是
char *format=" %s,a=%d,b=%d\n";
int a=11,b=10;
a+=b;
printf(format,"a+=b",a,b);
A. for,"a+=b",ab B.format,"a+=b"
C. a+=b,a=21,b=10 D.以上结果都不对
我选了C,但不清楚具体为什么? 还有printf里的format算是什么成分啊?

6. 设有如下语句:
char x=3,y=6,z;
z=x∧y<<2;
则z的二进制值是?
答案给的是00011011 我算的结果是1011,前面补齐就是00001011。算了好多遍,是答案错啦?

7. 以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空
#include <conio.h>
#include <stdio.h>
int fun(int*s,int t,int*k)
{ int i;
*k=0;
for(i=0;i<t;i++)
if(s[*k]<s[i])*k=i;
return----;
}
main()
{ int a[10]={876,675,896,101,301,401,980,431,451,777},k;
clrscr();
fun(a,10,&k);
printf("%d,%d\n",k,a[k]);
}
答案是0 。执行被调函数后返回,只有*k 才真正有用,return 0有什么用啊?

8. 在深度为5的满二叉树中,叶子结点的个数为---
答案是31。可我觉得应该是16。
如果是31,则是2的5次方减1。这个公式求的总结点数啊。
叶子结点个数,也就是最后一层的结点个数,那么应该用公式 2的(5-1)啊?

9. 下面程序段的运行结果是:
char*p="abcdefgh";
p+=3;
printf("%d\n",strlen(strcpy(p,"ABCD")));
答案是4,我想是8,复制后不应该是"abcABCDh"吗?

大家坚持一下,最后一道题啦!
10. 以下定义中,标识符prt int(*prt)[3]
A. 定义不合法
B. 是一个指针数组名,每个元素都是一个指向证书变量的指针
C. 是一个指针,它指向一个具有三个元素的一维数组
D. 是一个指向整型变量的指针
答案解析讲的该是C,答案给的又是D.是应该选C吧?
展开
 我来答
谁用了情无四归
推荐于2016-01-07 · TA获得超过172个赞
知道答主
回答量:47
采纳率:0%
帮助的人:0
展开全部
1.共用型,结构型,枚举型,数组不算是构造类型,属于组合类型。
2.sizeof属于操作符,象+,-一样,sizeof(float)可算表达式。
3.strlen("\t\"\065\xff\n)); 看不懂你写得什么,语法错误。八进制\o xxx,十六进制\x xx。不写o应该识别不出是什么进制。如果是strlen("\t\\065\xff\n")); 则答案是7。
4.(1).A里p-a是指针得运算,得到的是一整数,可以作为索引来取值。
(2).是,第i-1个元素。
(3).(a+i)表示第i个元素的地址。*(a+i)表示第i个元素。 在运算中,a表示的当然是首地址。
5.这其实就是:printf(" a+=b,a=%d,b=%d\n"; ,a,b);的变体而已,只不过把a+=b用一个字符串来赋给一char *而已。
6.答案给的是00011011 。〈〈的优先级高,先左移再异或。
7.输出:6,980,return 0表示函数int fun(int*s,int t,int*k) 的返回值是0 。
8.你的想法是对的,叶子节点是2的(5-1)次方。
9.p+=3;只是用来迷惑你的;事实上strcpy(p,"ABCD") 是以p 为新首地址的复制,而不是以原来的char*p为首地址。复制后是"ABCD"。
10.答案是C。

建议你换本书看,你的书错误太多。
忘至白葬不情必0T
2006-09-22 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
1、数组是构造类型
2、sizeof不是函数,是运算符,所以选B
3、你说的“\ 后面表示八进制的时候,开头不写0”我没看到过,我只看到\后面跟1到3个数表示八进制(这些数不能超过7)
4、
(1)p这时候等于a啊,所以p-a==0,a[p-a] 不就是a[0]么
(2)是,和a[i]是一个意思
(3)a是数组名,C语言规定数组名即表示数组首地址的常量,它和这里的p都是int *类型,不同的是a是常量,不能改变,p是变量,可以改变。
5、printf的第一个参数是个字符串,用来作格式化输出参数,这里的format变量不就正好是字符串的指针么。
6、<<的优先级比^高,所以先将y左移2位再和x异或。
7、这里的*k用来保存真正想要的结果,所以return 0只是做个样子,告诉你函数运算正确而已。
8、我认为你是对的。
9、"ABCD"有隐含的'\0'啊,strcpy时这个'\0'也被复制了啊,所以是abcABCD\0,strlen求长度时看到'\0'就结束了,所以返回4。
10、C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式