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错在哪里?
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;
这个就不会有错