C语言程序设计复习题.doc_第1页
C语言程序设计复习题.doc_第2页
C语言程序设计复习题.doc_第3页
C语言程序设计复习题.doc_第4页
C语言程序设计复习题.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

一、填空题1.对下列二叉树进行中序遍历的结果是 dbxeayfzc 。 2.按照软件测试的一般步骤,集成测试应在 单元 测试之后进行。3.软件工程三要素包括方法、工具和过程,其中, 过程 支持软件开发的各个环节的控制和管理。4.数据库设计包括概念设计、 逻辑设计 和物理设计。5.在二维表中,元组的 分量 不能再分成更小的数据项。6.设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式 a=-b 。7.若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=9请完成输出语句printf( a=%dnb=%dn ,a,b);8.以下程序的输出结果是 1 。#include main() int i,j,sum;for(i=3;i=1;i-) sum=0;for(j=1;j=i;j+) sum+=i*j;printf(%dn,sum);9.以下程序的输出结果是 9911 。#include main() int j,a=1,3,5,7,9,11,13,15,*p=a+5;for(j=3;j;j-) switch(j) case 1:case 2: printf(%d,*p+); break;case 3: printf(%d,*(-p);解:和for(j = 3; j != 0; j-)是一样的的意思。因为在c语言中的逻辑运算中,0 与 j!=0 的结果都是false。循环从3开始,每次j减1,当j=0时,循环条件不满足,因此只巡检3次;这种写法很不好,不推荐使用。10.以下程序的输出结果是 3 。#include #define n 5int fun(int *s,int a,int n) int j;*s=a;j=n;while(a!=sj)j-;return j;main() int sn+1; int k;for(k=1;k=n;k+) sk=k+1;printf(%dn,fun(s,4,n);11.以下程序的输出结果是 15 。#includeint fun(int x) static int t=0; return(t+=x);main() int s,i; for(i=1;i=5;i+) s=fun(i); printf(%dn,s);12.以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。43 72 6 91 5 8 10#includemain() int x44,n=0,i,j; for(j=0;j=j; i- ) n+;xij= n ; for(i=0;i4;i+) for(j=0;j=i;j+) printf(%3d,xij); print(n);13.以下程序的功能是:通过函数func输入字符并统计字符的个数。输入时用字符作为输入结束标志。请填空。#includelong func( ); /* 函数说明语句 */main() long n; n=func( ); printf(n=%ldn,n);long func() long m; for(m=0;getchar()!=; m+ ); return m;答题处,请把以上各小题的答案填写如下:1. dbxeayfzc 2. 单元 3. 过程 4. 逻辑设计 5. 分量 6. a=-b 7. a=%dnb=%dn 8. 1 9. 9911 10. 3 11. 15 12. i- 、 n 13. func( ) 、 m+ 二、填空题1测试用例包括输入值集和 输出 值集。 2深度为5的满二叉树有 16 个叶子结点。 3设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有 24 个元素。 4在关系数据库中,用来表示实体之间联系的是 关系 。 5 在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中, 数据定义语言 负责数据的模式定义与数据的物理存取构建。 6已有定义:char c=;int a=1,b;(此处c的初值为空格字符),执行b=!c&a;后b的值为 0 。解析:b=(!c)&a7设变量已正确定义为整型,则表达式n=i=2,+i,i+的值为 3 。 8若有定义:int k;,以下程序段的输出结果是 #2#4 。 for(k=2;k6;k+,k+) printf(“#%d”,k); 9以下程序段的定义语句中,x1的初值是 2 ,程序运行后输出的内容是 2468 。 #include main() int x=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p4,i; for(i=0;i4;i+) pi=&x2*i+1; printf(“%d ”,pi0); printf(“n”); 10以下程序的输出结果是 35 。 #include void swap(int *a,int *b) int *t; t=a; a=b; b=t; main() int i=3,j=5,*p=&i,*q=&j; swap(p,q); printf(“%d %dn”,*p,*q); 11以下程序的输出结果是 4 。 #include main() int a5=2,4,6,8,10, *p; p=a; p+; printf(“%d”,*p); 12以下程序的输出结果是 13 。 #include void fun(int x) if(x/20) fun(x/2); printf(“%d ”,x); main() fun(3); printf(“n”); 13以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为m的记录的个数,存入变量n中,并做为函数值返回。请填空: #include #define n 3 typedef struct int num;char nam10; char sex; ss; int fun(ss person ) int i,n=0; for(i=0;in;i+) if( personi.sex =m ) n+; return n; main() ss wn=1,”aa”,f,2,”bb”,m,3,”cc”,m; int n; n=fun(w); printf(“n=%dn”,n); 14以下程序从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空: #include main() file *fp; char ch; fp=fopen( ”filea.dat”,”r” ); ch=fgetc(fp); whlie(!feof(fp) putchar(ch); ch=fgetc(fp); putchar(n); fclose(fp); 答题处,请把以上各小题的答案填写如下:1. 输出 2. 16 3. 24 4. 关系 5. 数据定义语言 6. 0 7. 3 8. #2#4 9. 2 、 2468 10. 35 11. 4 12. 13 13. personi.sex 14. ”filea.dat”,”r” 三、选择题:12345678910aabadbacec1以下程序运行后的输出结果是 a 。#include #include main( ) int * a, * bt * c;a = b = c = ( int * ) malloc( sizeof( int) ) ;* a=l;* b = 2;*c = 3;a = b;printf(“%d,%d,%dn”,*a,*b,*c);a) 3,3, 3 b)2,2, 3 c) 1,2, 3 d) 1, 1,32以下关于typedef的叙述中错误的是 a 。a)用typedef可以增加新类型b) typedef只是将已存在的类型用一个新的名字来代表c)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名d)用typedef为类型说明一个新名,通常可以增加程序的可读性3. 若有以下程序段 b 。typedef struct s int g; char h; t;以下叙述中正确的是a) 可用s定义结构体变量b) 可用t定义结构体变量c) s是struct类型的变量d) 34. 以下结构体类型说明和变量定义中正确的是 a 。a) typedef structint n;char c; rec;rec t1,t2;b)struct rec;int n;char c;rec t1,t2;c)typedef struct rec;int n=0;char c=a; t1,t2;rec t1,t2;d) structint n;char c; rec ;5. 有以下定义和语句struct workersint num;char name20;char c;structint day;int month;int year; s;struct workers w,*pw;pw=&w;能给w中year成员赋1980的语句是 d 。a)* pw.year = 1980;b)w. year =1980;c)pw-year= 1980;d)w. s. year = 1980;6以下程序运行后的输出结果是 b 。#include struct ord int x,y; dt2 = 1 ,2,3,4;main()struct ord * p = dt;printf( %d, +p-x);printf(%d, +p-y);a) 1, 2 b)2,3 c)3,4 d)4,17. 以下程序的运行结果是 a 。#include #include typedef struct char name9; char sex; float score2;stu;void f(stu a)stu b=“zhao”,m,85.0,90.0; int i;strcpy(,);a. sex=b.sex;for( i=0;i2;i+) a.scorei=b.scorei;main( )stu c= “qian”,f,95.0,92.0;f(c);printf( “%s,%c,%2.0f,%2.0fn”,,c.sex,c.score0,c.score1);a)qian,f,95,92 b)qian,m,85,90c)zhao,f,95,92d)zhao,m,85,90解析:结构体作为函数参数时是传值调用。8. 以下程序的运行结果是 c 。#include #include typedef struct char name9; char sex; float score2;stu;stu f(stu a)stu b=“zhao”,m,85.0,90.0; int i;strcpy(,);a. sex=b.sex;for(i=0;i,2;i+) a.scorei=b.scorei;return a;main( )stu c=“qian”,f,95.0,92,0,d;d=f( c );printf( “%s,%c,%2.0f,%2.0fn”,,d.sex,d.score0,d.score1);a)qian, f, 95, 92 b) qian, 85, 90c)zhao, m, 85, 90 d) zhao, f, 95, 929. 以下程序运行后的输出结果是 e 。#include struct s int n; int a20;void f(struct s *p) int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn-1;j+)if(p-aip-aj)t=p-ai;p-ai=p-aj;p-aj=t;main( )int i;struct s s=10,2,3,1,6,8,7,5,4,10,9;f(&s);for(i=0;is.n;i+) printf(“%d”,s.ai);a) 12345678910 b) 10987654321 c) 23168754109 d) 987612345 e)12345678109解析:数组部分元素采用冒泡排序法进行升序排序。10.有以下程序段,描述正确的是: c typedef struct nodeint data;struct node *next; *node;node p;a) p是指向struct node结构体变量的指针的指针。b) node p;语句出错c) p是指向struct node结构体变量的指针d) p是struct node结构体变量四、程序填空题1. 用选择法对10个整数排序。#include int main( )int i,j,min,temp,a11;printf(“enter data:n”);for (i=1 ; i=10 ; i+)printf(“a%d=”,i);scanf(“%d”, &ai );printf(“n”);printf(“the orginal numbers:n”);for (i=1;i=10;i+)printf(“%5d”, ai );printf(“n”);for (i=1; i=9 ;i+)min=i;for ( j=i+1 ;jaj) min=j;temp=ai;ai= amin ;amin=temp;printf(“nthe sorted numbers:n”);for (i=1;i=10;i+)printf(“%5d”,ai);printf(“n”);return 0;四、分析题叙述下列各程序段的功能,按授课的思路给关键语句加注释。#include #include #define len sizeof(struct student)struct studentlong num;float score;struct student *next;int n;int main( )struct student student * creat( );/函数声明struct student student *del(student *,long); /函数声明struct student student *insert(student *,student *);/函数声明void print(student *);/函数声明struct student *head,*stu;long del_num;printf(“input records:n”); /提示输入head=creat( );/建立链表,返回头指针print(head);/输出全部结点printf(“ninput the deleted number:”);/提示用户输入要删除的结点scanf(“%ld”,&del_num);/输入要删除的学号while(del_num !=0)/当输入的学号为0时结束循环head=del(head,del_num);/删除结点后返回链表的头地址print(head);/输出全部结点printf(“input the deleted number:”);/*提示用户输入要删除的结点*/scanf(“%ld”,&del_num);/输入要删除的学号printf(“ninput the inserted record:”);/提示输入要插入的结点stu=(struct student *)malloc(len);/开辟一个新结点scanf(“ld,%f ”,&stu-num,&stu-score);/输入要插入的结点while(stu-num !=0)/当要输入的学号为零时结束循环head=insert(head,stu);/返回链表的头地址,赋给headprint(head);/输出全部结点printf(“input the inserted record:”);/*请用户输入要插入的结点*/stu=(struct student *)malloc(len);/开辟一个新结点scanf(“%ld,%f ”,&stu-num,&stu-score);/输入插入结点的数据return 0;/建立链表的函数creat( )struct student * creat( )struct student * head;struct student * p1,* p2;n=0;p1=p2=(struct student *)malloc(len);scanf(“%ld,%f “,&p1-num,&p1-score);head=null;while(p1-num !=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=(struct student *)malloc(len);scanf(“%ld,%f “,&p1-num,&p1-score);p2-next=null;return(head);/删除链表中结点的函数del(struct student * head,long num )struct student * del(struct student * head,long num)struct student * p1, * p2;if(head=null)/若是空表printf(“nlist null ! n”);return(head) ;p1=head;/使p1指向第1个结点while(num !=p1-num & p1-next !=null)/p1指向的不是所要找的结点且后面还有结点p2=p1 ; p1=p1-next;/p1后移一个结点if(num=p1-num)/找到了 if(p1=head)head=p1-next;/*若p1指向的是首结点,把第2个结点地址赋予head*/else p2-next=p1-next;/否则将下一结点地址赋给前一结点地址printf(“delete:%ldn”,num);n=n-1;elseprintf(“%ld not been found! n”,num);/找不到该结点return(head); /插入结点的函数insert(struct student *head,struct student *stud)struct student * insert(struct student * head,struct student * stud)struct student * p0,* p1,* p2;p1=head;/使p1指向第一个结点p0=stud;/指向要插入的结点if(head=null)/原来的链表是空表head=p0; p0-next=null;/使p0指向的结点作为头结点elsewhile(p0-num p1-num) & (p1-next !=null)p2=p1;/使p2指向刚才p1指向的结点p1=p1-next;/p1后移一个结点if(p0-num num)if(head=p1) head=p0;/插到原来第1个结点之前else p2-next=p0;/插到p2指向的结点之后p0-next=p1;elsep1-next=p0;p0-next=null;/插到最后的结点之后n=n+1;/结点数加1return(head);/输出链表的函数print( )void print(struct student * head)struct student * p;printf(“nnow, there %d records are:n”,n);p=head;if(head !=null)doprintf(“%ld %5.1fn “,p-num,p-score);p=p-next;while(p !=null);答:以上5个函数组成一个程序,实现链表的建立、输出、删除和插入。在主函数中指定需要删除和插入的结点。定义stu为指针变量,在需要插入时先用malloc开辟一个内在区,将其起始地址赋给stu,然后输入此结构变量中各成员的值。对不同的插入对象,stu的值是不同的,每次指向一个新的student变量。在调用insert函数时,实参为head和stu,将已有的链表起始地址传给insert函数的参形head,将新开辟的单元的地址stu传给形参stud,返回的函数值是经过插入之后的链表的头指针(地址)。五、选择题12345678910ccbbdcdadd1.以下程序运行的结果是 c 。#include #include int fun( int n)int *p;p=(int *)malloc(sizeof(int);*p = n;return *p;main() int a;a=fun(10);printf(%dn,a+fun(10);a) 0 b) 10 c) 20 d)出错2. 有以下语句:typedef struct ttchar c;int a4 ; cin;则下列叙述中正确的是 c 。a)可以用tt定义结构体变量 b)tt是struct类型的变量c)可以用cin定义结构体变量 d)cin是stmcttt类型的变量3.下面结构体的定义语句中,错误的是 b 。a) struct ord int x;int y;int z; struct ord a;b)struct ord int x;int y;int z;struct ord a;c) struct ord int x;int y;int z; a;d) struct int x;int y;int z; a;4. 设有定义struct complex int real,unreal; datal = 1 ,8 ,data2;则以下赋值语句中错误的是 b 。a) data2 = data1 ;b) data2 = (2, 6);c) data2. real = data1. real;d) data2. real = data1. unreal;5.有以下程序#include #include struct a int a;char b10 ;doublec;struct a f( struct a t) ;main( ) struct a a = 1001,zhangda,1098.01 ;a= f( a) ;printf(%d,%s,%6.1fn,a.a,a.b,a.c);struct a f( struct a t) t.a=1002;strcpy(t.b,changrong);t.c=1202.0;return t; 程序运行后的输出结果是 d 。a)1001 ,zhangda, 1098.0b) 1002, zhangda,1202.0c)1001,changrong,1098.0d)1002, changrong,1202.06. 以下程序运行的结果是 c 。#include struct stint x,y; data2=1,10,2,20;main( )st *p=data;printf(%d,p-y); printf(%dn,(+p)-x);a) 10,1 b)20,1 c)10,2 d)20,27. 以下程序运行后的输出结果是 d 。#include typedef struct int b,p; a;void f(a c)/*注意:c是结构变量名*/int j;c.

温馨提示

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

评论

0/150

提交评论