1.单选样例

lint k = x>y? (x>z?x:z) :(y>z?y:z)  语句的目的是:

(A) x, y, z 最大值

(B) x, y, z 最小值

(C) x, y, z 中间值

(D) x, y, z 平均值


答案:A


l定义:char p[20];   则,&p, p, &p[0] 的区别是:

(A)&p, &p[0] 不能作为左值变量,而p可以。

(B)它们所表达的数值不同。

(C)p在栈中,而p[0]在堆中

(D)没有区别


答案:D


2.多选样例

l如何让一个函数返回大量的数据?

(A)使用公开的静态空间

(B)定义大量的形参

(C)让被调函数申请空间并返回该指针,主调函数用后负责释放该空间。

(D)让主调函数申请空间并传入该指针,被调函数用后负责释放空间。

(E)让主调函数传入指向指针的指针。


答案:A, C, E


3.程序填空题样例

l如果只提供加减乘除的基本运算能力,你能实现求平方根吗?可以的!先随便猜一个根,用它试除目标数字,如果结果恰好等于所猜的数,则问题解决。否则用结果与所猜的数字的平均值再去试除….

假设待开方的数字为 double a;

   double t = a / 2 ;

   double t2;

   for(;;){

       t2 = a / t;

       if(fabs(t-t2)<0.001) break;

       t = _________;

   }


答案:  (t+t2)/2

注意:(t+t2) / 2.0,  (t2+t) * 0.5 都算对的。


4.编程题样例(高职)

在电梯、家用电器中,随处可见数码管显示的应用。一般是7个发光管组成8字形的排列,可以显示0-9的数字。我们可以给这7个发光管编号,以便区分它们:

我们给出了一个用于模拟这个显示过程的程序,并提供了源代码。输入数字,可以在控制台示意这些数字的对应数码管显示的效果,亮的管显示为“@, 不亮的管显示为“.”。

程序的主要用途是:决定哪个数字由哪些点亮的数码管组成。因为不能控制真的数码管,所以采用了一个字符缓冲区来模拟效果。


运行ShowDigit.exe文件,可以看到最终的效果。

我们给出的源代码含有若干错误或缺陷(对照ShowDigit.exe的效果),请考生予以指出并完善。

1.指出错误的原因、位置,并改正。

2.未完成的功能(按比率放大)需要选手独立完成。提交源代码和简要注释。



l参考与解答:

本文附件:

3.提供了可运行的exe程序

4.提供了包含若干错误或缺陷的源程序

5.提供了全部源程序(不给考生)


错误点:

1.输入 exit 无法退出程序。等号改为strcmp

2.数码“1”显示的不正确,修改矩阵即可。

3.倾斜的方向弄反了。改为 7-i



5.编程题样例(本科)

我们看到屏幕上显示的汉字的字型有两种表达方式:一种称为矢量方式,一种称为点阵方式。其中的点阵方式较为简单,其原理就是好比:铺地砖。有的铺为白色,有的铺为黑色,只要精心安排,就会组成我们希望的图案,当然也可以是汉字。

瓷砖越多,铺出的图案效果越细腻,这就是点阵的规模。

16点阵十分常用,是把一个汉字用16 x 16 = 256个像素点来描绘。


每个bit代表1个像素点,16点阵的字模需要256个像素点信息,故需32字节

字节的排列与16点阵像素的对应关系如下表:


0字节1字节

2字节3字节

 .......

 .......

14字节15字节


也就是说:每1行的16个点由2个字节提供。顺序是:从上到下,从左到右。


当我们需要记录一个汉字信息的时候,当然不是存储汉字的字型,而是存储它的编码。汉字可以有多种编码的规则,其中GB2312的编码规则是:一个汉字用两个字节表示,前一个字节表示区号,后一个表示区中的偏移序号。

每个区有94个汉字。区号和序号的编码都是从 0xA1开始(为了避免和西文冲突)

已知某个汉字的gb2312编码,就可以计算出它在字模文件中所在的绝对位置。


我们给出了一个用于理解这个原理的程序,输入一个汉字(实际上得到的是它的GB2312编码),就可以从字模文件(HZK16.DAT)中读出字型信息。再设法取出对应位的信息,把“瓷砖”铺到屏幕上。


程序的执行文件是完整的,可以动手测试它。

程序的源代码是残缺的,其中最重要的向屏幕输出函数等待考生完成。


1.请首先写出编码的大体思路(500字以内)

2.完成编码(不能超过100行)