结构体,共用体,链表相关试题
结构体与共用体相关题目练习

结构体与共用体1.说明一个结构体变量时系统分配给它的内存是A)各成员所需要内存量的总和 B)结构体中第一个成员所需内存量C)成员中占内存量最大者所需的容量 D)结构中最后一个成员所需内存量2.C语言结构体类型变量在程序执行期间A)所有成员一直驻留在内存中 B)只有一个成员驻留在内存中C)部分成员驻留在在内存中 D)没有成员驻留在内存中3.设有以下说明语句struct stu { int a ; float b ; } stutype ;则下面的叙述不正确的是A) struct 是结构体类型的关键字 B) struct stu 是用户定义的结构体类型C) stutype 是用户定义的结构体类型名 D) a和b都是结构体成员名4.设有以下结构类型说明和变量定义,则变量a在内存所占字节数是【】。
struct stud { char num[6]; int s[4]; double ave; } a,*p;5.程序中有下面的说明和定义struct abc { int x;char y;}struct abc s1,s2;则会发生的情况是A)编译出错B)程序将顺利编译、连接、执行C)能顺利通过编译、连接、但不能执行 D)能顺利通过编译、但连接出错6.有如下定义struct person { char name[9]; int age;};struct person class[10]={ " Johu", 17,"Paul", 19,"Mary", 18,"Adam", 16};根据上述定义,能输出字母M的语句是A) prinft(" %c\n",class[3].name); B) printf(" %c\n",class[3].name[1]);C) prinft(" %c\n",class[2].name[1]); D) printf(" %c\n",class[2].name[0]);7.下面程序的输出是A)0 B)1 C)3 D)6main(){ struct cmplx { int x; int y;} cnum[2]={1,3,2,7};printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);}8.下列程序的输出结果是A)5 B)6 C)7 D)8struct abc { int a, b, c; };main(){ struct abc s[2]={{1,2,3},{4,5,6}};int t;t=s[0].a+s[1].b;printf("%d \n",t);}9.有以下程序struct stu{ int num;char name[10];int age;};void fun(struct stu *p){ printf("%s\n" ,(*p).name); }main(){ struct stu students[3]={{9801,"Zhang",20} ,{9802,"Wang", 19} , {9803,"Zhao",18} };fun(students+2);}输出结果是A)Zhang B)Zhao C)Wang D)1810.设有如下定义:struct sk {int a ;float b ;}data ,*p ;若有p=&data ;,则对data中的a域的正确引用是A)(*p).data.a B)(*p).a C)p->data.a D)p.data.a11.下面程序的输出结果为int dt[4]={10 ,20 ,30 ,40} ;struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3] } ;main(){ p=aa ;printf("%d\n" , ++p->x );printf("%d\n" ,(++p)->x);printf("%d\n" , ++( *p->y));}A)10 B)50 C)51 D)6020 60 60 7020 21 21 3112.为了建立如图所示的存储结构(即每个结点含两个域, data 是数据域,next是指向结点的指针域,)请填空。
数据结构考试复习题及答案 (19)

1. 什么是链表?链表有哪些优点和缺点?答案:链表是一种数据结构,其中每个元素包含数据和指向下一个元素的指针。
链表的优点是可以动态分配内存,缺点是插入和删除操作需要遍历链表。
2. 什么是二叉树?二叉树有哪些基本操作?答案:二叉树是一种树形数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点。
二叉树的基本操作包括插入、删除、搜索和遍历。
3. 什么是堆?堆有哪些性质?答案:堆是一种完全二叉树,通常用于实现优先队列。
堆具有上三角性质,即每个节点的值都大于或等于其子节点的值。
4. 什么是哈希表?哈希表有哪些优点和缺点?答案:哈希表是一种基于哈希函数的数据结构,用于快速查找和插入元素。
哈希表的优点是查找和插入时间复杂度为O(1),缺点是哈希冲突可能导致性能问题。
5. 什么是并查集?并查集有哪些应用?答案:并查集是一种数据结构,用于处理不相交集合的合并和查询问题。
并查集的应用包括图形连通性检测、线段树等。
6. 解释并解释栈和队列这两种基本数据结构。
答案:栈是一种后进先出(LIFO)的数据结构,只能在一端(称为栈顶)进行插入和删除操作。
队列是一种先进先出(FIFO)的数据结构,可以在两端(称为队首和队尾)进行插入和删除操作。
7. 在使用二叉搜索树时,为什么经常使用中序遍历而不是前序或后序遍历?答案:二叉搜索树的中序遍历按照元素的顺序进行,可以保证访问的元素按照从小到大的顺序排列。
这使得在中序遍历中查找特定元素的时间复杂度为O(log n),比前序或后序遍历更高效。
8. 解释并解释图的数据结构。
答案:图是一种由节点和边组成的数据结构,用于表示对象之间的关系。
可以使用邻接表或邻接矩阵等数据结构来表示图。
9. 解释并解释堆排序算法。
答案:堆排序是一种基于堆的数据结构的排序算法,通过构建最大堆或最小堆,然后交换堆顶元素和最后一个元素的位置,重复这个过程直到所有元素都排好序。
10. 在使用B树或B+树作为索引结构时,为什么需要保持数据和索引的分离?答案:B树或B+树作为索引结构时,需要保持数据和索引的分离是为了提高查询效率。
C语言(结构体与共用体)习题与答案

{ for ( ; *s==*t; s++, t++ )
if (!*s) return 0 ;
return (*t-*s) ;
}
B.int strcmp2(char *s,char *t)
{ for ( ; *s++=*t++; )
if (!*s) return 0 ;
1、指针的含义是()。
A.名
B.一个标志
C.地址
D.值
正确答案:C
2、若已定义a为int型变量,则下面的语句中正确的是()。
A.int *p=*a;
B.int *p=&a;
C.int *p=a;
D.int p=&a;
正确答案:B
3、若有定义:int x,*p;则以下正确的赋值表达式是()。
A.*p=&x
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d\n",a,b,c);
}
A.5,-2,-7
B.5,2,3
C.-5,-12,7
D.-5,-12,-7
正确答案:D
11、以下程序运行的结果是()。
#include<stdio.h>
void main()
D.char *s="china";等价于char *s; s="china" ;
正确答案:D
15、函数strcmp(char *s,char *t)功能是()。
结构体与公用体 习题十及参考答案

住址、入学成绩)的信息。请在输入10名教师和学生的信息后, 按姓名进行排序,最后按排序后的顺序进行输出,对于教师要输 出姓名、单位、住址和职称,对学生要输出姓名、班级、住址和 入学成绩。请编程实现。
结构体和共用体 参考答案

实验八构造体及其应用班级:**:**:成绩:一.实验目的1、掌握构造体数据类型的定义和使用。
2、掌握构造体数组的定义和使用。
3、掌握链表的根本概念,熟练掌握单链表的创立、插入、删除和遍历操作。
二.使用的设备和仪器:计算机+Windows *P +Visual C++6.0三.实验内容及要求1、定义一个描述时间的构造体类型Time〔包括时、分、秒〕,然后定义一个该构造体类型的变量,按24小时制输入时间信息,然后按12小时制输出〔区分AM和PM〕。
例如,输入的时间是22:10:30;输出:PM 10:10:30。
2、定义描述学生信息〔**、**、成绩〕的构造体数组。
1〕定义输入学生信息的函数Input;2〕定义输出学生信息的函数Output;3〕定义按**进展查找的函数Search,假设找到,则输出该学生的信息;如果没找到,则输出"该学生不存在〞。
3、建立一个由3个学生〔包括**、**、成绩〕组成的静态链表,然后,输出该链表中各结点的数据。
4、动态建立一个学生信息〔包括**、**、成绩〕的链表,**输入-1时表示完毕,然后输出该链表中各结点的数据。
选作题:5、在第2题的根底上修改函数Search,假设找到,则返回该学生的信息;否则,返回一个内容为空的构造变量。
6、有N个候选人,每个选民只能投一票,要求编写一个模拟10个选民进展投票的程序,先后输入被选人的名字,最后按照选票由高到低输出投票结果。
7、在第3题的根底上,定义一个链表查找函数,对所输入的**进展查找,如果找到,则输出该学生的信息;如果没找到,则输出"该学生不存在〞。
四.实验步骤1、程序代码:*include<stdio.h>struct Time{int h,m,s;};void Input(Time *pt);void Output12(Time t);void main(){Time t;Input(&t);Output12(t);}void Input(Time *pt){printf("Input hour:minute:second:");scanf("%d:%d:%d",&pt->h,&pt->m,&pt->s);}void Output12(Time t){printf("The Time is:");if(t.h<12)printf("AM %d:%d:%d\n",t.h,t.m,t.s);elseprintf("PM %d:%d:%d\n",t.h-12,t.m,t.s);}运行结果:2、程序代码:*include<stdio.h>*include<string.h>*define N 3struct Student{char num[10];char name[10];double score;};void Input(Student *p){int i;for(i=0;i<N;i++)scanf("%s%s%lf",(p+i)->num,(p+i)->name,&(p+i)->score ); }void Output(Student *p){int i;for(i=0;i<N;i++)printf("num=%s name=%s score=%lf\n",(p+i)->num,(p+i)->name,(p+i)->score );}void Search(Student *p,char *nm){for(int i=0;i<N;i++){if(strcmp((p+i)->num,nm)==0){printf("num=%s name=%s score=%lf\n",(p+i)->num,(p+i)->name,(p+i)->score );break;}}if(i==N)printf("该学生不存在!\n");}void main(){Student stu[N];printf("请输入%d个学生的信息〔**、**、成绩〕:\n",N);Input(stu);printf("学生的信息为:\n");Output(stu);char nm[10];printf("请输入要查找的学生的**:");scanf("%s",nm);printf("查找结果:\n");Search(stu,nm);}运行结果:3、程序代码:*include<stdio.h>*define N 3struct student{char num[10];char name[10];double score;student *ne*t;};void main(){student stu1={"001","zhangsan",89},stu2={"002","lisi",99},stu3={"004","wangwu",70};student *head,*p;head=&stu1;stu1.ne*t=&stu2;stu2.ne*t=&stu3;stu3.ne*t=NULL;p=head;while(p!=NULL){printf("num:%s,name:%s,socre:%.2lf\n",p->num,p->name,p->score);p=p->ne*t;}}运行结果:4、程序代码:*include<stdio.h>*include<malloc.h>*include<string.h>*define N 3struct student{char num[10];char name[10];double score;student *ne*t;};void main(){student *head,*p,*s;head=NULL;printf("请输入学生信息,包括**和**〔**输入-1,表示完毕〕:\n");s=(student*)malloc(sizeof(student));scanf("%s%s%d",s->num,s->name,&s->score);s->ne*t=NULL;while(strcmp(s->num,"-1")!=0){if(head==NULL)head=s;elsep->ne*t=s;p=s;s=(student*)malloc(sizeof(student));scanf("%s%s%d",s->num,s->name,&s->score);s->ne*t=NULL;}p=head;while(p!=NULL){printf("%s,%s,%d\n",p->num,p->name,p->score);p=p->ne*t;}free(s);}运行结果:选做题:5、程序代码:*include<stdio.h>*include<string.h>*define N 3struct Student{char num[10];char name[10];double score;};void Input(Student *p){int i;for(i=0;i<N;i++)scanf("%s%s%lf",(p+i)->num,(p+i)->name,&(p+i)->score );}void Output(Student *p){int i;for(i=0;i<N;i++)printf("num=%s name=%s score=%lf\n",(p+i)->num,(p+i)->name,(p+i)->score ); }Student Search(Student *p,char *nm){Student ept_stu={",",0};for(int i=0;i<N;i++){if(strcmp((p+i)->num,nm)==0)return *(p+i);}return ept_stu;}void main(){Student stu[N];printf("请输入%d个学生的信息〔**、**、成绩〕:\n",N);Input(stu);printf("学生的信息为:\n");Output(stu);char nm[10];printf("请输入要查找的学生的**:");scanf("%s",nm);printf("查找结果:\n");Student t=Search(stu,nm);printf("num=%s name=%s score=%lf\n",t.num,,t.score); }运行结果:6、程序代码:*include<stdio.h>*include<string.h>*define N 3struct person{char name[20];int count;};void main(){person leader[N]={"HJT",0,"W",0,"*JP",0};char lname[20];person t;int i,j;printf("候选人为:\n");for(i=0;i<N;i++)printf("%s ",leader[i].name );printf("\n请开场投票:\n");for(i=1;i<=10;i++){scanf("%s",lname);for(j=0;j<N;j++){if(strcmp(lname,leader[j].name )==0)leader[j].count ++;}}for(i=0;i<N-1;i++)for(j=i+1;j<N;j++){if(leader[j].count>leader[j].count){t=leader[j]; leader[j]=leader[i]; leader[i]=t;}}printf("最后的投票结果为:\n");for(i=0;i<N;i++){printf("%s:%d\n",leader[i].name ,leader[i].count );}}运行结果:7、程序代码:*include<stdio.h>*include<string.h>struct Student{int num;char name[20];double score;Student *ne*t;};void PrintList(Student *head);void Search(Student *head);void main(){Student s1={1001,"Lily",100};Student s2={1002,"Lucy",90};Student s3={1003,"Ada",70};Student *head;head=&s1; s1.ne*t =&s2; s2.ne*t =&s3; s3.ne*t =NULL;PrintList(head);Search(head);}void PrintList(Student *head){printf("The List are:\n");Student *p=head;while(p!=NULL){printf("num=%d name=%s score=%lf\n",p->num ,p->name ,p->score );p=p->ne*t ;}}void Search(Student *head){char nm[20];printf("请输入要查找的**:");scanf("%s",nm);Student *p=head;while(p!=NULL){if(strcmp(p->name,nm)==0)break;p=p->ne*t ;}if(p!=NULL)printf("查找的结果为:num=%d name=%s score=%lf\n",p->num ,p->name ,p->score );elseprintf("该学生不存在!\n");}运行结果:五、实验总结。
数据结构c语言版试题及答案

数据结构c语言版试题及答案一、选择题(每题2分,共10分)1. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A2. 若有一个结构体数组,下列哪个函数可以用来初始化数组中的每个元素?A. memsetB. memcpyC. strcpyD. bzero答案:A3. 在C语言中,以下哪个函数用于动态分配内存?A. mallocB. callocC. reallocD. all of the above答案:D4. 对于一个链表,以下哪个操作是正确的?A. 插入节点B. 删除节点C. 遍历链表D. all of the above答案:D5. 在C语言中,以下哪个函数用于释放动态分配的内存?A. freeB. mallocC. callocD. realloc答案:A二、填空题(每题3分,共15分)1. 结构体定义的关键字是______。
答案:struct2. 在C语言中,动态分配内存失败时,malloc函数返回______。
答案:NULL3. 单链表的头节点指针通常初始化为______。
答案:NULL4. 双向链表中,每个节点包含______个指针。
答案:两个5. 树的深度优先遍历包括______、中序遍历和后序遍历。
答案:前序遍历三、简答题(每题5分,共20分)1. 请简述C语言中结构体和联合体的区别。
答案:结构体(struct)可以包含不同类型的数据,并且可以有多个实例;联合体(union)可以包含不同类型的数据,但是只能有一个实例,即在任意时刻只能存储其中一个成员的值。
2. 动态内存分配的优点是什么?答案:动态内存分配允许程序在运行时根据需要分配内存,这样可以更有效地使用内存资源,并且可以创建大小不固定的数据结构。
3. 链表相比于数组有哪些优点?答案:链表的优点包括动态大小,可以灵活地插入和删除节点,不需要预先知道数据的大小。
结构体、链表综合习题

已知某链表中结点的数据结构定义如下: #include<stdio.h> struct node{int x; struct node *next;}; 函数loop的功能是:根据dir的值循环移位head指向的链 表中的所有结点,当dir结点的指针。 例如,移位前的链表数据:head->1->3->5->4, 移一次后的链表数据:head->4->1->3->5。 算法提示:循环右移时,将链表最后一个结点删除,再将 其插入到链表首部;循环左移时,将链表第一个结点删 除,再将其连接到链表尾部。
结构体、链表综合习题
若要使表达式“P++”无语法错误,则变量P不能声明为 ___________。 D A. int P; B. double P; C. int *P; D. struct{int x;}P;
结构体、链表综合习题
数组和链表都可以用于存储一组彼此有关联的数据,以 下说法中不正确的是: B A:数组占用一块连续的存储区域,链表可能占用 若 干不连续的存储区域 B:数组和链表所占用的存储区域均不能在程序运行期 间动态地分配 C:数组中的数据可以随机存取或顺序存取,链表中的 数据只能顺序存取 D:数组的长度是固定的,链表的长度是不固定的
.以下程序中函数padd的功能是:调整pa指向的链表中各结点的位置,使得所
(1)p1!=pa #include<stdlib.h> typedef struct p{ int x; struct p *next;} PNODE; (2)p2->next PNODE *padd(PNODE *pa) {PNODE *p1, *p2,*p; p1=p2=pa; (3)pa=p while(p1) (4)NULL {if(p1->x%2= =0&& (1) ) {p=p1; p1=p1->next; (2) =p1; p->next=pa;(3) ; } else {p2=p1;p1=p1->next;} } return pa;} main() {PNODE a[10]={{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}},*ha=a,*p; int i ; for(i=0;i<9;i++)a[i].next=&a[i+1]; a[9].next= (4) ; ha=padd(ha); p=ha; printf("\n"); while(p) {printf("%d->",p->x);p=p->next;}}
国家二级C语言(结构体和共用体、文件)机试模拟试卷2

国家二级C语言(结构体和共用体、文件)机试模拟试卷2(总分:52.00,做题时间:90分钟)一、选择题(总题数:26,分数:52.00)1.若有语句typedef struet S{int g;char h;}T;,则下列叙述中正确的是( )。
(分数:2.00)A.可用S定义结构体变量B.可用T定义结构体变量√C.S是struct类型的变量D.T是struet S类型的变量解析:解析:本题考查typedef重新声明一种结构体类型。
那么T为结构体类型,而不是结构体变量,所以B选项正确。
2.设有语句typedef struet TT{char c;int a[4];}CIN;,则下列叙述中正确的是( )。
(分数:2.00)A.CIN是struet TT类型的变量B.,IT是struct类型的变量C.可以用TT定义结构体变量D.可以用CIN定义结构体变量√解析:解析:本题考查typedef重新声明一种结构体类型。
其中CIN为结构体类型名,而不是结构体变量,所以D选项正确。
3.下列叙述中错误的是( )。
(分数:2.00)A.可以用typedef将已存在的类型用一个新的名字来代表B.可以通过typedef增加新的类型√C.用typedef定义新的类型名后,原有类型名仍有效D.用typedef可以为各种类型起别名,但不能为变量起别名解析:解析:本题考查typedef的用法。
typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。
4.有以下程序:#include<stdio.h>main(){struet STU{char name[9];char sex:double score[2];};struct STU a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0};b=a;printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]);}程序的运行结果是( )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
十.结构体和共用体(1)下列程序中fun()函数的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。
disp()函数的功能是显示输出该单链表中所有结点中的字符串。
请填空完成(06.4)disp()函数。
#includetypedef struct node /*链表结点结构*/{ char sub[3];struct node *next;}Node;Node fun(char s) /*建立链表*/{ …… }void disp(Node *h){ Node *p;p=h− >next;while( 【】){printf("%s\n",P− >sub);p= 【】; }}main( ){ Node *hd;hd=fun( ); disp(hd); printf("\n");}(2)设有以下语句:typedef struct TT{char c,int a[4];}CIN;则下面叙述中正确的是(06.9)。
A)可以用TT定义结构体变量B)TT是struct类型的变量C)可以用CIN定义结构体变量D)CIN是struct TT类型的变量(3)有以下结构体说明、变量定义和赋值语句: struct STD{char name[10];int age;char sex;}s[5],*ps;ps=&s[0];则以下scanf函数调用语句中错误引用结构体变量成员的是(06.9)。
A)scanf(%s",s[0].name); B)scanf(%d",&s[0].age); C)scanf(%c",&(ps->sex)); D)scanf(%d",ps->age);(4) 若有以下定义和语句printf("%d\n",sum);}(7)有下列程序:struct S{int n;int a[20];};void f (struct S *p){int i,j,t;for(i=0;i<p->n-1;i+ +)for(j=i+1;j<p->n;j+ +)if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a [j];p->a[j]=t;}}main( ){ int i; struct S s={10,{2,3,l,6,8,7,5,4,10,9}};f(&s);for(i=0;i<s.n;i+ +) printf("%d,",s.a[i]);}程序运行后的输出结果是(07.4 )。
A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1, C)2,3,1,6,8,7,5,4,10,9,D)10,9,8,7,6,1,2,3,4,5, (8)有下列程序:struct S{int n;int a[20];};void f(int *a,int n){ int i;for(i=0;i<n-1;i+ +) a[i]+ =i;}main( ){ int i; struct S s={10,{2,3,1,6,8,7,5,4,10,9}};f(s.a,s.n);for(i=0;i<s.n;i+ +) printf("%d,",s.a[i]);}程序运行后的输出结果是(07.4)。
A)2,4,3,9,12,12,11,11,18,9, B)3,4,2,7,9,8,6,5,11,10, C)2,3,1,6,8,7,5,4,10,9, D)1,2,3,6,8,7,5,4,10,9, (9)有下列程序段:typedef struct node{int data; struct node *next;}*NODE;NODE p;下列叙述中正确的是(07.4)。
A)p 是指向 struct node 结构变量的指针的指针B)NODE p;语句出错C)p 是指向 struct node 结构变量的指针D)p 是 struct node 结构变量(10)设有说明:struct DA TE{int year;int month;int day;}; 请写出一条定义语句,该语句定义 d 为上述结构体类型变量,并同时为其成员 year、month、day 依次赋初值 2006、10、1:【】。
(07.4)(11)以下关于typedef的叙述错误的是(07.4)A)用typedef可以增加新类型B)typedef只是将已存在的类型用一个新的名字来代表C)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D)用typedef为类型说明一个新名,通常可以增加程序的可读性(12)有以下程序#includestruct tt{int x;struct tt *y;} *p;struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};main(){ int i;p=a;for(i=1;i<=2;i++) {printf("%d,",p->x); p=p->y;}}程序的运行结果是(07.9)A)20,30, B)30,17 C)15,30, D)20,15,(13)有以下程序#include#includetypedef struct{ char name[9];char sex; float score[2]; } 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.score=b.score;return a;}main(){STU c={"Qian",'f',95.0,92.0},d;d=f(c); printf("%s,%c,%2.0f,%2.0f\n",,d.sex,d. score[0],d.score[1]);}程序的运行结果是(07.9)A)Qian,f,95,92 B)Qian,m,85,90C)Zhao,m,85,90 D)Zhao,f,95,92(14)设有以下定义union data{ int d1; float d2; }demo;则下面叙述中错误的是(07.9)A)变量demo与成员d2所占的内存字节数相同B)变量demo中各成员的地址相同C)变量demo和各成员的地址相同D)若给demo.d1赋99后, demo.d2中的值是99.0(15)函数main()的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空(07.9)#include <stdio.h>struct node{ int data;struct node *next;};int min(struct node *first)/*指针first为链表头指针*/{ strct node *p; int m;p=first->next; m=p->data;p=p->next;for(;p!=NULL;p=_[20]_______)if(p->data<m) m=p->data;return m;)(16)以下结构体类型说明和变量定义中正确的是(08.4)A)typedef struct B)struct REC;{int n; char c;}REC; {int n; char c;}; REC t1,t2; REC t1,t2;C)typedef struct REC ; D)struct{int n=0; char c=‟A‟;}t1,t2; {int n;char c;}REC t1,t2;(17) 有以程序#include <stdio.h>#include <string.h>typedef struct { char name[9]; char sex; float score[2]; } STU;void 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.score[i]=b.score[i];}main(){ STU c={“Qian”,‟f‟,95.0,92.0};f(c); printf(“%s,%c,%2.0f,%2.0f\n”,,c.sex,c.s core[0],c.score[1]);}程序的运行结果是(08.4)A)Qian,f,95,92 B) Qian,m,85,90C) Zhao,f,95,92 D) Zhao,m,85,90(18)以下程序中函数fun的功能是:统计person 所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并做为函数值返回。
请填空:(08.4)#include<stdio.h>#define N 3typedef struct{int num;char nam[10]; char sex;}SS;int fun(SS person[]){int i,n=0;for(i=0;i<N;i++)if(【14】==‟M‟ ) n++;return n;}main(){SSW[N]={{1,”AA”,‟F‟},{2,”BB”,‟M‟},{3,”CC”,‟M‟} }; int n;n=fun(W); printf(“n=%d\n”,n);}(19) 有以下程序#include <stdio.h>#include <stdlib.h>int fun(int n){ int *p;p=(int*)malloc(sizeof(int));*p=n; return *p;}main(){ int a;a = fun(10); printf("%d\n",a+fun(10));}程序的运行结果是(08.9)A)0 B)10 C)20 D)出错(20) 有以下程序#include <stdio.h>main(){struct STU { char name[9]; char sex; double score[ 2];};struct STU a={"Zhao",'m',85.0,90.0},b={"Qian",'f',95.0,92.0};b=a;printf("%s,%c,%2.0f,%2.0f\n", , b.sex, b.score [0], b.score[1]);}程序的运行结果是(08.9)(22)有以下程序#include <stdio.h>struct ord{ int x,y;} dt[2]={1,2,3,4};main(){ struct ord *p=dt;printf (“%d,”,++p->x);printf(“%d\n”,++p->y);}程序的运行结果是(09.4)A)1,2 B)2,3 C)3,4 D)4,1(23)下列程序的运行结果为【】(09.4)#include <stdio.h>#include <string.h>struct A{int a;char b[10];double c;};void f (struct A *t);main(){struct A a={1001,”ZhangDa”,1098,0};f(&a);printf(“&d,&s,&6.1f\n”,a.a,a.b,a.c);}void f(struct A *t){strcpy(t->b,”ChangRong”); }(24)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空(09.4)#include <stdio.h>struct node{int data; struct node *next;};typedef struct node NODETYPE;main(){NODETYPE a,b,c,*h,*p;a. data=10;b.data=20;c.data=30;h=&a;a. next=&b;b.next=&c;c.next=‟\0‟;p=h;while(p){printf(“%d”,p->data);【】;}}(25).下列结构体的定义语句中,错误的是(09.9 )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;(26).有以下程序#include <stdio.h>#include <string.h>Struct A{ int a;char b[10];double c;Struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098,C};a=f(a); printf(“%d,%s,%6.1f\n”,a,a,a,b,a,c);}}struct A f(struct A t){ t.a=1002;strcpy(t.b,”ChongRong”);t,c=1202;return t;}程序运行后的输出结果是(09.9)A) 1001,ZhangDa,1098.0B) 1002,ZhangDa,1202.0C)1001,ChangRong,1098.0D) 1002,ChangRong,1202.0(27). 设有定义:struct person{ int ID ;char name[12];}p;请将scanf(“%d”,______);语句补充完整,使其能够为结构体变量的成员正确读入数据(09.9) (28). 有以下程序#include <stdio.h>typedef struct{ int num;double s;}REC;void funl( REC x) {x.num=23;x,s=88.5;}main(){REC a={16,90.0};funl(a);printf(“%d\n”,a,num);}程序运行后的输出结果是_______(09.9)(29)设有定义:struct complex{ int real,unreal;} data1={1,8},data2;则以下赋值语句中错误的是(10.3)A)data2=data1;B)data2={2,6};C)data2.real=data1.real;D)data2.real=data1.unreal;(30)有以下程序#include <stdio.h>#include <string.h>struct A{ int a; char b[10]; double c;};void f(struct A t);main(){ struct A a={1001,"ZhangDa",1098.0};f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);}void f(struct A t){ t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;} 程序运行后的输出结果是(10.3)A)1001,zhangDa,1098.0B)1002,changRong,1202.0C)1001,ehangRong,1098.OD)1002,ZhangDa,1202.0(31)有以下定义和语句struct workers{int num;char name[20];char c;struct{int day; int month; int year;}s;};struct workers w,*pw;pw=&w;能给w中year成员赋1980的语句是(10.3)A)*pw.year=198O;B)w.year=1980;C)pw->year=1980;D)w.s.year=1980;十一.位运算(1)若变量已正确定义,则以下语句的输出结果是(06.9)。