ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:27.16KB ,
资源ID:3525896      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3525896.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C理论自测题及参考答案第4次范文.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C理论自测题及参考答案第4次范文.docx

1、C理论自测题及参考答案第4次范文一、单选题1已知数据类型定义和变量声明如下:struct sk int a; float b; data2,*p;若有p=data,则以下对data0中成员a的引用中错误的是 。 A. data0-a B.data-a C. p-a D. (*p).a2已有数据类型定义和变量声明如下: struct person int num;char name20, sex;struct int class; char prof20;in; a=20, Li ning,M, 5, computer, *p=&a;下列语句中正确的是 。A. printf(%s,a-name)

2、; B. printf(%s,p-in.prof);C. printf(%s,*p.name); D. printf(%c,p-in-prof);3已知有如下的结构类型定义和变量声明: struct student int num;char name10; stu=1,”Mary”,*p=&stu; 则下列语句中错误的是 。Aprintf(“%d”, stu.num); Bprintf (“%d”, (&stu)-num);Cprintf (“%d”, &stu-num); Dprintf (“%d”, p-num);4. 若main函数中有以下定义、声明和语句,则不能输出字符串“Englan

3、d”的语句是 。 Aputs(x1.b); Bputs(x+1)-b); Cputs(+x)-b); Dputs(+p)-b);struct test int a; char *b; ;char x0=United states of American ,x1=England;struct test x2, *p=x;x0.a=300; x0.b=x0; x1.a=400; x1.b=x1;5若要使表达式“P+”无语法错误,则变量P不能声明为 。A. int P; B. double P; C. int *P; D.struct int x;P;6.若有定义和声明typedef enumgre

4、en, red, yellow, blue, blackcolor;color flower;,则下列语句中正确的是 。A. green=red; B. flower=red; C. color=red; D. enum=red;7. 以下程序运行时输出结果是 。 A.10 B.25 C.15 D.27#include#define PI 3.14#define F(y) (y)*(y)#define P(a) printf(%d,a)main() int x=PI; P(F(1+2)*x); 参考答案:15 ABCCD 610:BD二、填空题1在用fopen函数打开一个已经存在的数据文件ab

5、c时,若要求既可以读出abc文件中原来的内容,也可以用新的数据覆盖文件原来的数据,则打开模式应当是 。 2设函数a的定义如下:void a( ) int x=12,y=345; FILE *fp=fopen(my.dat, w); fprintf(fp, %d %d,x,y); fclose(fp);已知main函数中有声明int x,y; FILE *fp=fopen(my.dat,r);,若需要从文件my.dat中正确地读出由函数a写入的两个数据并分别保存到变量x和y中,则在main函数中使用的读数据语句应当是 (要求写出语句的完整格式)。3.执行以下程序段时输出结果是 。 #includ

6、emain() FILE *fp=fopen(a.dat,w+); char s11=0; float x=-1.2345;fprintf(fp,%6.3f,x); rewind(fp); fgets(s,10,fp); puts(s); fclose(fp); 4若有宏定义如下: #define N 2 #define Y(n) (N+1)*n)则执行语句“z=2*(N+Y(N+2);”后z的值是 。 5.以下程序输出结果是 。 #define T(x,y,z) x*y*z/4 main() int a=1,b=3,c=5; printf(%d,T(b+a,a*+b,a+b+c); 6.以下

7、程序输出结果是 。 main() enum colorRED,BLUE,WHITE=0,BLACK; char *colorname=red,blue,white,black; printf(%s,colornameBLACK); 7. 以下程序运行时,输出结果的第一行是 ,第二行是 ,第三行是 。#includetypedef struct s int index; int value;M;main() static int i,j,k,c44; M a10=0,1,3,2,5,3,6,4,9,5,15,6,-1,0,*p=a, b10=1,1,3,2,4,3,6,4,10,5,13,6,-

8、1,0,*q=b; while(p-index!=-1) i=p-index/4; j=p-index%4; cij=p-value; p+; while(q-index!=-1) i=q-index/4; j=q-index%4; cij+=q-value; q+; for(i=0;i4;i+) for(j=0;j4;j+) printf(%d ,cij); printf(n); 8. 以下程序输出结果为 。#includestruct s int a; struct s *next;main() int i; static struct s x2=5,&x1, 7,&x0, *ptr; p

9、tr=&x0; for(i=0;ia); ptr=ptr-next;9. 以下程序运行时,输出结果第一行为 ,第二行为 ,第三行为 。 #include#includetypedef struct node int d; struct node *next;NODE;NODE *insert(NODE *head,int x,int key) NODE *s,*p,*q; s=(NODE *)malloc(sizeof(NODE); s-d=key; s-next=NULL; if(head=NULL) head=s; return head; if(head-d=x) s-next=head

10、; head=s; return head; else q=head; p=q-next; while(p-d!=x)&(p-next!=NULL) q=p; p=p-next; if(p-d=x) s-next=p; q-next=s; else s-next=NULL; p-next=s; return head; void print(NODE *head) if(head=NULL)return;while(head-next!=NULL) printf(%d,head-d); head=head-next; printf(%d n,head-d);main() NODE *head=

11、NULL; head=insert(head,0,3); print(head); head=insert(head,3,1); print(head); head=insert(head,4,5); print(head);10. 以下程序运行时,输出结果第一行为 ,第二行为 ,第三行为 。#include #include struct node int d; struct node *next;struct node *create(void) struct node *head=NULL,*p,*q=NULL; int i; for(i=2;id=i; p-next=NULL; if(

12、head=NULL) head=p; else q-next=p; q=p; return(head);void print( struct node *head) if(head=NULL)return;while(head-next!=NULL) printf(%d,head-d); head=head-next; printf(%dn,head-d);struct node *delst( struct node *head,int *n ) int count=0; struct node *p,*q,*r; p=r=head; while(p!=NULL) q=p-next; whi

13、le( q!=NULL ) if( (q-d)%(p-d)=0 ) r-next=q-next; free(q); count+; q=r-next; else r=q; q=q-next; p=p-next; *n=count; return(head);void main() int y; struct node *head; head=create(); print(head); head=delst(head,&y); print(head); printf(%d,y);11以下程序运行时输出到屏幕的结果是 (6) 。#include void main() FILE *fp; int

14、 k,n,a6=1,2,3,4,5,6; fp=fopen(d2.dat,w); fprintf(fp,%d%d%dn,a0,a1,a2); fprintf(fp,%d%d%dn,a3,a4,a5); fclose(fp); fp=fopen(d2.dat,r); fscanf(fp,%d%d,&k,&n); printf(%d,%dn,k,n); fclose(fp);12以下程序运行时输出到屏幕的结果中第一行是 ,第二行是 。#include #define f(x,y) y=x*xvoid g(int x,int y) y=x*x; void main() int a=2,b=0,c=2

15、,d=0; f(a,b); g(c,d); printf(%dn%d,b,d);13以下程序运行时输出到屏幕的结果第一行是 ,第二行是 。#include typedef struct fact int m,z;FACT;FACT fun1(FACT t1,FACT t2) FACT t3; t3.m=t1.m*t2.m; t3.z=t1.z*t2.m+t2.z*t1.m; return t3;FACT fun2(FACT t) int m,n,k; m=t.m; n=t.z; while(k=m%n) m=n; n=k; t.m=t.m/n; t.z=t.z/n ; return t;voi

16、d main() FACT s,s1=8,4,s2=6,5 ; s=fun1(s1,s2); printf(%d,%dn,s.z,s.m); s=fun2(s); printf(%d,%d,s.z,s.m);参考答案:1r+ 2fscanf(fp,”%d%d”,&x,&y); 3-1.235 420513 6Blue 7. 第一行是 1104 ,第二行是 3380 ,第三行是 0550 8. 5 7 59. 第一行为 3 ,第二行为 1,3 ,第三行为 1,3,5 10第一行为 2,3,4,5,6,7,8,9 ,第二行为 2,3,5,7 ,第三行为 4 11123,45612第一行是 4 ,第

17、二行是 0 13第一行是 64,48 ,第二行是 4,3 三、完善程序1. 以下程序统计数组pu中grade的每一个分值档次的人数,若程序正确,输出结果应为:grade nembers of person 2 2 1 2 3 1源程序:#includetypedef struct int id; int grade;STUD;void main() STUD pu5=18,2,19,2,17,1,21,1,22,3,*p; int i,gd5,ct5=0,tmp,count; count=1; gd0= (1) ; ct0=1; for(p=pu+1;ppu+5;p+) tmp= (2) ;

18、for(i=0;i=count) gdcount=tmp; ctcount=1; count+; else (3) ; printf( grade nembers of person); for(i=0;icount;i+) printf(n %2d%10d ,gdi,cti); printf(n);2. 以下程序按结构成员grade的值从大到小对结构数组pu的全部元素进行排序,并输出经过排序后的pu数组全部元素的值。#includetypedef struct int id; int grade;STUD;void main() STUD pu10=1,4,2,9,3,1,4,5,5,3,6

19、,2,7,8, 8,6,9,5,10,2; (1) temp; int i,j,k; for(i=0;i9;i+) k=i ; for(j=i+1 ;j10;j+) if( (2) ) k=j; if( (3) ) temp=pui;pui=puk;puk=temp; for(i=0;id; pn=pk; while( (1) !=0) pj = pk-next; if( (2) d; pm=pk; pn=pj; pk=pj; xk+=pn-d; if( (3) ) pm-next=pn-next ; else head=pn-next; free(pn); ; 4. 设某链表上每个结点的数据

20、结构为:typedef struct node int d; struct node *next;NODE;函数NODE *invert(NODE *head)的功能为:将head指向的单链表逆置,即原链表最后一个结点变为第一个结点,原来倒数第二个结点变成第二个结点,以此类推。在逆置过程中不建立新的链表。NODE *invert(NODE *head) NODE *p,*q,*r; if(head=0| (1) ) return head; p=head; q=p-next; while(q!=0) r = (2) ; q-next=p; p=q; q=r; (3) = 0 ; head =

21、(4) ; return head; 5fun函数的功能是删除s指向的链表中满足以下条件的结点:该结点的编号值是奇数且存放的字母ASCII编码值也为奇数(提示:a的ASCII编码是97);将删除的结点添加到t所指向的链表尾部。试完善fun函数以达到要求的功能。 例如,若删除前的s链表为:则删除后的s链表为:#include struct node int i; /* 存放结点的编号 */ char c; /* 存放一个字母的ASCII编码 */ struct node *next;struct node *t=NULL;struct node *fun(struct node *s) stru

22、ct node *p,*q; struct node *r; p=q=s; while(p!=NULL) if(p-i)%2)&(p-c)%2) if(s=p) s=q= (1) ; else (2) ; q=p-next; if(t=NULL) t=r=p; else r-next=p; r=r-next; q=p; p= (3) ; if(t!=NULL) (4) ; return s;参考答案:1(1) pu0.grade (2) p-grade (3) cti+2. (1) STUD (2) puk.gradenext (2) pj-d (3) pn!=head (4) return k4. (1) head-next=0 (2) q-next (3) head-next (4) p5(1) p-next (2) q-next=p-next (3) p-next (4) r-next=NULL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1