一些计算机等级考试题目

来源:百度知道 编辑:UC知道 时间:2024/05/15 19:40:24
1.如何利用补码来计算负数的八进制和十六进制?例如:将数据-5用八进制和十六进制表示(请给出详细步骤)
2.请写出将整数n(0<=n<=9)转化为数字字符的表达式(ASCII)
3.以下程序的执行结果:
#include<stdio.h>
void printletter()
{
static int c=57;
if(c>=48)
{putchar(c);
c--;
printletter();
}
}
main()
{printletter();}

4.以下程序输出结果是:
main()
{
int i=010,j=10,k=0x10;
print("%d,%d,%d\n",ijk);
}

5.设有变量定义:
int a=4,b=3,c=2,d=1;
试写出表达式的值(a--==++b)?--c:++d
变量a,b,c,d的值

6.为了要在屏幕上输出a,为什么用putchar('\97')错误,而要用putchar('\141'),要用转义字符?

本人的基础比较薄弱,请高手在回答问题时,尽量能够详细的说明原因和方法,谢谢大家了!
能否详细说明一下第三第四题的推理过程,谢谢!

1. 假设int用2字节表示,那么5就是
0000 0000 0000 0101,补码就是取反加1,即
1111 1111 1111 1011,8进制就是
1 111 111 111 111 011 即177773
16进制就是FFFB,如果int用4字节表示,则8进制为37777777773,16进制为FFFFFFFB

6.转义字符没有前缀表示是8进制数,字符a的ascii值为16进制的61,也就是10进制的97,8进制的141。所以应该用"\141"或者"\0x61"都是正确的,注意16进制需要加前缀0x

1,2题可以参考有关c语言的教材,我也很难说清楚3.递归调用,结果是57,56,55,54,53,52,51,50,49,48
4 010是十进制,0x10是16进制,结果为8,10,16
5 ==运算符优先级较小,先算两边,a--取计算前的值,++b取计算后的值,都是4,所以三目运算符应该取--c的值,即为1,也是表达式的值,a=3,b=4,c=1,d=2
6 \加ASCII码可消去它后面的原义,具体详见ASCII表