几道C语言的选择题,大家帮忙看看

1、设 int x=1,y=1;表达式 "!x||y" 的值是()
A、0 B、1 C、2 D、-1

2、如果已定义 int b[10],*p=b; 并在以后语句中未改变p的值,不能表示
b[1]的地址的表达式是()
A、p+1 B、b++ C、b+1 D、++p

3、假定a和b为int型变量,则执行下面语句组后b的值为()

a=1;b=10;
do{
b-=a;a++;
}while(b--<0);

A、9 B、-2 C、-1 D、8

4、若有以下定义和语句,则输出的结果是()
char c1='b',c2='f';printf("%d\n",c2-c1);

A、2 B、3 C、4 D、5

5、已知:char a[3][10]={"zhang","li","wang"},*pa=a; 不能正确显示字符串"li"的语句是()
A、printf("%s",a+1); B、printf("%s",*(a+1));
C、printf("%s",*a+1); D、printf("%s",&a[1][10]);

希望能做一下简单的说明,多谢了

1.B
!比||优先级高,所以||最后算.而y=1,||左边不管是什么,最终结果都是1

2.B
数组名是常量,不允许改变.

3.D
b-=a,b变成9,然后a++,a变成2.再判断b-->0,条件不成立,结束循环,再是b--后面的--起作用,b变成8

4.C
不用多说了,b,c,d,e,f

5.CD
*a+1指向的是zhang的第2个字符,所以输出 hang
&a[1][10]指向的是wang
如果是&a[0][10]的话,倒是指向li
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-20
B:x=1, y=1, !1=0, 0||1=1
B:b++, b为指针常量,而且b++返回值为b
D:a:1, b:10 //a=1, b=10;
a:1, b:10//do{
a:1, b:9//b-=a;
a:2, b:9//a++;
a:2, b:8//}while(b--<0);
b=8
C:'b', 'c'('b'+1), 'd'('b'+2), 'e'('b'+3), 'f'('b'+4)
C&D:运行得
第2个回答  2009-04-20
1.B,因为逻辑非(!)远算符优先级比逻辑或(||)高,
!x||y应该为(!x)||y
!x为0(假),和y作逻辑或远算,就为1(真)
2.B,因为b++是先使用b的值,再改变b的值,使b的值加1
3.D,因为b=b-a=10-1=9,而while(b--<0)中又使b的值自动减1,故为8
4.C,char c1='b'=98,c2='f'=102,c2-c1后输出整数型为4
5.A,printf("%s",a+1);输出的是第一行的第一列字符,
第3个回答  2009-04-20
1、设 int x=1,y=1;表达式 "!x||y" 的值是(B)
A、0 B、1 C、2 D、-1
PS: !x不是1,就是假的意思 y是真 中间的||或的意思。所以0或1,整个就是1了。

2、如果已定义 int b[10],*p=b; 并在以后语句中未改变p的值,不能表示
b[1]的地址的表达式是(C)
A、p+1 B、b++ C、b+1 D、++p
PS: 数组标量名的指针地址为a[0]是常量指针,因而是错误的。

3、假定a和b为int型变量,则执行下面语句组后b的值为(D)

a=1;b=10;
do{
b-=a;a++;
}while(b--<0);

A、9 B、-2 C、-1 D、8

PS:

4、若有以下定义和语句,则输出的结果是(C)
char c1='b',c2='f';printf("%d\n",c2-c1);

A、2 B、3 C、4 D、5

5、已知:char a[3][10]={"zhang","li","wang"},*pa=a; 不能正确显示字符串"li"的语句是(C)
A、printf("%s",a+1); B、printf("%s",*(a+1));
C、printf("%s",*a+1); D、printf("%s",&a[1][10]);

PS:a是地址,所以前面要加指针或者取指操作符
第4个回答  2009-04-20
C.非X=0.或Y=1
A.地址好像不能P+1。
A.b--=9.由于是先循环后判断,所以只做了一次b=b-a,所以=9
C.字符b和f的ASCII码之间相差了4,输出的是%d,应该是4
A.

好长时间没用C了。仅供参考。
第5个回答  2009-04-20
B
B
D
C
CD
相似回答