帮忙看几道C语言的期末题目~~谢谢!

6.以下各程序语句中,有语法错误的是A)intx=1,y=2,z,a[2*’n’];B)z=x+++y;C)z=x+++y--;D)z=(x+1)++-y;请问intx=... 6.以下各程序语句中,有语法错误的是
A) int x=1,y=2,z,a[2*’n’]; B) z=x+++y; C) z=x+++y--; D) z=(x+1)++-y;
请问int x=1,y=2,z,a[2*’n’]; 这个a[2*’n’]怎么没有语法错误,什么意思? D) z=(x+1)++-y为什么是错误的?

14.以下求矩阵a中主对角元素之和的各程序段中,不正确的是
A) int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, *p=a; for ( p=a; p<a+3; p+=3 ) s+=*p++;
B) int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, i; for ( i=0; i<3; i++ ) s+=a[i][i];
C) int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, *p=a, i; for ( i=0; i<3; i++ ) s+=p[i][i];
D) int a[3][3]={1,2,3,4,5,6,7,8,9}, s=0, *p=a; for ( p=a; p<a+3; p+=4 ) s+=*p;
答案给的c,c错在哪里了? 还有A选项p++是移到下一个元素还是移到下一行,*p=a还可以这样赋值吗?

2.假定有char a=’A’, b=’B’, c, 则执行 printf(“%d”,(c=a<b--?a+b:a-b);的值是
A) 130 B) 131 C) 0 D) 都不是
为什么不是130,而是-126?

7. 设char a[]=”xy\n0\1238\\0”;则数组a的长度是
A)7 B)8 C)9 D)13
答案给的是C,为什么不是B,难道是数组以‘\0’结束的,也要占数组一个位置吗??

5.设有下面的程序段:char s[]=“china”;char *p; p=s;则下列叙述正确的是
A) s和p完全相同 B) 数组s中的内容和指针变量p中的内容相等
C) s数组长度和p所指向的字符串长度相等 D) *p与s[0]相等
这一题答案选D,C错在哪里?
展开
 我来答
ifeiying
2013-04-02 · TA获得超过230个赞
知道小有建树答主
回答量:253
采纳率:100%
帮助的人:147万
展开全部
6.a[2*’n’],这里是字符'n',用作乘法运算就是取出山衫‘n'的ASCII码值进行运算,也就是110,a[2*110]自然没错;D) z=(x+1)++-y,掘唯段x+1运算结果作为常量保存在暂存器中,无法进行自增运算

14.二维数组在内存中其实是一维数组,比如int a[3][3],然后a[0][0]就是第0个元素,a[2][2]就是第2*3+2=8个元素,而p只是一个int*,编译器压根就不知道p[i][i]应该是第i*1+i还是i*2+i或者i*n+i个元素,所以只能用p[i]一维数组的形式。
*p=a这里其实是int *p = a;相当于int *p, p = a;在vs2010是直接报错的。
p++,p是int*类型,++就是移动一个int。

2.char只有8位,去掉一个符号位就剩下7位了,没法表示出130;

7.数组并不以'\0'结束,但是字判誉符串是以'\0'结束,所以要占个位置;

5.数组'\0'算长度,字符串'\0'不算长度。
追问
int a[2][2]={1,2,3,4},*p;  p=a;
为什么这样在vc6中会报错啊?这不是将二维数组的地址赋给指针p吗?
int a[2][2]={1,2,3,4},*p; p=&a[0][0];
如果改成这样为什么就对了?
追答
p=&a[0][0],就是把一个int*指向一个int,当然是对的;
p只是一个int*,就像上面说的 编译器压根就不知道p[i][i]应该是第i*1+i还是i*2+i或者i*n+i个元素,所以它不能指向二维数组;
除非你告诉编译器它的一行有几列,那就可以指向二维了,比如:
int a[2][2]={1,2,3,4};
int (*p)[2]; p=a;
这个就不会有错
百度网友fda723c
2013-04-02 · 超过15用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:41.9万
展开全部
6.A选项'n'拦乱行就是110,在内存中二进制串都是一样的,D选项,x+1 得到的临时变量为右值,无法陪模进行后置++
14.二维数组和指针地址对应不一样,A选项是++下一个元素的地址,*p=a不能这样赋值,但这里要与前面的int连起来简哗看,就是int* p=a;或者说是int *p;p=a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式