C语言试题(标准答案)

C语言试题(标准答案)

一.单选题(每小题2分,共20小题40分)

1.11.5    B D A C B                1.61.10    C A D B C

1.111.15  A D D C B                1.161.20   D A B C A

二.填空题(每空2分,共10空20分)

2.1        52        。

2.2       10         ;       12         ;       120        。

2.3       110        。

2.4       0x801005   ;       0x801014   。

2.5       2          ;       5          。

2.6       自动       。

三.简答题(每小题4分,共5小题20分)

3.1全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答:可以。(2分)

在不同的C文件中以static形式来声明同名全局变量。(2分)

3.2引用与指针有什么区别?

答:(1) 引用必须被初始化,指针不必;(1分)

    (2) 引用初始化以后不能被改变,指针可以改变所指的对象;(1.5分)

    (3) 不存在指向空值的引用,但是存在指向空值的指针。(1.5分)

3.3堆栈溢出一般是由什么原因导致的?

答:没有回收垃圾资源。(或答:没有释放无用的资源。)(4分)

3.4队列和栈有什么区别?

答:队列先进先出,(2分)栈后进先出。(2分)

3.5编译工作区的时候,往往会遇到错误码为“0x00000002”的编译错误,查找相应的错误描述却没有找到,出现此种情况的原因是什么?应该怎样处理?

答:原因是编译过程产生了不可预知的错误。(2分)

    解决办法有:尝试重启电脑或禁用分布式编译采用单机编译。(2分)

四. 编程题(每小题10分,共2小题20分)

4.1编写函数实现一个整数的逆序输出,整数由参数n表示,例如n=1234,则输出4321,要求不可以使用任何C库函数,函数原型如下:void inv(int n);

答题评分标准:

1、 考虑了负数的情况:3

2、 使用了临时变量:2

3、 有打印并打印格式正确:1

4、 有相应的注释:1

5、 结果完全正确:3

参考程序:

void inv(int n)

{

int tmpNum = n;   // 使用了临时变量:2

 

    if (tmpNum < 0)   // 考虑了负数的情况:3

    {

        // 负数

        k = 0;

        tmpNum = -tmpNum;

printf("-");

    }

 

while(tmpNum)

{

printf("%d", tmpNum%10);  // 打印正确:1

tmpNum = tmpNum / 10;

}

}

 

4.22~2000的所有素数并打印在屏幕上,有足够的内存,要求尽量快。

答题评分标准:

1、 保存找到的素数,使用全局数组和全局变量而非临时申请的空间:3

2、 判断素数的关键循环:3

3、 有打印并打印格式正确:1

4、 有相应的注释:1

5、 结果完全正确:2

参考程序:

 

int findvalue[2000] = {2};  // 使用了全局数组和全局变量:3

static int find = 1;

bool adjust(int value);

 

void GetPrimeNumbers(void)

{

for (int i = 2; i <= 2000; i++)

{

if (adjust(i))      // 有打印判断并打印语句正确:1

{

printf("%d ", i);

}

}

}

 

bool adjust(int value)

{

assert(value>=2);

 

if (value == 2)

{

return true;

}

 

for (int i = 0; i < find; i++)    // 判断素数的关键循环:3

{

if (value % findvalue[i] == 0)

{

return false;

}

}

 

findvalue[find++] = value;

return true;

}

 

posted on 2015-07-31 10:50  乐学乐  阅读(654)  评论(0编辑  收藏  举报

导航