引导语:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。以下是小编整理的c语言经典笔试题,欢迎参考阅读!1.用预处理指令#define声明一个常数,用以;#def下面是小编为大家整理的2023年c语言经典笔试题【完整版】,供大家参考。
引导语:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。以下是小编整理的c语言经典笔试题,欢迎参考阅读!
1.用预处理指令#define声明一个常数,用以;#defineSECONDS_PER_YEAR;2.写一个“标准”宏MIN,这个宏输入两个参数并;#defineMINA,BA<=;4.嵌入式系统中经常要用到无限循环,你怎么样用C;这个问题用几个解决方案;while1;一些程序员更喜欢如下方案:;for;;;第三个方案是用goto;
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR 60 * 60 * 24 * 365UL
2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
#define MINA,B A <= B A : B
4. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
这个问题用几个解决方案。我首选的方案是:
while1
一些程序员更喜欢如下方案:
for;;
第三个方案是用 goto
Loop:
...
goto Loop;
5. 用变量a给出下面的定义
a 一个整型数(An integer)
b 一个指向整型数的指针(A pointer to an integer)
c 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d 一个有10个整型数的数组(An array of 10 integers)
e 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)
f 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
g 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )
答案是:
a int a; // An integer
b int *a; // A pointer to an integer
c int **a; // A pointer to a pointer to an integer
d int a[10]; // An array of 10 integers
e int *a[10]; // An array of 10 pointers to integers
f int *a[10]; // A pointer to an array of 10 integers
g int *aint; // A pointer to a function a that takes an integer argument and returns an integer
h int *a[10]int; // An array of 10 pointers to functions that take an integer argument and return an integer
6. 关键字static的作用是什么?
这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:
1. 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2. 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3. 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
7.关键字const是什么含意?
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。
8. 关键字volatile有什么含意 并给出三个不同的例子。
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1. 并行设备的硬件寄存器(如:状态寄存器)
2. 一个中断服务子程序中会访问到的非自动变量Non-automatic variables
3. 多线程应用中被几个任务共享的变量
1. 一个参数既可以是const还可以是volatile吗?解释为什么。
2. 一个指针可以是volatile 吗?解释为什么。
3. 下面的函数有什么错误:
int squarevolatile int *ptr
return *ptr * *ptr;
Ptr内容可能被修改,无法保证两次取得同一个值,应该先取出值放入一个变量中,然后通过这个变量来计算
9. 嵌入式系统总是要用户对变量或寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。
#define BIT3 0x1<<3
static int a;
void set_bit3void
void clear_bit3void
a &= ~BIT3;
10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。 Int *p;
P=int*0x67a9;
*p=0xaa66;
11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序ISR,请评论一下这段代码的。
__interrupt double compute_area double radius
double area = PI * radius * radius;
printf" Area = %f", area;
return area;
12 . 下面的代码输出是什么,为什么?
void foovoid
unsigned int a = 6;
int b = -20;
a+b > 6 puts"> 6" : puts"<= 6";
>6
13. 评价下面的代码片断:
unsigned int zero = 0;
unsigned int compzero = 0xFFFF;
/*1's complement of zero */
14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?
主要有三种类型:内存泄露、内存碎片和内存崩溃 内存崩溃是内存使用最严重的结果,主要原因有数组访问越界、写已经释放的内存、指针计算错误、访问堆栈地址越界等等。碎片收集的问题,变量的持行时间等等
下面的代码片段的输出是什么,为什么?
if ptr = char *malloc0 == NULL
puts"Got a null pointer";
else
puts"Got a valid pointer";
该代码的输出是“Got a valid pointer”。
15. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:
#define dPS struct s *
typedef struct s * tPS;
答案是:typedef更好。思考下面的例子:
dPS p1,p2;
tPS p3,p4;
第一个扩展为
struct s * p1, p2;
上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。
16. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?
int a = 5, b = 7, c;
c = a+++b;
上面的代码被处理成:
c = a++ + b;
因此, 这段代码持行后a = 6, b = 7, c = 12。
17.找错题
试题1:
void test1
char string[10];
char* str1 = "0123456789";
strcpy string, str1 ;
试题2:
void test2
char string[10], str1[10];
int i;
fori=0; i<10; i++
str1[i] = 'a';
strcpy string, str1 ;
试题3:
void test3char* str1
char string[10];
if strlen str1 <= 10
strcpy string, str1 ;
解答:
试题1字符串str1需要11个字节才能存放下(包括末尾的?\0?),而string只有10个字节的空间,strcpy会导致数组越界;
对试题2,如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpystring, str1调用使得从str1内存起复制到string内存起所复制的字节数具有不确定性可以给7分,在此基础上指出库函数strcpy工作方式的给10分;
对试题3,ifstrlenstr1 <= 10应改为ifstrlenstr1 < 10,因为strlen的结果未统计?\0?所占用的1个字节。
18.写出字符串strcpy的函数实现过程式
void strcpy char *strdest, char *strsrc
while *strdest++ = * strsrc++ != ?\0? ;
4分
void strcpy char *strdest, const char *strsrc
//将源字符串加const,表明其为输入参数,加2分
while *strdest++ = * strsrc++ != ?\0? ;
7分
推荐访问:笔试 语言 经典 c语言经典笔试题 c语言经典笔试题 c语言常见笔试题 c语言笔试题目及答案 100条经典c语言笔试题目
上一篇:2023年度税务师备考高效策略
牢牢端稳中国人的饭碗作文锦集6篇牢牢端稳中国人的饭碗作文锦集篇1一天早上,小芬正在津津有味地吃着早饭。她三下五除二将米粥扒完,又一口气吃了三个热气腾腾的馒头
大学趣味运动会活动策划书11篇大学趣味运动会活动策划书篇1在学校运动会开始前夕,我们先搞一次班级趣味运动会,在为运动会热身的同时,让同学们体验到运动的乐趣,
弘扬家风家训的作文600字范文合集7篇弘扬家风家训的作文600字范文合集篇1在我们家,家风是艰苦朴素,这是一个家庭必不可少的成分。艰苦朴素的家风意味着吃苦耐
传承红色基因征文作文锦集8篇传承红色基因征文作文锦集篇1 传承红色基因征文作文锦集篇2真正的共产党人血脉中流淌着红色基因。深蕴着忠诚坚定、不畏牺牲、艰苦奋斗
铸牢中华民族共同体意识工作调研报告大全范文6篇铸牢中华民族共同体意识工作调研报告大全范文篇1要紧扣“中华民族一家亲,同心共筑中国梦”总目标,秉持“重在平时、
2023年高中班主任个人计划范文锦集4篇2023年高中班主任个人计划范文锦集篇1一、班级情况分析高一(1)班人数xx人,男生女生各占一半,刚好平衡。中午
班级三好学生讲话稿范文篇3篇班级三好学生讲话稿范文篇篇1亲爱的老师、同学们大家好:现在正值阳春三月,带着春天的气息,怀着激动的心情,我来到这个讲台上。我
幼儿园民非年检下年度工作计划精选篇4篇幼儿园民非年检下年度工作计划精选篇篇1一、平安工作:1、执行门接送卡接送制度,请家长按要求在接送孩子时必需拿卡,才
院士工作站年度工作计划与总结9篇院士工作站年度工作计划与总结篇1各位来宾、赵法箴院士,大家上午好!今天,很荣幸能参加京鲁渔业院士工作站工作会议,也很高兴
幼儿园儿童节演讲稿范文优选4篇幼儿园儿童节演讲稿范文优选篇1 幼儿园儿童节演讲稿范文优选篇2各位领导、家长:感谢你们放下繁重的工作和我们的宝贝儿们一起过