C语言_c语言常用函数

其他范文 时间:2020-02-27 04:04:07 收藏本文下载本文
【www.daodoc.com - 其他范文】

C语言由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言常用函数”。

第十章 结构体与共用体

10.1 选择题

【题10.1】已知学生记录描述为 struct student {int no;char name[20];char set;struct {int year;int month;int day;}birth;};struct student s;设变量s中的“生日”应是“1984年11月11日”,下列对生日的正确赋值方式是(D).A)year=1984;B)birth.year=1984;month=11;birth.month=11;day=11;birth.day=11;C)s.year=1984;D)s.birth.year=1984;s.month=11;s.birth.month=11;s.day=11;s.birth.day=11;

【题10.2】当说明一个结构体变量时系统分配给它的内存是(A).A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量

【题10.3】以下对结构体类型变量的定义中不正确的是(D).A)#define STUDENT struct student STUDENT {int num;float age;}std1;B)struct student {int num;float age;}std1;C)struct {int num;float age;}std1;D)struct int num;float age;}student;struct student std1;

【题10.4】设有以下说明语句 struct stu {int a;float b;}stutype;则下面的叙述不正确的是(C).A)struct是结构体类型的关键字

B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名

【题10.5】C语言结构体类型变量在程序执行期间(A)..A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中

【题10.6】在16位IBM-PC机上使用C语言,若有如下定义: struct data {int i;char ch;double f;}b;则结构变量b占用内存的字节数是(D).A)1 B)2 C)3 D)4

题【10。7】以下程序的运行结果是(A).#include “stdio.h” main(){struct data {int year,month,day;}today;printf(“%dn”,sizeof(struct data));} A)6 B)8 C)10 D)12

【题10.8】根据下面的定义,能打印出字母M的语句是(D).Struct person{char name[9];int age;};struct person cla[10]={“John”,17, “Paul”,19, “Mary”,18, “adam”,16 };A)printf(“%cn”,cla[3].name);B)printf(“%cn”,cla[3].name[1]);C)printf(“%cn”,cla[2].name[1]);D)printf(“%cn”,cla[2].name[0]);

【题10.9】下面程序的运行结果是(D).main(){ struct cmplx {int x;int y;} cnum[2]={1,3,2,7};printf(“%dn”,cnum[0].y/cnum[0].x*cnum[1].x);} A)0 B)1 C)3 D)6

【题10.10】 若有以下定义和语句;

struct student {int age;int num;};struct student stu [3]={{1001,20 },{1002,19},{1003,21}};main(){struct student *p;p=stu;„..} 则以下不正确的引用是(D)。

A)(P++)—》 num B)p++ C)(*p).num D)p=&stu.age

【题10.11】以下scanf函数调用语句中对结构体 变量成员的不正确引用是(D)。

Stuct pupil {char name[20 ];int age;int sex;}pup[5,]*p;p=pup;A)scanf(“%s”,pup[0].name);B)scanf(“”%d),&pup[0].age;C)scanf(“%d”,&sex));(p D)scanf(“%d”,P->age);

【题10.12】有以下定义和语句,则以下引用形式不合法的是(D)。

Struct s {int i1;struct s*i2,i0;};static struct s a[3 ]={2,&a[1],’’,4,%a[2],&a[0],6,’’,&a[1]}, *ptr;ptr=a;A)ptr->i1++ B)*ptr->i2 C)++ptr->i0 D)ptr->i1

【题10.13】设有如下定义:

struct sk {int n;float x;}data,*p;若要使P指向data中的n域,正确的负值语句的是(C)。A)p=&data.n;B)*p=data.n;C)p=(struct sk*)&data.n;D)p=(struct sk*)data.n;

【题10.14】若哟于以下说明和语句:

struct student {int age;int num;}std,*p;p=&std;则以下对结构体变量std中成员age的引用方式不正确的是(D)。A)std.age B)p->age C)(*p).age D)*p.age

【题10.15 】若以下程序段:

struct dent { int n;int*m;};int a=1, b=2,c=3;struct dent s[3]={{101

A)(p++)->m B)*(P++)->m C)(*p).m D)*(++p)->m

【题10.16】若有以下说明和语句,则 对中域的正确引用方式是(D)。

Struct pupil {char name [20;int sex;}pup,*p;p=&pup;A)p.pup.sex B)p->pup.sex C)(*p).pup.sex D)(*p).sex

【题10.17】设有以下语句:

struct st {int n;struct st *next;};static struct st a[3 ] ={5,&a[1] ,7,&a[2],9,’’},*p;p=&a=[0];则以下表达式的值为6的是(D)。A)p++->n B)p->n++ C)(*P).n++ D)++p->n

【题10.18】以下程序的输出结果是(C)。

Struct stu {int x;int*y;} *p;int dt[4] ={10,20,30,40};struct stu a[4]={50,&dt[0],60,&dt[1], 70,&dt[2],80,&dt[3] };main(){p=a;printf(“%d,”,++p->x);printf(“%d,”,(++p)->x);printf(“%dn”,++(*p->y));} A)10,20,20 B)50,60,21 C)51,60,21 D)60,70,31

【题10.19】若有以下说明和语句,则下面表达式中值为1002的是(D)。Struct student {int age;int num;};struct student stu[3]={{1001,20},{1002,19},{1003,21};struct student *p;p=stu;A)(p++)—>num B)(p++)—>age C)(*p).num D)(*++p).age

【题10.20 】以下对结构体变量stul 中成员age 的非法引用是(B)。Struct student {int age;int num;}stul,*p;p=&stul;A)stul.age B)student.age C)p—>age D)(*p).age

【题10.21】设有以下说明和定义语句,则下面表达式中值为3的是(D)。Struct s {int i1;struct s*i2;};static struct s a[3]={1,&a[1],2,&a[2],3,&a[0]},*ptr;ptr=&a[1];A)ptr—>i1++ B)ptr++—>i1

【题10.22 】以下程序的功能是:读入一行字符(如:a,„.y,z),按输入时的逆序建立一个链接式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。请选择正确的内容填入[ ]中。#include #define getnode(type)[B]malloc(sizeof(type))main(){struct node {char info;struct node*link;}*top,*p;char c;top=NULL;while((c=getchar())[D]){p=getnode(struct node);p—>info=c;p—>link=top;top=p;} while(top){[B];top=top—>link;putchar(p—>info);free(p);} } [1]A)(type)B)(type*)C)type D)type*[B ] [2]A)= =’’ B)!=’’ C)= =’n’ D)=’n’[D] [3]A)top=p B)p=top C)= =top D)= =p [B]

【题10.23】若要利用下面的程序片段使指针变量p指向一个存储整型变量的存储单元,则[ ]中应填入的内容是(D)。Int*p;P=[ ]malloc(sizeof(int));A)int B)int* C)(*int)D)(int*)

【题10.24】当说明一个共用体变量时系统分配给它的内存是(C)。A)各成员所需内存量的总和 B)结构中第一个成员所需内存量 C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量

【题10.25 】以下对C语言中共用体类型数据的叙述正确的是(C)。A)可以对共用体变量名直接赋值

B)一个共用体变量中可以同时存放其所有成员 C)一个共用体变量中不可能同时存放其所有成员 D)共用体类型定义中不能出现结构体类型的成员

【题10.26】若有以下定义和语句: union data {int i;char c;float f;}a;int n;则以下语句正确的是(B)。

A)a=5;B)a={2,’a’,1.2};C)printf(“%dn”,a);D)n=a;

【题10.27】设有以下说明,则下面不正确的叙述是(C)。Union data { int i;char c;float f;}un;A)un所占的内存长度等于成员f的长度 B)un的地址和它的各成员地址都是同一地址 C)un可以作为函数参数

D)不能对un赋值,但可以在定义un时对它初始化

【题10.28 】C语言共用体型变量在程序运行期间(B)。A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中 C)部分成员驻留在内存中 D)没有成员驻留在内存中

【题10.29】以下程序的运行结果是(B)。#include “stdio.h” main(){ union {long a;int b;char c;}m;printf(“%dn”,sizeof(m));} A)2 B)4 C)6 D)8

【题10.30】对下面程序中的每个打印语句后的注释行内的【x】小题,选择正确的运行结果。

#include “stdio.h” main(){union {int a[2];long b;char c[4];}s;s.a[0]=0x39;s.a[1]=0x38;printf(“%lxn”,s.b);/*【B】*/ printf(“%cn”,s.c[0]);/*【B】*/ } 【1】A)390038 B)380039 C)3938 D)3839 【2】A)39 B)9 C)38 D)8

【题10.31】对下面程序中的每个打印语句后的注释行内的【x】小题,选择正确的运行结果.#include “stdio.h” main(){int j;union {int a;long b;unsigned char c;}m m.b=0x12345678;printf(“%xn”,m.a;)/*【B】*/ printf(“%xn”,m.c;)/*【B】*/ } 【1】A)1234 B)5678 C)12345678 D)0 【2】A)12 B)78 C)1234 D)5678

【题10.32】在16位IBM-PC机上使用C语言,若有如下定义: union data {int i;char ch;double f;}b;则共用体变量 占用内存的字节数是(C)..A)1 B)2 C)8 D)11

【题10.33】以下程序的运行结果是(A).#include “stdio.h” union pw {int I char ch[2];}a;main(){ ch[0]=13;ch[1]=0;printf(“%dn”,a,i);} A)13 B)14 C)208 D)209

【题10.34】使用typedef定义一个新类型的正确步骤是(C).A)2,4,1,3 B)1,3,2,4 C)2,1,4,3 D)4,2,3,1 1.把变量名换成新类型名.2.按定义变量的方法写出定义体.3.用新类型名定义变量.4.在最前面加上关键字.【题10.35】下面对typedef的叙述中不正确的是(B).A)用typedef可以定义各种类型名,但不能用来定义变量 B)用typedef可以增加新类型

C)用typedef只是将已存在的类型用一个新的标识符来代表 D)使用typedef有利于程序的通用和移植

【题10.36】以下程序的运行结果是(C)...typedef union {long a[2];int b[4];char c[8];}TY TY our;main(){printf(“%dn”,sizeof(our));} A)32 B)16 C)8 D)24

10.2

【题10.37】以下程序的运行结果是 【10,x 】..struct n{ int x;char c;};main()struct n a={10,‘x’};

func(a);printf(%d,%c,a.x,a.c);} func(struct n b){b.x=20;b.c=’y’;}

填空 题 【题10.38】 以下程序的运行结果是【2,3】.main(){struct EXAMPLE{struct{ int x;inty;}in;int a;int b;}e;e.a=1;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;printf(“%d,%d”,e.in.x,e.in.y);}

【题10.39】 以下程序用以输出结构体变量bt所占内存单元的字节数,请在()内填上适当内容.struct ps { double i;char arr[20];};main(){ struct ps bt;printf(“bt size : %dn”,(sizeof(struct ps));}

【题10.40】以下程序用来按学生姓名查询其排名和平均成绩.查询可连续进行,直到键入 0 时结束,请在()内填入正确内容.#include #include #define NUM 4 struct student { int rank;char * name;float score;};(struct student)stu[]={ 3,”Tom”,89.3, 4,”Mary”,78.2 , 1,”Jack”,95.1, 2,”Jim”,90.6, };main(){ char str[10];int I;do { printf(“Entre a name:”);scanf(“%s”,str);for(i=0;i=NUM)printf(“Not foundn”);} while(strcmp(str,”0”)!= 0);}

【题10.41】设有三人的姓名和年龄存在结构数组中,以下程序输入三人中年龄居中者的姓名和年龄,请在()内填入正确内容.Static struct man { char name[20];int age;} person[]={“li-ming”,18, “wang-hua”,19, “zhang-ping”,20 };main(0 { int I,j,max,min;max=min=person[0].age;for(i=1;i

【题10.42】以下程序用”比较计数”法对结构数组 a 按字段 num 进行降序排列.” 比较计数”法的基本思想是:通过另一字段 con 记录 a 中小于某一特定关键字的元素的个数.待算法结束,a[i].con 就是a[i].num 在 a 中的排序位置.请在()内填入正确内容.#define N 8 struct c { int num;int con;} a[16]

main(){int i,j;for(i=0;i=1;i--)for(j=i-1;j>=0;j--)if(a[i].num

【题10.43】 若已定义: struct num {int a;int b;float f;} n={1,3,5.0};struct num * pn = &n;则表达式 pn->b/n.a*++pn->b的值是【12】,表达式(*pn).a+pn->f的值是【6.0】

【题10.44】以下程序的功能是计算并打印复数的差。请在【】内填入正确内容。struct comp {float re;float im;};struct comp *m(x,y)struct comp *x,*y;{【struct comp*z】;z=(struct comp *)malloc(sizeof(struct comp));z->re=x->re-y->re;z->im=x->im-y->im;return(【z】);} main(){struct comp *t;struct comp a,b;a.re=1;a.im=2;b.re=3;b.im=4;t=m(【&a&b】);printf(“z.re=%f , z.im=%f”,t->re,t->im);}

【题10.45】以下程序调用readrec函数把10名学生的学号、姓名、四项成绩以及平均分放在一个结构体数组里,学生的学号、姓名、和四项成绩由键盘输入,然后计算出平均分放在结构体对应的域中,调用writerec函数输出10名学生的记录.请在【 】内填入正确内容.#include struct stud { char num[5] , name[10];int s[4];int ave;};main(){struct stud st[30];int i , k;for(k=0;knum);gets(rec->name);for(i=0;is[i]】);ch=getchar();sum=0;for(i=0;is[i]】;rec->ave=sum/4.0;} writerec(struct stud * s){ int k,j;for(k=0;k

【题10.46】以下程序的运行结果是【7,3】。struct ks {int a;int *b;} s[4],*p;

main(){ int n=1 , i;printf(“n”);for(i=0;ia,(p++)->a);}

【题10.47】结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请在【 】内填入正确内容。static struct man { char name[20];int age;} person[ ]={“li-ming”,18, “wang-hua”,19, “zhang-ping”,20 };

main(){ struct man *p,*q;int old=0;p=person;for(;p【dt[leap][i]】;p++)if(old

age){q=p;【d】;} printf(“%s%d”,【p】);} 【题10.48】 以下程序运行结果为【 19 83.5 zhang l9 83.5zhang y hang】.struct s{ int a;float b;char *c;} main(){ static struct s x={19,83.5,”zhang”};struct s *px=&x;printf(“%d%.1f%sn”,x.a,x.b,x.c);printf(“%d%.1f%sn”,px―>a,(*px).b, px―>c);printf(“%c%sn”,*px―>c―1,&px―>c[1]);}

【题10.49】 以下程序是用来统计学生成绩。其功能包括输入学生姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(pa),而后30%的学生定为不合格(fail)。请在【】内填入正确内容.#include #include typedef struct { char name[30];int grade;}student;student cla[40];void sortcla();void swap();main(){ int ns,cutoff,I;printf(“number of student: n”);scanf(“%d”,&ns);printf(“Enter name and grade for each student: n”);for(i=0;i

下载C语言word格式文档
下载C语言.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文