C语言测试及答案.doc_第1页
C语言测试及答案.doc_第2页
C语言测试及答案.doc_第3页
C语言测试及答案.doc_第4页
C语言测试及答案.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式第一阶段测试题共5道大题,100分,时间120分钟。一选择题(共20道,每题2分,共40分)1某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读与写,则该文件的权限为( D ) 。R: 4 W: 2 X:1A. 467 B. 674 C. 476 D. 7642. 下列语句的执行结果是( A ) char a=”hello”;strcpy(a, “abc”); (A) abc (B) abclo (C) helloabc (D) 出错3. 一个C语言程序总是从( C )开始执行A 书写顺序的第一个函数B 书写顺序的第一条执行语句C 主函数main( ) D 不确定4. 下面函数调用语句含有实参的个数为( B )func(exp1,exp2),(exp3,exp4,exp5); (A) 1 (B) 2 (C) 4 (D) 55. 语句while(!e);中的条件!e等价于 ( A )A e=0B e!=1C e!=0D 运行时出错6. 有数组array=1,2,3,4,5;int* p=(int*)(&array+1),执行printf(“%dn”, p-1)的结果是( C )A 随机值 B 2C 5 D 执行错误7.执行语句printf(herllotw0cworldn);的结果:( C )A. hello worldr回到行首B. he0结束llo“wc”worldC. llo “wD. llo “wc”world8. 以下正确的描述是( B ) 在C语言中 (A) 函数的定义可以嵌套,但函数的调用不可以嵌套 (B) 函数的定义不可以嵌套,但函数的调用可以嵌套 (C) 函数的定义和函数的调用均不可以嵌套 (D) 函数的定义和函数的调用均可以嵌套9.有以下程序(D)main() int p7=11,13,14,15,16,17,18, i=0,k=0;while(i7 & pi%2) /当i=2时,循环结束 11+13k =k+ pi; i+; printf(%dn, k); 执行后输出结果是A 58 B 56 C 45 D 2410.下面是合法C语言标识符的是(D) A. 2A_K; B. _M+N; C. M3; D. AC_2;11.若有定义int x,*p;,则以下正确的赋值表达式是( B ) A. p=x; B. p=&x; C. *p=&x; D. *p=*x;12.以下函数执行打印的结果是( B )void main(void)union Check int i;char ch; c;c.i = 1;printf(“ch = %dn”, c.ch);A. 0 B. 1 C. 127 D. 0或者1 13.对于以下宏定义:#define SQ(x) x*x #define QQ(x,y) SQ(x)- SQ(y) 宏调用QQ(2*3,2+3)执行后值为( C )/宏替换SQ(2*3) - SQ(2+3) = 2*3*2*3 - 2+3*2+3; 36 - 2 + 6 + 3 = 43; A.25 B.11 C.43 D.以上均不是14、若x,i,j和k都是int型变量,则执行下面表达式后x的值是( C )struct Aint i;int j;A;k = (sizeof(&(A.i) + ( sizeof(A.j), 4) * 5;x=k-sizeof(struct A); (A)4 (B)16 (C)32 (D)5215、若二维数组a有m列,则在aij前面的元素个数为 ( B )A、 j*m+i B、 i*m+j C、 i*m+j-1D、 i*m+j+1 16.以下程序的输出结果是( C ) #include main( ) int a = 5, b = 4, c = 6, d; printf(“%d”,d=ab?(ac?a:c): b); A 5 B 4 C 6 D 不确定17. 以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元18. 执行以下程序段后,i的值是 ( C ) int i=10; switch(i+1) case 10: i+; break; case 11: +i; case 12: +i; break;/不可马虎default : i=i+1; A 11B 13C 12D 1419.在循环双链表的p所指的节点之后插入s所指的节点的操作是( D )(A)p-next=s;s-prior=p;p-next-prior=s;s-next=p-next;(B)p-next=s;p-next-prior=s;s-prior=p;s-next=p-next;(C)s-prior=p;s-next=p-next;p-next=s;p-next-prior=s;(D)s-prior=p;s-next=p-next;p-next-prior=s;p-next=s;20. 如果有下面的定义和赋值,则使用【 A 】不可以输出n中data的值。structSNodeunsignedid;intdata;n,*p;p=&n;A).p.data B).n.data C).p-data D).(*p).data二填空(共10题,共10分)1. vi编辑器具有三种工作模式: 命令模式 、尾行模式 、编辑模式 。2将/home/briup/emsd目录做归档压缩,压缩后生成emsd.tar.gz文件,并将此文件保存到/home/ubuntu/目录下,实现此任务的命令格式 _tar cvfz /home/ubuntu/emsd.tar.gz /home/briup/emsd_。3.在linux中用于测试网络的连通性的命令是 ping 。4.设int a=5, c=32;float b=2.5;,表达式b+c/a的值为_ 8.500000 _。5.若x和a均是int型变量,则计算x=(a=4,6*2)后x的值是 12 _。6.设a=3,b=4,c=5。则a+bc&b=c的值为 0 _。7.实常数123.456789的规范化指数表示形式是 1.234567e2或1.234567E2。8.将p声明为字符数组指针(指向字符数组的指针),数组大小为10,应写_char (*p)10_; char p10;9.表达式7/2的结果是 3 。表达式7%2的结果是 1 。10.对于 int *p,*q,i=5,j=6; ,执行:p=&i;q=p;p=&j;输出结果(*p)=_6_,(*q)=_5_。三程序阅读题(共三道,共6分)1. 不使用中间变量,进行数值交换:#include int main(void)int a ,b;scanf(“%d,%d”, &a, &b);printf(“before swp: a = %d;tb = %dn”, a, b);_a=a+b_;/a=ab_b=a-b_;/b=ba_a=a-b_;/b=baprintf(“after swp: a = %d;tb = %dn”, a, b);return 0;2.下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是_void add(float a,float b)_;改正后为_float add(float a,float b)_。void add(float a,float b)float c;c=a+b;return c;3. 以下程序的运行结果是_ i=7,j=6,x=7 i=2,j=7,x=5_。void fun(int i,int j)int x=7;pirntf(i=%d; j=%d; x=%dn,i,j,x);void main()int i=2,x=5,j=7;fun(j,6);printf(i=%d; j=%d; x=%dn,i,j,x);四简答(共14分)1. 什么是符号链接,什么是硬链接,区别是什么?(6分)链接分硬链接和符号链接。符号链接可以建立对于文件和目录的链接。符号链接可以跨文件系统,即可以跨磁盘分区。符号链接文件具有新的i节点。硬链接不可以跨文件系统,它只能建立对文件的链接,且硬链接文件的i节点同被链接文件的i节点相同.2. 简述static和const关键字的作用。(6分)static的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。const的作用:1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。) 2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。 3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。3. 简述return和exit的返回作用。(2)return和exit在main函数中是等价的,在子函数中return是返回主调函数(即父函数)而exit是表示结束程序返回到内核。5 程序题(共3题,共30分)1. 自己编写一个字符串拷贝函数,函数的模型为:(8)char* mystrcpy(char* dst, const char* src);答案:char* mystrcpy(char* dst, const char* src)assert(dst != NULL & src != NULL);/2char* ptr = dst;/2while(*dst+=*src+)!=0);/2return ptr;/22.从键盘输入两个数,求他们的最大公约数和最小公倍数。(10分)#include int main(void)int a, b;int tmp, gcl, lcm;printf(Please input two numbers:);scanf(%d %d, &a, &b);int lcm_tmp = a * b;if(a=b)gcl=lcm=a;printf(gcl=%d, lcm=%dn, gcl, lcm);return 0;if(ab)a=a+b;b=a-b;a=a-b;while(tmp = a%b)!=0)a = b;b = tmp;gcl = b;lcm = lcm_tmp / gcl;printf(gcl=%d, lcm=%dn, gcl, lcm);return 0;3. 创建一个双向链有序表,实现添加节点的方法,并添加数据。(12)根节点 data=1 data=5 data=6rootNode1Node2Node3.创建上述结构双向有序链表,然后向链表中插入一个元素3,实现create,insert_list,display,三个方法结构体定义:typedef struct Nodeint data;struct Node* next;struct Node* before;Node;函数原型:Node* create();int insert_list(Node* p_list,int element);void display(Node* p_list);Node *create()Node *list=(Node*)malloc(sizeof(Node);assert(list!=NULL);list-next=NULL;list-before=NULL;list-data=0;return list;int insert_list(Node *p_list,int element)assert(p_list != NULL);assert(p_stu != NULL);struct Node* pnode_current = p_list;struct Node* pnode_next = pnode_current-next;struct Node* newnode;while(pnode_next != NULL)if(pnode_next-data element)break;pnode_current = pnode_next;pnode_next = pnode_current-next;newnode = (struct Node*)malloc(sizeof(Node);assert(newnode != NULL);newnode-data = element;newnode-next = pn

温馨提示

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

评论

0/150

提交评论