本文格式为Word版,下载可任意编辑中科创达驱动组笔试题 1、定义一个宏,表示一年有多少秒 #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2、请指出以下两个数组有什么识别? Char str1[] = “ABCDE”; 数字会自动填充6. Char str2[5] = “ABCDE”; 越界,有’\\0’ Struct boy { Int num; Char str[10]; }*p; P=(asd*)malloc(sizeof(struct)); Free(p); ////////////////////////////////////////////// Struct boy { Int 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; 考察布局体对齐:4 Short msglen; Unsigned char body[0]; 不占空间 ,body[0]务必是布局体结果的成员。
} MSG_1; /////////////////////////////////////////////////////// Typedef struct _MSG_1_ { Char srcModule; Short msglen; 考察布局体对齐:6 Char destModule; Unsigned char body[0]; 不占空间 ,body[0]务必是布局体结果的成员 } 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(33) Unsigned int failureNum; }StatisData; Static StatisData statisData 此前,类型StatisData及变量StatisData只在文件rlc.c中,现在需要在文件rrc.c中访问文件rlc.c中变量StatisData的failureNum序段的当前数值,请给出修改方案,并分析修改方案的优缺点 1.说明 Static StatisData statisData 只能在当前使用 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 >= 2; Return x+y; } 请问M和N的值为多少?并写出细致分析过程。
当前编译器是算数运算,算数右移,算数左移假设是负数的话, 7、程序设计-字符串 编写函数reverse_string,它的原型如下: Void reverse_string (char *string) 函数把参数字符串中的字符反向排列请使用指针而不是数组下标完成,不允许使用任何函数库中用于操纵字符串的函数提示:不需要声明一个局部数组来存放临时字符串 1. #include 2. #include 3. 4. void swap(char *p,char *q) 5. { 6. char tmp = *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(left < right) 15. { 16. swap(left,right); 17. left++; 18. right--; 19. } 20. return string; 21. } 22. int main() 23. { 24. char arr[] = \; 25. reverse_string(arr); 26. printf(\,arr); 27. return 0; 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;i
所以..... 什么时候,调用,什么时候知道类型 Sort函数的参数: 1、一个指向需要排序的数组的第一个值的指针即数组名 2、数组中值的个数 3、每个数组元素的长度 4、一个指向对比回调函数的指针 Sort没有返回值 你将不能根据实际类型声明数组参数,由于函数理应可以对不同类型的数据举行排序,假设你把数据当作一个字符数组使用,你可以用第3个参数探索实际对比数据的起始位置,也可以用它交换两个数组元素(每次一个字节) — 6 —。