南京大学2004年C语言期末试卷(附答案)_第1页
南京大学2004年C语言期末试卷(附答案)_第2页
南京大学2004年C语言期末试卷(附答案)_第3页
南京大学2004年C语言期末试卷(附答案)_第4页
南京大学2004年C语言期末试卷(附答案)_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计期末笔试试卷(2004年6月4日上午,120分种,闭卷)系别 学号 姓名 成绩 一、 单项选择1、以下关于C源程序的叙述中正确的是 (1) 。A. 所有的变量声明只能出现在函数之内B. 所有的预处理命令只能出现在函数之外C. 在一个函数的定义体内允许定义另一个函数D. 在一个函数的调用表达式内允许调用另一个函数 2、以下标识符中除 (2) 外,其它都必须先声明后使用。A. 变量 B. 数据类型 C. 语句标号 D. 枚举常量 3、声明局部变量时若缺省存储类型说明符,则等同于使用了以下存储类型说明符中的 (3) 。A. auto B. register C. static D. extern 4、已有声明:char a4=”Tom”, b10=”Tom”; 以下表达式中只有 (4) 的值可以用于正确表示a数组和b数组中存储的字符串是相等的。A. strcmp(a,b) B. !strcmp(a,b) C. a=b D. a4=b4 5、已有声明:“int x=1,y10=0;”以下表达式中除 (5) 外,其它都是错误的。 A. *&x=1 B. &x=0 C. y=x+; D. +(x=y0) 6、已有声明“int a33=1,2,3,4,5,6,*p=&a00;”,则以下表达式中除 (6) 外其它的值均为3。A. a11 B. *(a1+1) C. *p+4 D. p4 7、声明“int *fp();”中出现的标识符fp是 (7) 。 A. int 型变量 B. 指向int型变量的指针变量 C. 指向返回“int *”类型值的函数的指针变量 D. 返回值为“int *”类型的函数8、以下对象中除 (8) 外,其它均在程序开始执行前获得存储空间并一直保持到程序终止运行。 A.函数 B.全局变量 C. 静态局部变量 D. 函数的形式参数 9、已知有函数 f 的定义:void f(int x, int n) int j; for(j=0;jb?(a,b):(b,a); ,则在调用函数f(2,3)后得到的返回值是 (12) 。 A. 2 B. 3 C. 2和3 D. 3和2 13、以下声明中完全正确(没有编译错误和警告错误)的是 (13) 。 A. char n=2, pn; B. char *p2=“a”,”b”,”c”;C. char (*p)2=”a”; D. char *p(); 14、 已知有声明int j,a4=1,2,3,4,5,*p=&a00; 执行了语句 for(j=0;jname); D. puts(-p)-name); 结构定义与声明struct p char name20; struct int y, m,d; birthday;ps2=“Zhao”,1980,2,3,”Wang”,1985,4,4,*p=ps+1;18、以下语句中都可以包含由一对花括号组成的复合语句, break语句不可以放置在 (18) 语句所带的复合语句内。A. switch B. while C. do/while D. if/else 19、 若程序中需要调用库函数getchar(),则在函数调用之前必须出现预处理命令 (19) 。A. #include B. #include C. #include D. #include 20、若程序中需要对某个已经存在的文本文件中的原有部分数据直接做更新操作,则在调用fopen函数时所选用的文件打开模式应当是 (20) 。 A. w B. r+ C. w+ D. a+ 二、 填空1、表达式“(double)(int)1.5+1%2”的值是 (1) 。 2、数学计算式“|sin ex+y |”的C语言表达式是 (2) 。3、需要两个操作数并且其数据类型必须都是int、char或枚举型的运算符是 (3) 。 4、与表达式“x=0”等价的表达式是 (4) 。 5、在表达式*(s+e)中,操作数s的类型应为 (5) ,e的类型应为 (6) 。 6、除 (7) 外的其它c语言语句都必须用分号结束。 7、如果函数体内的return语句中出现表达式(例如:return x*x;),则定义函数时的返回值类型不能为 (8) 。 8、当 (9) 函数中执行了return语句时,程序立即终止运行。 9、调用函数strlen(“bbxbb”)后的返回值是 (10) 。 10、在函数定义的形式参数表中的参数可以声明为除 (11) 类型外的任何已定义的合法数据类型。 11、已知在一个程序的开始处有#include,则程序中出现的语句“fprintf(stdout,”%d”,25);”可以用 (12) 替换。 12、以下程序运行时输出结果第一行为 (13) ,第二行为 (14) 。 enum ONE, TWO,THREE;#define S(x) (x)*(x)#define Y(x) 1/xmain() printf(%dn,S(ONE)+S(TWO); printf(%d,Y(TWO+THREE); 13、以下程序运行时输出结果的第一行为 (15) ,第二行为 (16) 。 #includeint f1(int n) int s=0; return s+=n; int f2(int n) static int s; return s+=n; main() int i,sum1=0,sum2=0; for(i=1;i=2?+x:-x; for(i=0;ix)yi+; else if(yix) yi-;main() int i,a5=2,3,4,6,9,b=2; f(a,4,b); printf(%dn,b); for(i=0;i5;i+)printf(%d,ai);15、以下程序运行时输出结果第一行为 (19) ,第二行为 (20) 。 #include#includemain() char s=Thank; int i,j,k; for(i=0;si!=0;i+) if(islower(si)si=si-a+A; /* 函数islower(c)功能:判断c是否小写字母的编码*/ puts(s); for(j=i-1,k=sj;j0;j-)sj=sj-1; sj=k; puts(s);16、以下程序运行时输出结果第一行是 (21) ,第二行是 (22) 。 void f(int x) int j,s; if(x0=0) for(j=0,s=0;j4;j+) s=s*2+xj; printf(%xn,s); f (x+4); main() int a=1,1,1,0,0,0,1,1,-1; f(a);17、以下程序运行时若键盘输入3,则输出结果第一行为 (23) ,第二行为 (24) ,第三行为 (25) . void m(int *s, int n) int i=n-1,j=n/2,k; si*n+j=1; for(k=2;k=n*n;k+) if(i+1=n&j+1n) i=0;j+; else if(i+1n&j+1=n) i+;j=0; else if(i+1=n&j+1=n | s(i+1)*n+j+1!=0) i-; else i+;j+; si*n+j=k; main() int i,j,n,*p,*q; scanf(%d,&n); p=(int *)malloc(n*n*sizeof(int); if(p=0)exit(1); q=p; for(i=0;in*n;i+)qi=0; m(p,n); for(i=0;in;i+) for(j=0;jn;j+) printf(%d ,*q+); printf(n); 三、 完善程序1、以下程序中函数f 对x 指向的数组中前n个不超过4位的正整数做数据加密。加密方法:将组成这个正整数的每一位数字加上该位数在数据中位置的序号(序号规定:个位为1,十位为2,百位为3,千位为4),若某位数加上其序号的值大于9,则用该数除以10的余数替换。例如,原始数据为23,574,9815时,加密后的数据为44,895,3136。void f(int (1) , int n) int i,j,k,s,t4; for(i=0;i=0;k-) s=s*10+tk; xi=s; main() int i,x=23,574,9815; f(x,3); for(i=0;i3;i+)printf(%d,xi);2、函数str_del功能:从s字符串中删除所有出现的t子串,程序正确时输出结果为He a student. She a student too.。#include (4) str_del(char s, char t) int i,j,k,u; for(i=0; (5) ;i+) for(j=i,k=0;tk!=0;j+,k+) if(sj!=tk) (6) ; if(tk=0) for(u=0;sj+u!=0;u+) si+u= (7) ; si+u=0; return s;main() char line80=He is a student. She is a student too.,str10=is; puts(str_del(line,str);3、以下程序中函数count统计形参a指向的结构数组的n个元素中(n为函数形参)不同的neme各自出现的次数,并将统计结果保存在s指向的结构数组中,函数返回s数组中有效数据的个数。例如,在main函数中调用count函数统计x数组的数据,返回后y数组中得到的统计结果为3,”A”,1,”B”,1,”C”。#include#includetypedef struct int num; char name5; PT;int count(PT *a , int n , PT *s) int k=0; PT *p,*q; for(p=a;p (8) ;p+) for(q = s;qname,q-name)=0) q-num+; break; if( k=0 | q= (9) ) strcpy(q-name , p-name); (10) ; k+; return k;main() PT x5=1,A,1,B,1,C,1,A,1,A,y5=0,*p; int m; m=count(x,5,y); for( (11) ;pname, p-num);4、已知结点的数据类型定义如下,函数 sort 对 head 指向的一个由该类型的结点构造的单向链表中存储的数据做排序处理,即根据结点中num成员的值从大到小排序,采用的排序算法为选择法。typedef struct node int num; char name10; struct node *next;NODE;void sort( NODE *head) NODE temp,*tp,*p,*maxp; if(head=NULL)printf( The list is empty!); else while(head-next!=NULL) maxp=head; p= (12) ; while(p!=NULL) if(p-nummaxp-num)maxp= (13) ; p=p-next; if( (14) ) /* 当条件满足时交换两个结点的数据域 */ temp=*head; *head=*maxp;*maxp=temp; tp=head-next;head-next=maxp-next;maxp-next=tp; head= (15) ; C语言程序设计期末笔试参考答案(2004年6月4日上午9:0011:00)【答题】一、单项选择(20分)1. D2. C3. A4. B5. A6. C7. D8. D9. D10. A11. B12. A13. D14. B15. C16. B17. C18. D19. A20. B二、填空(25分)1. 2.02. fabs(sin(exp(x+y)3. %4. !x5. 指针型 6. 整型7. 复合语句8. void9. main10. 3

温馨提示

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

评论

0/150

提交评论