C语言考试题 求解答!!!感谢!!!

2024-10-30 11:22:57
有3个网友回答
网友(1):

(1)&&这个是"逻辑与"的意思,&是"与",&就是把数字变成二进制,然后去做与运算,比如11B&10B=10B,就这样的,都是二进制的.
(2)这个要从二进制上看,unsigned int a是无符号的,最小是0,最大是65535(当然,这是在16位机,也就是TC下的,现在的VC什么的结果都不是这个了),0-1就变成65535了,-1写成二进制是11111111,而65535也是.long的值足够大,当然就是显示这个了.
(3)A是关键字,B中数组的下标要是常量,D必须以字母或下划线开头.这都是书里前几章讲的.
(4)010是八进制,转换成十进制是8,所以p=a+8就是a[8]也就是'I',然后输出的时候是从p-5开始的,也就是a[8-5]=a[3]所以是从D开始的.
(5)AB不清楚,C的话非要说错就是因为没值,D是因为取余时必须是整数,不能是小数

以上是个人的一点看法

网友(2):

4/5+6%3-(012&0x12)-((-1)&&5)的十进制数值是多少?
答案是-3 为什么?请问"&"是什么意思?
4/5=0
6%3=0
&这个是位与,你把数化成二进制,对应位如果都为1,则结果为1。否则为零。与操作,你可以看成乘法。012&0x12,012是八进制,0x12是十六进制,分别化为二进制为:
0001010 & 00010010=00000010=2
((-1)&&5),这个是与,上面是位与,只要不是0都认为是1,只有两个同时为1结果为1,即1&&1=1
最后得0+0-2-1=-3
==================
(2)unsigned int a=-1;long b;执行b=a;printf("%ld“,b);的结果是_____
答案65535 求解答
首先-1的二进制为:0xFFFF
具体计算过程:由于为负,符号位为1,反面的取反加1,即00000000000001取反加1=111111111111111,符号位为1,拼成:1111111111111111(16个1),即0XFFFFFFFF,赋给长整形b,由于它的位数比较长,前面补零,形成:
0x00FF,化为十进制即65535

(3)下列正确的定义是( )
A int const B int n,a[n] C int INT D int *4a
第一个:int const,const是关键字,不是变量名,该写法属于没有变量名
第二个:int n这个没有问题。但int a[n]有问题。定义数组,其个数必须是一个具体的数值,或者说编译时应当知道的值,不应该是一个变量
第四个:定义一个整形指针,但是变量名是数字,字母或下划线组成,并且第一个字符不能为数字。所以4a不是一个变量。

(4) 一下程序的运行结果是( )
main
{char a[10]={'A','B','C','D','E','F','G','H','I',0},*p;
int i;
p=a+010;
printf("%s\n",p-5);}
A. A B.ABCDEFGHI C.D D.DEFGHI

注意010这是一个八进制数,对应于十进制为8,即p=a+8,指向I,P-5指向D,打印字符串时,是碰到0(不是字符零哟)停止,所以是D项

(5)指出下面正确的表达式( )
A. a='\108' B. a='\xab',b=6%3,c+=7 C.int a[10];a++; D.5.6+6.2%3.1
A:\后面可以加上转义符,也可以加上八进制的东西,从这里看它是一个八进制的,但是八进制中,是没有8的。
C:a是一个数组,数组名虽然与指针类似,但它是一个固定的指针,不支持++操作
D:%求余只对整型有效

网友(3):

爪机无力