欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    华中科技大学0911年C语言程序设计试卷.doc

    • 资源ID:2057108       资源大小:215.01KB        全文页数:29页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    华中科技大学0911年C语言程序设计试卷.doc

    计算机学院2008-2009学年第2学期C语言程序设计考试试卷一、 单项选择题(在下面每小题的A、B、C、D四个选项中,只有一个选项是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10小题,每小题1分,共10分。) 1、ENUM是 【 】A、合法标识符 B、C语言的关键字C、合法的字符串 D、既不是C语言的关键字,也不是合法的字符串或标识符2、下列数据中属于合法字符常量的是 【 】A、'' B、'xag' C、'45' D、'''3、下列数据中合法的浮点型常量是 【 】A、E+10 B、2E+1.5 C、2E-10 D、0x2.5E104、下列数据中与256等值的数为 【 】A、0256 B、0400 C、0x400 D、0x2565、以下叙述中正确的是 【 】A、局部变量说明为static存储类型,其生存期将得到延长B、全局变量说明为static存储类型,其作用域将被扩大C、任何存储类型的变量在未赋初值时,其值都是不确定的D、形参可以使用的存储类型说明符与局部变量完全相同6、 -127的16位补码的十六进制表示是 【 】A、0xff81 B、0x807f C、0xff80D、0x80807、 对于下面的数组声明,正确的是 【 】A、int x5; B、char t =a,b,c,0; C、int n=5,an; D、char s5=“abcde”;8、若有以下说明和语句,则在执行for语句后,*(*pt+2)表示的数组元素【 】int t33,(*pt)3,k;for (k=0;k<3;k+) pt = t+k; A、t12 B、t20 C、t21 D、t229、已知枚举类型定义: enum a ONE=5,TWO=3,THREE; 则THREE的值的是 【 】A、1 B、2 C、4 D、010、设有以下说明和语句,则表达式z.y.a2的值的是 【 】struct packed unsigned short a1 : 2;unsigned short a2 : 2;unsigned short a3 : 4;unsigned short a4 : 8;union short x;struct packed y; z;z.x=0xabab;A、11 B、3 C、2 D、10二、 多项选择题(下面每小题的A、B、C、D备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得分。本大题共5小题,每小题2分,共10分。)1、以下选项可作为C语言合法整型常量的是: 【 】A、0xf9B、100UC、0XABCDE12LD、02872、对于下面关于数组声明,正确的是: 【 】A、int c2,3;B、int bb-a; C、int x,ax3;D、char d11="abcndefn"3、设有声明:int k2,*p1=k,*p2=p1;下面能够正确执行的语句有:【 】A、k=p1;B、p2=k+1;C、p1=p2;D*p1*=*p2;4、设有说明:struct Tint n2;char *s; t2=1,0,"xy",0, 1,"yx",*p=t;下面表达式之值为 x(或其ASCII码值为120)的是: 【 】A、*(*p).sB、*+(+p)->sC、p->sp->n0D、(*+p).s*(*p).n-15、链表具备的特点是 【 】A、链表由一系列包含数据域和指针域的结点组成B、插入和删除不需要移动任何元素C、可随机访问任意一个结点D、所需存储空间与其长度成正比三、 填空题(本大题共10小题,每小题1分,共10分。)本大题的第1题至第5题请参考下面的说明,请计算出表达式的值并填入各题后面的括号中,各题的表达式相互无关。short x = -1,0,1, *p=x;unsigned short y=8;【 】1、*(p+1) ? y + x1 : y - x1【 】2、y =x1【 】3、x2 | 0x10 【 】4、y >> x2【 】5、(*p<<3)本大题的第6题至第10题请参考下面的说明,请计算出表达式的值并填入各题前面的括号中,各题的表达式相互无关。struct Tchar c;char *s;int x;a='A',"123", 0,'B',"321", 1,*p=a;【 】6、(+p)->x【 】7、p->c+(p+1)->x【 】8、*(+p)->s【 】9、+p->s1【 】10、*p+ ->s+四、 判断改错题 (先判断下面各题中是否存在错误;如果存在错误,请改正之;否则不必改。本大题共5小题,每小题2分,共10分。)1、计算数学表达式(b2-4ac)/2对应的程序段如下:float a,b,c,delta;scanf("%f%f%f",&a,&b,&c);delta=(b*b-4*a*c)*(1/2);printf("%f",delta);2、本小题的程序段如下:int *p1;scanf("%d",p1);printf("%dn",*p1);3、创建一个含有30个元素的动态数组table,元素类型为struct REC的程序段如下: struct REC char name8; char sex; int score; * table; table=(struct REC *)malloc(sizeof(struct REC);4、本小题的程序段如下:const char * sp2="abc","123"sp0= "ABC"5、将变量x按位左移n位的宏定义为:#define ROL(x,n) (x)<<=(n)五、简答题(本大题共5小题,每小题4分,共20分)1、 设有声明int x=1,y=2,t; 请写出一个C表达式将x、y值交换。2、请写一个C表达式,其结果是3个整型变量a、b、c中数值居中的那个变量的值。3、请写一个C表达式,将整数k的高字节作为结果的低字节,整数p的低字节作为结果的高字节,拼成一个新的整数。4、请解释声明语句char*(*(*pa)8)(int(*)(int);所声明标识符 pa 的数据类型。5、设a是有2个元素的函数指针数组,数组中每个元素所指向的函数带有一个数组指针类型的形参,该形参指向有3个元素的整型数组,而函数返回值的类型与该形参类型相同;请写出相应的声明语句。六、阅读程序并写出其运行结果(本大题共5小题,每小题4分,共20分。)1、 请写出下面程序的运行结果。#include "stdio.h"int x = 10;void main(void)printf("x=%dn", x+);int x = 1;printf("x=%dn", x+);printf("x=%dn", x+); 2、请写出下面程序的运行结果。#include "stdio.h"void fun(int n)static x=1; x*=n; printf("x=%dn",x);void main(void)int i; for( i=1;i<8;i+) if( i%2) continue; else fun(i);3、请写出下面程序的运行结果。#include "stdio.h"char *strmins(char *, char *);void main(void) char a80 = "", b = "abcde" printf("%sn", strmins(strmins(a, b), b);char *strmins(char *s, char *t) int i, m = 0, n = 0; while(*(s + m+) ; m-; while(*(t + n) n+; for(i = m; i >= m/2; i-) *(s + i + n) = *(s + i); for(i = 0;i < n; i+) *(s + i + m/2) = *(t + i); return s;4、请写出下面程序的运行结果。#include "stdio.h"#define CHAR_BIT 8typedef unsigned short int UINT16;void bit_print(int);void bit_print(int x)UINT16 i;UINT16 n=sizeof(UINT16) * CHAR_BIT; UINT16 mask = 1 << (n-1); for ( i=1; i<=n; +i ) putchar(!(x & mask)? '0': '1');x<<=1;if(!( i % CHAR_BIT ) && i<n ) putchar(' ');putchar('n');void main(void)UINT16 x3=7,3,1,i,n=0;for(i=0;i<3;i+)switch(i)case 0: bit_print(xn+);break;case 1: bit_print(xn+);default: bit_print(xn);5、请写出下面程序的运行结果。#include "stdio.h"char * f1(char *,char *);char * f2(char *,char *);void main(void) char *(*fp_ary2)(char *,char *)=f1,f2;char a80,b="C is very powerful tool for programming!n"char *p,c="Generally speaking, n",d80;p=(*fp_ary0)(d,b);printf("%s",p);(*fp_ary0)(a,c);printf("%s",a);p=(*fp_ary1)(a,p);printf("%s",p); char * f1(char * p1,char *p2)char *p=p1;while(*p+=*p2+) ;return p1;char * f2(char *p1,char *p2)char *p=p1;while(*p+) ;p-,p-;f1(p,p2);return p1;七、完善程序(本大题有2小题,给出的都是部分程序,通过填空来完善程序。本大题共10空,每空2分,共20分。)1、本大题第、空请参阅下面的部分程序。程序说明下面是通过命令行方式输入若干数字串,再将数字串转换成为对应的整数,然后对其进行排序和查找操作的部分程序test2009,请对其进行完善。如:在C:>提示符下输入test2009 6 12 38 102 5 71 36 8 85并回车,程序对应的运行结果如下: 6 12 38 102 5 71 36 8 85 5 6 8 12 36 38 71 85 102 find= 2请将下面程序中、空处应该完善的内容填写在本小题后、后面的下划线处。#include "stdio.h"int atoi(char *);void shellsort(int a,int n) ;int BinarySearch(int a,int x,int n);/* atoi是将数字串转换为对应整数的函数 */int atoi(char *s)int j=0,num=0;for(;*(s+j)!='0'j+)num= ;return num;/* shellsort是shell法排序函数 */void shellsort(int a,int n) int gap,i,j,t; for(gap=n/2;gap>0; ) for(i=gap;i<n;i+) for(j=i-gap;j>=0&&aj>aj+gap;j-=gap) t=aj;aj=aj+gap;aj+gap=t;/* BinarySearch是二分查找函数 */int BinarySearch(int a,int x,int n)int front=0,back=n-1,middle;while(front<=back) middle=_ ; if(x<amiddle)back=middle-1; else if(x>amiddle)front=middle+1; elsereturn ( _ ); return -1; /* 下面是带命令行参数的main函数 */int main(int argc,char *argv)int n=argc,i,*a,x=8,find;if(argc<10)printf("too few arguments!n");return -1;a=(int *)malloc(n-1)*sizeof(int);for(i=1;i<n;i+)ai-1=atoi( );for(i=0;i<n-1;i+)printf("%4d",ai);printf("n");shellsort(a,n-1);for(i=0;i<n-1;i+)printf("%4d",ai);printf("n");find=BinarySearch(a,x,n-1);printf("find=%4d",find);printf("n");return 0; 2、本大题第、空请参阅下面的部分程序。程序说明 文本文件scr.txt记录每个学生C语言课程的成绩,从文本文件scr.txt中依次读入成绩,将其建成一个后进先出单向链表,并且对该单向链表完成创建、删除、统计、显示等操作。请将下面程序中、应该完善的内容填写在本小题后、后面的下划线处。#include<stdio.h>#include<stdlib.h>typedef struct scrnode int score;struct scrnode *next; ScrNode;ScrNode *load_list(char *filename);void print_list(ScrNode *head);int count_fail( ScrNode *head);void del_nodes( ScrNode *headp,int x);void main(void)ScrNode *head;int n;head = load_list("d:scr.txt"); /* 从scr.txt中读入成绩,建成后进先出单向链表 */print_list(head); /* 显示 */ n=count_fail(head); /* 统计不及格人数 */printf("nFail:%dn",n);_ ; /* 删除所有成绩为34的结点 */ print_list(head);/* 从文本文件filename中依次读入成绩,将其建成一个后进先出单向链表 */ScrNode *load_list(char *filename)FILE *fin;ScrNode *head=NULL,*p;int x;if(fin= _ )=NULL) exit(-1);while(!feof(fin) p=(ScrNode *)malloc(sizeof(ScrNode);fscanf(fin,"%d",&x);p->score=x;_ ; head=p;fclose(fin);return(head);/* 输出head所指链表中各个结点数据域中成员的值 */void print_list( ScrNode *head)ScrNode *p=head;while(p != NULL)printf("%dt", p->score);p=p->next;printf("n");/* 用递归方式统计head所指链表中成绩不及格的结点 */int count_fail( ScrNode *head)ScrNode *p=head;static n=0;if(p != NULL)if(p->score<60 ) return(1+count_fail(p->next);else return( _ ); else return 0;/* 删除*head所指链表中所有与x值相同的结点 */void del_nodes( ScrNode *headp,int x)ScrNode *p,*last,*t;p=*headp;while(p!=NULL) while(p->score!=x && p->next != NULL ) /* 查找值x的节点 */ last=p; p=p->next; if(p->score=x) /* 找到 */ if(p=*headp) *headp=p->next; else _ ; t=p; p=p->next; free(t);else break ; 、 、 、 、 _ 、 。计算机学院2009-2010学年第2学期C语言程序设计考试试卷一、 单项选择题(在下面每小题的A、B、C、D四个备选项中,只有一个选项是正确的,请选择正确的选项并填写到括号内,选择正确得分。本大题共10小题,每小题1分,共10分。) 1、能定义为用户标识符的是 【 】A、x/2 B、x_2 C、x.3 D、3x2、 -125的16位补码是 【 】A、0x807d B、0x807e C、0xff82D、0xff833表达式s=x+y+中的词法元素(记号,即token)的数目是 【 】A、5个 B、6个 C、7个 D、8个4、关于0xfeededUL最准确的解释是,0xfeededUL是 【 】A、无符号长整型常量B、长整型常量C、有符号整型常量D、非法常量5、下列正确的转义字符是 【 】A、''B、'138'C、'0x18'D、''6、设有说明:int x = -1;则执行printf(“%un”, x); 语句的输出是 【 】A、-1B、1C、ffffD、655357. 设有说明:char x = “a”; 则字符数组x的大小是 【 】A、0 B、1 C、2D、38以下声明语句中正确的是 【 】A、int x10,p=x;B、int x1020,(*p)10=x;C、int x56,*p6=x;D、int x12,(*p)2=x;9设有说明:union char c; short h; long l; m ; 则变量m的存储区域是 【 】 A、1字节 B、2字节C、4字节 D、7字节10设有说明:int x=1,y=2,z=3; 则下面表达式的值为1的是 【 】 A、(y&z)>>1&xB、x&y&zC、y-|xD、xx二、 多项选择题(下面每小题的A、B、C、D四个备选项中,有两个或两个以上的选项是正确的,请选择正确的选项并填写到括号内,多选、少选、错选均不得分。本大题共5小题,每小题2分,共10分。)1下列运算符的优先级比 != 高的有: 【 】A. B. << C. & D. &&2、下列选项是C的合法常量有 【 】A、b B、"" C、E-2 D、01233、对数组元素aijk,下面正确的表示有 【 】A、(*(a+i)jk) B、*(*(*(a+i)+j)+k)C、*(*(a+i)j+k) D、*(aij+k)4、设有程序片段: 【 】int x;int fun(void) int y=1; static int z=1y+;z+=1;return y-z;以下说法正确的有 A、首次调用fun函数时,fun函数返回0 B、每次调用fun函数时,fun函数返回0C、变量z与变量y的作用域相同D、变量z的生存期与变量x的生存期相同5、设有说明 【 】struct bitsunsigned short int l_byte:8,h_byte:8;union uunsigned short int x;struct bits b; a;执行 a.x=0xf00f;之后,下面表达式的值为0的有 A、a.b.h_byte<<4&0xffB、a.b.h_byte&a.b.l_byteC、a.b.h_byte>>8D、a.b.l_byte>>4三、 填空题(本大题共10小题,每小题1分,共10分。)本大题的第1题至第5题请参考下面的说明,请计算出表达式的值并填入各题前面的括号中,各题的表达式相互无关。 unsigned i = 0, j = 1; int a; 【 】(1) j+ ? j+ : i+ 【 】(2) i = i != j 【 】(3) a = i j 【 】(4) 2 << +i + j << 2【 】(5) -i >> 15 && -j << 15本大题的第6题至第10题请参考下面的说明,请计算出表达式的值并填入各题前面的括号中,各题的表达式相互无关。int x3=-1,0,1, y3=-2,0,2,z3=-3,0,3;struct char *s;int *t; s3="Beijing", x,"Shanghai",y,"Wuhan",z,*p=s;【 】(6)(+p)->s1【 】(7)+*p->t【 】(8)*(+p)->t【 】(9)(*p).s(p+2)->t2【 】(10)(p+2)->t+p->t2四、 判断改错题 (先判断下面各题中是否存在错误;如果存在错误,请改正之;否则不必改。本大题共5小题,每小题2分,共10分。)1、int i = 5, ai; while(i- > 0) scanf("%d", &ai);2、定义一个指向常量的常指针的声明如下:const char *p="abcd" ;3、将x左移n位的宏定义如下:#define SHIFTL(x,n) (x)>>(n)4、字符串的连接 #include<stdio.h> #include<string.h> void main(void) char a20 = 'a', 's', 'd', 'f', b = "1234" strcat(a, b); printf("%s", a) 5、下面是计算并输出1!,2!3!4!5!的程序int factorial(int n)int k=1;k*=n;return k;void main(void)int i;for(i=1;i<6;i+)printf("%dn",factorial(i);五、简答题(本大题共5小题,每小题4分,共20分)1、 设x为一个存放整数的16位有符号整型变量,请运用单个运算符书写关于x的四个C表达式,并使表达式的结果为0。如x x。2、 请写一个C表达式,将unsigned short类型变量x的高字节送入unsigned char类型变量ch中。3、已知函数f中只定义有一个结构类型(struct stu)的指针变量pstu,pstu指向的结构要求只能通过函数creat动态生成。试写出两种creat函数原型及其在函数f中相应的调用语句。4、文件file1.c和file2.c共享变量x。file2.c和file3.c共享变量y并且不允许file1.c共享该变量。file1.c的各个函数共享变量y并且不允许file2.c和file3.c共享该变量。请在file1.c、file2.c、file3.c文件中写出相关的声明语句。file1.c file2.c file3.c5、设p是函数指针,所指向的函数有两个整型参数且返回一个指向有5个元素的字符数组的指针,请写出相应的声明语句。六、阅读程序并写出其运行结果(本大题共5小题,每小题4分,共20分。)1、 请写出下面程序的运行结果。#include "stdio.h"void main(void)int i=0, j=4;int a = 1, 3, 5, 7, 9;for(; i < 5; )if(i > j)break;for(; j >0; )printf("%dt", ai+ * aj-);break; 2、 请写出下面程序的运行结果。#include <stdio.h>void main( ) int i;char s =”xyz”;for(i=0; i<3; i+) switch(i) case 0: printf("%ct",si);case 1: printf("%ct",si);case 2: printf("%cn",si); 3、请写出下面程序的运行结果。#include<stdio.h>#define M 5#define N 2void main() static aM;int i,n,k=M-1,*p1,*p2; p1=p2=&ak; for(n=0;n<k;n+) for(i=0;i<N;+i) while(1) if(+p1>p2) p1=a;if(!*p1) break;*p1=-1;for(i=0;i<M;+i)printf("%dt",ai);printf("n");for(i=0;i<M;+i) if(!ai) printf("%dn",i+1);4、请写出下面程序的运行结果。#include<stdio.h>void f1( char *s,int n );int f2(char *s1,char *s2);void f1(char *s,int n ) c

    注意事项

    本文(华中科技大学0911年C语言程序设计试卷.doc)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开