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

来源:百度知道 编辑:UC知道 时间:2024/05/29 00:20:38
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

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:运行得

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);输出的是第一行的第一列字符,

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