有关C语言的几个问题

1.若有说明语句:char a[]="It is mine"; char *p="It is mine";
则以下不正确的叙述是()。
A a+1表示的是字符t的地址。
B p指向的字符串与a数组中存放的字符串是同一个串
C p变量中存放的地址值可以改变
D a中只能存放11个字符号
2.char *a[]={"C","MATH","JAVA","BASIC"};则表达式*a[2]>*a[3]比较的是()。
A 字符M和字符J
B 字符串JAVA和字符串BASIC
C 字符串MATH和JAVA
D 字符J和字符B
请高手们给出详细的理由,谢谢........
还有一个问题
说明下面函数的功能。
int f(int a[],int n)
{
if(n<=1) return 1;
if(a[0]<a[1]) return 0;
return f(a+1,n-1);
}

第1个回答  2009-01-02
1选B 在内存中的存放地址是不同的 也就是说内从中有2个 It is mine的字符串
2中定义的我看的不是很清楚,应该是定义了1个二维数组的但是括号里应该是列数且不能省略的,但答案应该是D把 字符串的比较是一个字母一个字母对应的比较,比较的是ASII值
3是比较数组中的字母的ASII的值的大小,有递归。
当N为1则输出真 但a[0]<a[1]输出假,若都不是在将A的地址向下挪一位继续比较。
本人也是初学者若有错还请见谅
第2个回答  2009-01-02
1.若有说明语句:char a[]="It is mine"; char *p="It is mine";
则以下不正确的叙述是(D)。
A a+1表示的是字符t的地址。
B p指向的字符串与a数组中存放的字符串是同一个串
C p变量中存放的地址值可以改变
D a中只能存放11个字符号
2.char *a[]={"C","MATH","JAVA","BASIC"};则表达式*a[2]>*a[3]比较的是(B)。
A 字符M和字符J
B 字符串JAVA和字符串BASIC
C 字符串MATH和JAVA
D 字符J和字符B
第3个回答  2009-01-02
看C和指针,C专家编程。网上又扫描版的,看不清楚的话自己到当当网上买。两本书100左右,都是经典,翻译得也很好。买了不吃亏的。
看完你就基本上都懂了。
请把我的回答设成最佳答案
授人鱼不如授之以渔
第4个回答  2009-01-02
第一题选A,a表示了数组的首地址,但只有它作为指针变量的元素才能用a+1!
第二题选B,猜的!本回答被网友采纳
第5个回答  2009-01-02
1 B
2 D a[0]指向{"C"} 指针指向数组时是指在第一个
相似回答