C语言试题

[说明]:

1、本试题中不考虑头文件引用问题(假定已经包含正确的头文件),C语言的标准函数都可用;

2、如果不特别说明,假定程序运行环境为:操作系统Windows 2000, VC6.0编译环境,缺省为四字节对齐,X86(80586)CPU处理器(32位小字节序处理器);

3、试卷需要回收再利用,请在答题纸上答题;

4、本试题满分为100分,答题时间为120分钟。

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

1、SVN典型工作流程中,在对工作对象做出修改前,先要进行(  )操作。

A. checkout    B. update    C. revert    D. commit

2、修改处理问题的时候,如果是平台共性问题,应在其他平台上对这个问题进行(  )处理。

A.同时        B.同理      C.同仁     D.同步

3、修改代码时添加注释的Qicker快捷命令是?

A. mbg    B. abg    C. dbg    D. mbe

4、通过什么工具可以获取一台未知版本的手机的版本号?

A.SourceInsight    B.Eclipse    C.META    D. Catcher

5、新增文件时添加文件头部声明的Qicker快捷命令是?

A. func    B. file    C. fi    D. hi

6、一个32位的机器,该机器的指针是多少位?

A. 8      B. 16     C. 32   D. 64

7、以下关于const关键字描述哪个是不正确的?

A. 表示常量和可以修改的变量; B. 可以修饰参数,作为输入参数;

C. 修饰函数,防止以外的改动; D. 修饰类的成员函数,不改变类中的数据成员。

8、比较如下两段代码:


Typedef struct EXAMPLE_STRU

{

unsigned int valid: 1;

unsigned int degree: 2;

PERSON person;

unsigned int set_flg: 1;

} EXAMPLE;


typedef struct EXAMPLE_STRU

{

unsigned int valid: 1;

unsigned int degree: 2;

unsigned int set_flg: 1;

PERSON person ;

} EXAMPLE;

左右两边定义的结构所占用的内存空间相差几个字节?

A. 0    B. 1    C. 2    D. 4

9、如下哪个方法是用来保护可重入函数的全局变量的?

A. 开中断    B. 互斥锁    C. 管道    D. 消息队列

10、下面关于函数的描述不正确的是?

A. 一个函数仅完成一件功能。 B. 为简单功能编写函数。

C. 函数的规模没有限制,写多少行都可以。 D. 不要设计多用途面面俱到的函数。

11、如下哪个例子的设计中不适合使用关键字volatile?

A. 手机电源键 B. 硬件时钟

C. 多线程中被多个任务共享的变量 D. 3D渲染引擎

12、优化函数结构时,下面描述的原则哪个是不正确的?

A. 不能影响模块功能的实现。

B. 仔细考查模块或函数出错处理及模块的性能要求并进行完善。

C. 通过分解或合并函数来改进软件结构。

D. 提高函数间接口的复杂度。

13、正式的软件产品中应该把断言及其他调测开关关掉是为了?

A. 防止无法重启系统 B. 减少程序代码空间

C. 提高系统的稳定性 D. 加快软件运行速度

14、如下关于效率的描述不正确的是?

A. 不应花过多的时间拼命地提高调用不很频繁的函数代码效率。

B. 尽量减少循环嵌套层次

C. 要追求紧凑的代码

D. 尽量用乘法或其它方法代替除法,特别是浮点运算中的除法

15、有如下程序代码:

#define OK              0

#define ERR             1

#define ERROR           (-1)

#define BUFFER_SIZE     256

char *GetMemory(unsigned long ulSize)

{

char *pcBuf = NULL;

pcBuf = (char *)malloc(ulSize);

if(NULL == pcBuf)

{

return ERROR;

}

return pcBuf;

}

void Test(void)

{

char *pszBuf = NULL;

pszBuf = GetMemory(BUFFER_SIZE);

if(NULL != pszBuf)

{

strcpy(pszBuf, "Hello World!\r\n");

printf(pszBuf);

free(pszBuf);

}

return;

}

如下描述正确的是:

A、pszBuf指向的内存不能超过255

B、GetMemory函数的异常分支返回了-1,是一个非法地址

C、GetMemory中异常分支没有释放空间

D、pcBuf为局部指针,指向的内存将在GetMemory被调用后释放

16、如下关于测试维护的描述正确的是?

A. 可以通过“试”来解决问题 B. 清理、整理或优化后的代码只要经过测试即可

C. 通过手工备份的方式实现对代码版本进行维护 D. 代码版本升级要经过严格测试

17、如下宏定义不存在风险的是?

A. #define RECTANGLE_AREA( a, b ) ((a) * (b))

B. #define RECTANGLE_AREA( a, b ) (a) * (b)

C. #define RECTANGLE_AREA( a, b ) (a * b)

D. #define RECTANGLE_AREA( a, b ) a * b

18、如下代码:

#define SQUARE( a ) ((a) * (a))

int a = 5;

int b;

b = SQUARE( a++ );

执行完之后a和b的值是多少?

A. a = 6 b = 25 B. a = 7 b = 25 C. a = 7 b = 30 D. a = 7 b = 36

19、有如下代码:

#define SQUARE( a ) ((a) * (a))

int a = 5;

int b;

使用宏的方法正确符合规范的是?

A. b = SQUARE( a++ ); B. b = SQUARE( ++a );

C. b = SQUARE( a ); a++; D. b = SQUARE( (a)++ );

20、有下列程序代码:

#include <stdio.h>

void main()

{

union

{

int     k;

char    i[2];

}*s, a;

s = &a;

s->i[0] = 0x19;

s->i[1] = 0x18;

printf("%x\n", a.k);

}

输出结果是?

A. 不可预知 B. 1819 C. 1918 D. 180019

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

1、设有以下说明和定义:

typedef union

{

long i;

int k[5];

char c;

} DATE;

struct data

{

int cat;

DATE cow;

double dog;

} too;

DATE max;

则语句 printf("%d", sizeof(struct date) + sizeof(max)); 的执行结果是:_______。

2、请写出下列代码的输出内容:______;______;______。

#include <stdio.h>

int main(void)

{

int  a, b, c, d;

  a = 10;

  b = a++;

c = ++a;

d = 10*a++;

  printf("%d ",b);

  printf("%d ",c);

  printf("%d ",d);

  return 0;

}

3、写出下列代码的输出内容:______。

#include <stdio.h>

int inc(int a)

{

return(++a);

}

int multi(int*a, int*b, int*c)

{

return (*c = *a**b);

}

typedef int(FUNC1) (int in);

typedef int(FUNC2) (int*, int*, int*);

void show(FUNC2 fun, int arg1, int*arg2)

{

FUNC1 p = &inc;

int temp = p(arg1);

fun(&temp, &arg1, arg2);

printf("%dn", *arg2);

}

main()

{

int a;  //局部变量a为0;

show(multi, 10, &a);

return 0;

}

4、有如下代码:

unsigned char *p1;

unsigned long *p2;

p1=(unsigned char *)0x801000;

p2=(unsigned long *)0x810000;

请问:p1 + 5 =        ;p2 + 5 =       。

5、写出下列代码的输出:          ;          。

main()

{

int a[5] = {1, 2, 3, 4, 5};

int *ptr = (int *)(&a+1);

printf("%d", *(a+1));

printf("%d", *(ptr-1));

}

6、Heap是堆,Stack是栈,Stack的空间由操作系统自动分配/释放,Heap的空间      分配/释放,Stack空间有限,Heap是很大的自由存储区。

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

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

2、引用与指针有什么区别?

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

4、队列和栈有什么区别?

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

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

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

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

void GetPrimeNumbers(void);

时间: 2024-11-15 21:23:06

C语言试题的相关文章

Wikioi上的C语言试题分析【2014.7.22】

Question [1] 题目描述 Description 输入两个整数A和B,输出他们的和 输入描述 Input Description 输入为一行,包含两个整数A,B.数据保证A与B都在2^31-1的范围内 输出描述 Output Description 输入A与B的和,数据保证A与B的和在2^31-1的范围内 样例输入 Sample Input 1 3 样例输出 Sample Output 4 pass code: #include <stdio.h> int main() { int

第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题

第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 1.原题呈现 2.试题答案 3.题目解析 因博客园无法打出公式等,所以给你们几个小编推荐的链接去看看,在这里小编深感抱歉! https://blog.csdn.net/Lu_Anlai/article/details/85490641 https://blog.csdn.net/Ronaldo7_ZYB/article/details/83098444 来源:CSDN 编辑:疯狂的杰克 原文地址:https://www.cnblo

c语言试题集(1)

1.通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词) #include "stdafx.h" //通过键盘输入一行英文句子,统计其中的英文字母和单词的数量,单词之间用空格分开(标点符号不算单词): #include<stdio.h> #include<string.h> #include<stdlib.h> int main() { char string[100];//根据拟从键盘输入的字串的长度需要

C语言试题(标准答案)

一.单选题(每小题2分,共20小题40分) 1.1-1.5    B D A C B                1.6-1.10    C A D B C 1.11-1.15  A D D C B                1.16-1.20   D A B C A 二.填空题(每空2分,共10空20分) 2.1        52        . 2.2       10         :       12         :       120        . 2.3     

C语言加减乘除

C语言试题库1 第一题  写一个程序,从键盘输入三个整数,然后输出这三个数的和.差.积.商.  和.差.积都很简单用+.-.*去对这3个数直接进行操作就行,但是求商时要注意:C语言中两个整数相除不是算术里的除法,其最后结果还是整数,eg: 3/2=1  5/2=2  那么在C语言最后如何让两个整数相除的结果和算术相除结果一样呢?这时就要把被除数转换成浮点数 代码如下: 1 #include <stdio.h> 2 int main() 3 { 4 int number_1, number_2,

可能碰到的iOS笔试面试题(4)--C语言

可能碰到的iOS笔试面试题(4)--C语言 可能碰到的iOS笔试面试题(4)--C语言 C语言,开发的基础功底,iOS很多高级应用都要和C语言打交道,所以,C语言在iOS开发中的重要性,你懂的.里面的一些问题可能并不是C语言问题,但是属于计算机的一些原理性的知识点,所以我就不再另外写一篇文章了,直接写在这里. 当你写下面的代码时会发生什么事? least = MIN(*p++, b); 结果是:((p++) <= (b) ? (p++) : (*p++)) 这个表达式会产生副作用,指针p会作三次

php面试题之三——PHP语言基础(基础部分)

1. strlen( )与 mb_strlen( )的作用分别是什么(新浪网技术部) strlen和mb_strlen都是用于获取字符串长度. strlen只针对单字节编码字符,也就是说它计算的是字符串的总字节数.如果是多字节编码,如 gbk 和 utf-8,使用 strlen 得到是该字符的总字节数: 可以使用mb_strlen获取其字符个数,使用mb_strlen 要注意两点,一是要开启 mbstring 扩展,二是要指定字符集. 总结: strlen函数不管是字符串是单字节编码还是多字节编

12个有趣的C语言面试题及答案

12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int main(void) { char buff[10]; memset(buff,0,sizeof(buff)); gets(buff); printf("\n The buffer entered is [%s]\n",buff); return 0; } 答:上面代码里的问题在于函数gets()的

C语言面试题大汇总

C语言面试题大汇总 1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量.对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内. 2.如何引用一个已经定义过的全局变量? 答: extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引