中科创达驱动组笔试题.doc_第1页
中科创达驱动组笔试题.doc_第2页
中科创达驱动组笔试题.doc_第3页
中科创达驱动组笔试题.doc_第4页
中科创达驱动组笔试题.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 定义一个宏,表示一年有多少秒。#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL2、 请指出以下两个数组有什么区别?Char str1 = “ABCDE”; 数字会自动填充6.Char str25 = “ABCDE”; 越界,有0Struct boyInt num;Char str10;*p;P=(asd*)malloc(sizeof(struct);Free(p);/Struct boyInt num;Char *str;*q;q=()malloc(sizeof(struct);q-str=malloc(10);Free(q-str);先释放成员,在释放结构体Free(q);3、 在32位系统的程序中,存在如下结构体Typedef struct _MSG_1_Char srcModule;Char destModule;考察结构体对齐:4Short msglen;Unsigned char body0; 不占空间 ,body0必须是结构体最后的成员。 MSG_1;/Typedef struct _MSG_1_Char srcModule;Short msglen;考察结构体对齐:6Char destModule;Unsigned char body0; 不占空间 ,body0必须是结构体最后的成员。 MSG_1;/Typedef struct _MSG_2_Char srcModule;Char destModule;Short msglen;Unsigned char *pBody; / 占空间 结构体变量q = ()malloc 。,q-pBody = malloc .比较麻烦 MSG_2;Sizeof(char) = 1,Sizeof(short) = 2;那么(1) Sizeof(MSG_1) = ?Sizeof(MSG_2) = ?(2) 请简练地给出解释。4、 以下函数用来判断一个整型值是否大于3和小于7,如果是返回0,不是返回-1,请说明此函数是否符合要求;并说明原因。Int func(intx)If(3x7) Return 0;Return -1;3x3) &( x7 ) .3x3 .如果大于,返回真。即1;如果x3,即假,为0.所以无论怎么样,都是7 的,就会恒成立。5、 请给出如下问题的一种或多种修改方案,并分析修改方案的优缺点:存在rlc.c和rrc.c两个源代码文件A. c:其中存在如下代码片段:Typedef struct _StatisData_Unsigned int successNum;Unsigned int failureNum;StatisData;StaticStatisDatastatisData此前,类型StatisData及变量StatisData只在文件rlc.c中,现在需要在文件rrc.c中访问文件rlc.c中变量StatisData的failureNum序段的当前数值,请给出修改方案,并分析修改方案的优缺点。1.说明 StaticStatisDatastatisData 只能在当前使用2. 放在一个.h中 ,声明一个类型。3. 定义一个函数,通过函数来访问。6、 在下面的代码中,我们省略了常数M和N的定义:#define M /* Mystery number 1*/#define N /* Mystery number 2*/Int fun1(int x, int y)Int result = 0;Result = x*M+y/N;Return result;我们以某个M和N的值编译这段代码,下面是经过编译器优化乘法和除法后的机器代码翻译回C语言的结果:Int optaritch(int x, int y)Int t = x;X = 4;X -=t;If(y= 2;Return x+y;请问M和N的值为多少?并写出详细分析过程。当前编译器是算数运算,算数右移,算数左移。如果是负数的话,7、 程序设计-字符串 编写函数reverse_string,它的原型如下:Void reverse_string (char *string)函数把参数字符串中的字符反向排列。请使用指针而不是数组下标完成,不允许使用任何函数库中用于操纵字符串的函数。提示:不需要声明一个局部数组来存放临时字符串。1. #include2. #include3. 4. voidswap(char*p,char*q)5. 6. chartmp=*p;7. *p=*q;8. *q=tmp;9. 10. char*reverse_string(char*string)11. 12. char*left=string;13. char*right=string+strlen(string)-1;14. while(leftright)15. 16. swap(left,right);17. left+;18. right-;19. 20. returnstring;21. 22. intmain()23. 24. chararr=abcdefghijklmn;25. reverse_string(arr);26. printf(%sn,arr);27. return0;28. 8、 程序设计-排序编写一个名叫sort的函数,它用于对一个任何类型(即void *)的数组进行排序,为了使函数通用性高,它的其中一个参数必须是一个指向比较回调函数的指针,该回调函数由调用函数提供两个参数,也就是两个指向需要进行比较的值的指针。如果两个值相等,函数返回0,如果第1个值小于第2个值,函数返回小于0的整数;如果第1个值大于第2个值,函数返回一个大于0的整数。1.思想Sort(void *avr ,int num ,int size,int (*cmp)(void *,void*) )Int i,j;For(i=0;in-1;i+)For(j=0; jn-1-i ;j+)If(aj aj+1)Asd Void *可以定义,但不能直接使用。2.答案:Sort(void *a ,int num ,int size,int (*cmp)(void *,void*) )Int i,j;For(i=0;inum-1;i+)For(j=0; jnum-1-i ;j+)If( cmp ( (char * ) a+j*size , (char * ) a+(j+1)*size ) ) 回调函数用户自己实现。一定要写void * ,因为它考查的是不知道类型的情况下。所以.什么时候,调用,什么时候知道类型。Sort函数的参数:1、 一个指向需要排序的数组的第一个值的指针。即数组名2、 数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论