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

(1) 4/5+6%3-(012&0x12)-((-1)&&5)的十进制数值是多少?
答案是-3 为什么?请问"&"是什么意思?
(2)unsigned int a=-1;long b;执行b=a;printf("%ld“,b);的结果是_____
答案65535 求解答
(3)下列正确的定义是( )
A int const B int n,a[n] C int INT D int *4a
答案C 这个我理解 但其他三个为什么错呢?
(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
答案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
答案B 求解答 另外三个怎么错了? 感谢!!

(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是因为取余时必须是整数,不能是小数

以上是个人的一点看法
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-01-10
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:%求余只对整型有效
第2个回答  2011-01-10
爪机无力

C语言题目,求大佬解答
被2整除的数有7个,被5整除的数有1个,所以count为8.数组被赋了10个数据,所以K数组的第11个数为0,跳出循环,对应K[10],所以i为10.答案B

c语言的题,求大神解答
题1:i++先进行表达式运算,最后再自增;++i先自增,再进行表达式运算,从结果上看最终都会导致i+1,所以结束后i,j,k都分别加1了。题2:C的写法就是强制类型转换,a1+a2的结果本来还是int,但是被强制转换成了char。A、B是普通的加法运算,D是可以说是赋值运算 ...

C语言,求解答,谢谢
您好,很高兴回答您的问题。其实这个题目主要是考察运算符的优先级别。在C语言中,赋值运算符=的优先级别高于逗号运算符;,所以这个题目其实是先把3*5=15先赋值给变量a,然后再运算逗号表达式15,a*4,a+5。因为最后是要输出a的值,而除了赋值之外,a的值并没有再发生变化,所以最后a的值为15。

求解C语言题目,最好有解释,谢谢:
1.*p1和*p2都是指向float类型的指针。它们的值只能是地址。A B C 中p1或p2的值都是地址,只有D中a[0]+1结果为float类型的数字,不是地址,所以应该选D 2.A 错误,函数的返回值又函数自身定义决定 B正确 C 错误 main函数可以放在程序的后面,前面可以放全局变量和函数等 D 错误 C语言程序总...

C语言 计算机题 求大神解答~
1、能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是“a>=10||a<=0”。(D选项)解析:“≥”用“>=”表示,“或”用“||”表示。2、判断char型变量c是否为大写字母的表达式是“(c>='A')&&(c<='Z')”。(C选项)解析:大写字母是A~Z,加上单引号,可以直接用来判断是否符合要求...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下。
^是按位异或运算符,需要把a和b的值化为二进制数后进行按位异或就能得到答案。题中,a=3 ,二进制为:0011;b=6,二进制值为:0110。所以(a^b)按位异或后的值为0101也就是5,左移两位后值(二进制)为:010100 也就是 :20

急求解答:C语言程序设计试题 请专长人士帮忙解答 谢!!!
一、填空题 1.一个函数一般由两部分组成,它们分别是函数名和函数体。2.一个C语言的程序至少应包含一个主函数。3.函数体用{符号开始,用}符号结束。4.欲将一个16位二进制的整数变量的高8位清零,而只保留低8位,可用的方法是和0x00ff进行与运算。5.数组在内存中是一块连续的储存区,数组名...

C语言题目,求详细解答。
答案是:x=5,y=4,a=1;过程:当x=3,y=6时 执行while(x(3)++!=(y=5))a+=1; (a=1);if(y<x) break; (因为y=5,x=4,所以不成立,因此不执行)注意:这时x因为(x++)所以,x=4;继续执行while(x++(4)!=(y=4))(因为上面y通过想减已经为5了,再减一,等4,与x...

C语言题目,求大神解答
p=aa;\/\/p指向数组aa首地址,即a的位置 当i=0时,会执行 if ( i==0 ) aa[i][i+1]=**(p++); \/\/这时p=p+1,p指向了aa数组的第二行首地址,即d所在位置,所以,printf("%c\\n", **p ); 输出d 答案为C

一道c语言题,求解答,急!
x+=x-=x*x;等同于 x+=(x-=x*x);等同于 x+=(x-=36);等同于 x+=(x=x-36);等同于 x+=(x=-30);等同于 x+=(-30);等同于 x=x-30;x=-30-30=-60;答案是B。

相似回答