C语言笔试题答案.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言笔试题答案 简答题 程序的局部变量存在于(栈)中,全局变量存在于(静态区)中,动态申请数据存在于(堆)中。 设有以下说明和定义: 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));的执行结果是:_______ data是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20。 data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是 20 + 32 = 52。 32位系统下,请问如下语句的值 unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 请问p1+5=0x801005 p2+5=0x810014 int i=10, j=10, k=3; k*=i+j; k最后的值是? 答:60,此题考察优先级,实际写成: k*=(i+j);,赋值运算符优先级最低 #define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少? 答案:i 为30。 下面程序的输出是_____,为什么? char *ptr; if ((ptr = (char *)malloc(0)) == NULL) { puts(Got a null pointer); } else { puts(Got a valid pointer); } 答:Got a valid pointe 以下程序运行后的输出结果是______ 。 main() { char m; m=B+32; printf(%c\n,m); } 答:b 已有定义如下: struct node { int data; struct node *next; } *p; 以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空p = (struct node *)malloc(________); 答:sizeof(struct node) 在绝对地址0xXXXXXXXX上写入字符’a’的语句是___________。 答:unsigned char *p = (unsigned char *)0xF000FF00; *p = ‘a’; 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。 #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 1)#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4)如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。 写一个标准宏MIN ,这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) = (B) ? (A) : (B)) 1)标识#define在宏中应用的基本知识。这是很重要的。因为在嵌入(inline)操作符 变为标准C的一部分之前,宏是方便产生嵌入代码的唯一方法,对于嵌入式系统来说,为了能达到要求的性能,嵌入代码经常是必须的方法。 2)三重条件操作符的知识。这个操作符存在C语言中的原因是它使得编译器能产生比if-then-else更优化的代码,了解这个用法是很重要的。 3)懂得在宏中小心地把参数用括号括起来,因为#define仅仅做替换,如果我们写 #define MUL(a,b) a/b 的话,那么我写MUL(a+1,b-1)替换之后的表达式就为a+1/b-1,这个结果显然是违背我们定义的目的的。 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢? 这个问题用几个解决方案。 while(1){}或者for(;;){} 用变量a给出下面的定义 一个整型数(An integer) 一个指向整型数的指针( A pointer to an integer) 一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to a

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档