文档库 最新最全的文档下载
当前位置:文档库 › 结构体与共用体习题

结构体与共用体习题

结构体与共用体习题
结构体与共用体习题

第十一章 结构体与共用体

1、 填空

(1) 为了建立如图所示的存储结构(即每个结点含两个域,data 是数据域,next 是指向结点的指针域),请填空。

Struct link

{char data;

;

}node;

(2) 以下程序的输出结果是 。

main()

{struct cmplx{int x;int y;} cnum[2]={1,3,2,7};

printf(“%d\n ”,cnum[0].y/cnum[0].x*cnum[1].x);}

2、 选择

(1) 根据以下定义,能输出字母M 的语句是

A.printf(“%c\n ”,class[3].name);

B.printf(“%c\n ”,class[3].name[1]);

C.printf(“%c\n ”,class[2].name[1]);

D.printf(“%c\n ”,class[2].name[0]); struct person { char name[9];int age;};

struct person class[10]={ “John ”,17,

“Paul ”,19,

“Mary ”,18,

“Adam ”,16,};

(2) 对整个结构能够进行的操作是 。

A. 对结构进行赋值

data next

B.对结构进行存取

C.对结构进行运算

D.对结构进行&操作

(3)不是结构类型的特点的选项为。

A.结构体变量可以有不同类型的成员

B.结构体中的成员都占有存储空间

C.结构体变量既可以做函数参数,又可以从函数中返回

D.结构体变量的成员既可以读又可以写

3、判断

(1)能在一个存储区内处理不同的类型的数据叫结构。()

(2)在编译时对结构类型不分配空间,只能对变量分配空间。()

(3)结构一旦定义,系统就给它分配所需的内存单元。()

4、程序设计

(1)设有以下结构类型说明:

struct stud

{char num[5],name[10];

int s[4];

double ave;

}

请编写:

<1>readrec把30名学生的学号、姓名、四项成绩及平均分放在一个结构体数组中,学生的学号、姓名和四项成绩由键盘输入,然后计算出平均分放在结构提对应的域中。

<2>函数writerec输出30名学生的记录。

<3>main函数调用readrec函数和writerec函数,实现全部程序功能。

(2)编写一个C程序,要求定义一个有关日期的结构体类型变量(包括年、月、日),从键盘为该变量中的各成员输入数据,然后再将输入的日期显示输出。

(3)建立50名学生信息结构,每个学生的信息包括:学号、姓名、出生年月日及平均成绩,要求从键盘上输入50名学生的信息,然后按一行显示一名学生的信息的方式显示50名学生的信息。

(4)建立10名学生的结构,其中包括学生的姓名、性别、学号及五门课的成绩。编一个程序输入10名学生的信息并输出。

结构体练习题

结构体练习题: 第1 题:计算日期的差值 (1)编写一函数,计算两个日期之间的时间差,并将其值返回。 日期以年、月、日表示。 “时间差”以天数表示。 注意考虑日期之间的闰年。 函数的输入参数为日期1和日期2, 函数的返回值为时间差,单位为天数。 (2)编写一程序,在主函数中输入两个日期,调用上述函数计算两个日期之间的时间差,并将结果输出。 为了计算简便,假设用户输入的日期1总是早于日期2。 参考代码: #include struct date { int year; int month; int day; }; int isLeap(int year); int dif(struct date a, struct date b); void main() { struct date a, b; printf("请输入日期1(空格分隔,年月日):\n"); scanf("%d%d%d", &a.year, &a.month, &a.day); printf("请输入日期2(空格分隔,年月日,晚于日期1):\n"); scanf("%d%d%d", &b.year, &b.month, &b.day); printf("相差天数为:"); printf(" %d 天\n", dif(a, b)); } int isLeap(int year) //判断一个年份是否是闰年的函数 { if(year%400==0 || (year%4==0 && year%100!=0)) return 1; else return 0; } int dif(struct date a, struct date b) { int i; long day=0, day1=0, day2=0; int d[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,3 1,31,30,31,30,31}}; // day变量为年份a到年份b前一年的年份总天数 for(i=a.year; i

结构体与共用体

试卷编号:825 所属语言:C语言 试卷方案:结构体与共用体 试卷总分:90分 共有题型:5种 ━━━━━━━━━━━━━━ 一、填空共5题(共计10分) ━━━━━━━━━━━━━━ 第1题(2.0分)题号:205 结构体是不同数据类型的数据集合,作为数据类型, 必须先说明结构体【1】,再说明结构体变量. 答案: =======(答案1)======= 类型 第2题(2.0分)题号:208 将函数funl 的入口地址赋给指针变量p的语句是【1】. 答案: =======(答案1)======= p=funl; 第3题(2.0分)题号:232 设有以下结构类型说明和变量定义,且sizeof(int)=2,则变量a在内存所占字节数是【1】. struct stud { char num[6]; int s[4]; double ave; } a,*p; 答案: =======(答案1)======= 22

第4题(2.0分)题号:345 若在程序中用到"strlen()"函数时,应在程序开头写上包含命令# include "【1】". 答案: =======(答案1)======= string.h 第5题(2.0分)题号:803 预处理命令行都必须以【1】号开始. 答案: =======(答案1)======= # ━━━━━━━━━━━━━━━━━ 二、单项选择共20题(共计40分) ━━━━━━━━━━━━━━━━━ 第1题(2.0分)题号:464 以下描述中,正确的是()。 A:预处理是指完成宏替换和文件包含中指定的文件的调用 B:预处理指令只能位于C源文件的开始 C:C源程序中凡是行首以#标识的控制行都是预处理指令 D:预处理就是完成C编译程序对C源程序第一遍扫描,为编译词法和语法分析作准备答案:C 第2题(2.0分)题号:472 下列程序运行结果为: #define P 3 #define S(a) P*a*a main() {int ar; ar=S(3+5); printf("\n%d",ar); } A:192 B:29 C:27

指针测试题

C++测试(指针) 学号姓名成绩 一、选择题(每题1.5分,共24分) 1.语句int a=10,*point=&a;其值不为地址。 A. point B. &a C. &point D. *point 2.若p为指针变量,y为变量,则y = *p++;的含义是 A.y=*p;p++ B.y=(*p)++ C.y=p;p++ D.p++;y=*p 3.语句char str[]=?visual C++?;char *p=str;则p的值为 A. ?visual C++? B.str的首地址 C. \n D.?v? 4.设有说明语句char *s[]={?student?,?Teacher?,?Father?,?Month?}, *ps=s[2];执行语句:cout<<*s[1]<<’,’<next=&b; D.(*p).next=q; 9.下面正确的语句是 A. int a[3][4],(*p)[4]; p=a; B. int a[3][4],*p[4]; p=a; C. int a[3][4],*p; p=a; D. int a[3][4],**p;*p=a; 10.下面不正确的语句是 A.float *p;p=new float[3]; B. int *p;p=new int[3](1,2,3); C. float *p;p=new float(3); D. int (*p)[4];p=new int[3][4]; 11.设有函数定义:int f1(void){return 100,150;}调用函数f1()时, A.函数返回值100 B. 函数返回值150 C. 函数返回二个值100和150 D. 语句return 100,150;语法错. 12.设有语句:int fun(char *,int &);char str[100];int k;则对函数fun的正确的调用形式是 A.fun(str,&k) B.fun(str,k) C.fun(str[100],k) D.fun(str, &k) 13.数组作为函数的形参时,把数组名作为实参,传递给函数的是 A.该数组的首地址 B. 该数组的元素个数 C. 该数组中的各元素值 D. 该数组的大小 14.执行以下语句序列:则 enum {Sun,Mon,Tue,Wed,Thu,Fri,Sat}c1,c2; //A

结构体练习题

算并输出每个人的学号和平均成绩。 2.已知链表结点结构如下,假设动态链表已经建立,请编写删除给定学号的结点的函 数。(只编写删除子函数即可) 3.编写函数实现动态链表的建立。链表结点结构如下,要求在主函数中将你所建立的链 表输出到屏幕上。 4.有10个学生,每个学生的信息包括学号、姓名、3门课的成绩,从键盘输入10个学 生数据存入结构体数组中,要求输出个人总分最高的学生的信息(包括学号、姓名、3门课成绩、总分)。 5.链表的结点数据类型如下: struct node{ int data; struct node *next; }; 链表的建立和输出函数如下,编写将第i个结点删除的函数,并完善主函数,调试运行整个程序。 struct node *creat() { int x; struct node *h,*s,*r; h=(struct node *)malloc(sizeof(struct node)); r=h; scanf("%d",&x); while(x!=-1) { s=(struct node*)malloc(sizeof(struct node)); s->data=x; r->next=s; r=s; scanf("%d",&x); } r->next=NULL; return h; } void print(struct node *h) //打印函数 { struct node *p; p=h->next; if(p==NULL) printf("list is empty!"); else { while(p!=NULL) { printf("%4d",p->data); p=p->next; } } }

C语言练习题(带答案)

一、单项选择题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 11.如果int a=3,b=4;则条件表达式"a

(完整word版)C语言程序设计基础-结构体习题

1、把一个学生的信息(包括学号、姓名、性别、住址)放在一个结构体变量中,然后输出这个学生的信息。 #include int main() {struct Student { long int num; char name[20]; char sex; char addr[20]; }a={10101,“Li Lin”,‘M’, “123 Beijing Road”}; printf("NO.:%ld\nname:%s\n sex:%c\naddress:%s\n",a.num,https://www.wendangku.net/doc/9a1701877.html,,a.sex,a.addr); return 0; } 2、输入两个学生的学号、姓名和成绩,输出成绩较高学生的学号、姓名和成绩 #include int main() { struct Student { int num; char name[20]; float score; }student1,student2; scanf("%d%s%f",&student1.num,https://www.wendangku.net/doc/9a1701877.html,, &student1.score); scanf(“%d%s%f”,&student2.num,https://www.wendangku.net/doc/9a1701877.html,, &student2.score); printf("The higher score is:\n"); if (student1.score>student2.score) printf("%d %s %6.2f\n",student1.num,https://www.wendangku.net/doc/9a1701877.html,, student1.score); else if (student1.score #include struct Person { char name[20];

结构体与共用体

第十章结构体与共用体 一、选择题 1.在说明一个结构体变量时系统分配给它的存储空间是。(0级) A)该结构体中第一个成员所需存储空间 B)该结构体中最后一个成员所需存储空间 C)该结构体中占用最大存储空间的成员所需存储空间 D)该结构体中所有成员所需存储空间的总和 2.若有以下说明和语句: struct worker { int no; char ﹡name; }work, ﹡p=&work; 则以下引用方式不正确的是。(1级) A) work.no B) (﹡p).no C) p->no D)work->no 3.有如下定义: struct date { int year, month, day; }; struct worklist { char name[20]; char sex; struct date birthday; }person; 对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。 (1级) A) year=1958 B) birthday.year=1958 C) person.birthday.year=1958 D) person.year=1958 4.以下对结构体类型变量的定义中不正确的是。(1级) A)#define STUDENT struct student B) struct student STUDENT { int num; { int num; float age; float age; }std1; }std1; C) struct D) struct { int num; { int num; float age; float age; } student; }std1; struct student std1; 5.设有以下说明语句 struct stu { int a; float b; }stutype; 则下面的叙述不正确的是。(1级) A)struct是结构体类型的关键字 B)struct stu是用户定义的结构体类型 C)stutype是用户定义的结构体类型名 D)a和b都是结构体成员名 6.C语言结构体类型变量在程序执行期间。(0级) A)所有成员一直驻留在内存中 B)只有一个成员主留在内存中 C)部分成员驻留在内存中

C语言结构体习题及答案

C语言结构体习题及答 案 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

第9章结构体 1.定义以下结构体类型 struct s { int a; char b; float f; }; 则语句printf("%d",sizeof(struct s))的输出结果为【】。 A) 3 B) 7 C) 6 D) 4 2.当定义一个结构体变量时,系统为它分配的内存空间是【】A)结构中一个成员所需的内存容量 B)结构中第一个成员所需的内存容量 C)结构体中占内存容量最大者所需的容量 D)结构中各成员所需内存容量之和 3.定义以下结构体类型 struct s { int x; float f; }a[3]; 语句printf("%d",sizeof(a))的输出结果为【】 A) 4 B) 12 C) 18 D) 6

7.定义以下结构体类型 struct student { char name[10]; int score[50]; float average; }stud1; 则stud1占用内存的字节数是【】。 A) 64 B) 114 C) 228 D) 7 9、设有一结构体类型变量定义如下: struct date { int year; int month; int day; }; struct worklist { char name[20]; char sex; struct date birthday; } person; 若对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。。。。

练习题-第十章 结构体与共用体(有答案)

一、填空题 1.若有如下结构体定义: struct student { int num; float age; char sex; }stud; 则stud所占的内存空间是9 字节。 2.已有定义和语句: union data { int i; char c; float f; }a,*p; p=a; 则对a中成员c的正确访问形式可以是 a.c 或: p->c或:(*p).c。(只需 写出一种) 二、单项选择题: 1.若有下列定义: struct b { float a[5]; double c; int d;}x; 则变量x在内存中所占的字节为下列哪一个:( C ) A.6 B. 10 C. 30 D. 14 2.设有以下说明语句,则下面的叙述不正确的是( C ) struct stu { int a; float b; } stutype; A. struct 是结构体类型的关键字。 B. struct stu 是用户定义的结构体类型。 C. stutype是用户定义的结构体类型名。 D. a和b都是结构体成员名。 3.下面程序的运行结果是( ) #include main( ) { struct date { int year, month, day;

}today; printf(“%d\n”,sizeof(struct date)); } A. 6 B. 8 C. 10 D. 12 4.设有以下说明语句,则下面的叙述正确的是( B ) typedef struct { int a; float b; } stutype; A. stutype是结构体变量名。 B. stutype 是结构体类型名。 C. struct是结构体类型名。 D. typedef struct是结构体类型名。 三、填程序 1.结构数组中存有三人的姓名和年龄,以下程序输出三人中最年长者的姓名和年龄。请填 空。 static struct man { char name[20]; int age; }person[ ]={{“LiMing”,18},{“WangHua”,19},{“ZhangPing”,20}}; main( ) { struct man *p,*q; int old=0; p=person; for(; p age){ q=p; old=p->age ;} printf(“%s %d”, q->name,q->age ); }

C指针函数习题

C++指针函数习题 一、选择题 1.以下程序的运行结果是()。 sub(int x, int y, int *z) { *z=y-x; } void main() { int a,b; sub(10,5,&a); sub(7,a,&b); cout< #include<>

结构体习题

结构体习题 49、以下程序运行结果是______。 #include typedefstruct student{ char name[10]; longsno; float score; }STU; main() { STU a={"Zhangsan",2001,95},b={"Shangxian",2002,90}, c={"Anhua",2003,95},d,*p=&d; d=a; if(strcmp(https://www.wendangku.net/doc/9a1701877.html,,https://www.wendangku.net/doc/9a1701877.html,)>0) d=b; if(strcmp(https://www.wendangku.net/doc/9a1701877.html,,https://www.wendangku.net/doc/9a1701877.html,)>0) d=c; printf("%ld %s\n",d.sno,p->name); } 标准答案为:2002 Shangxian 1. 填空题 人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中的编号为空串。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! #include #include #define N 8 typedefstruct { charnum[10]; intyear,month,day ; }STU; /**********found**********/ STU fun(STU *std, char *num) { int i; STU a={"",9999,99,99}; for (i=0; i

结构体和共用体习题

习题六 1. 从下列四个选项中选择一个正确的填入括号中。 (1)在说明一个结构体变量时系统分配给它的存储空间是(D)。 A该结构体中第一个成员所需存储空间 B该结构体中最后一个成员所需存储空间 C该结构体中占用最大存储空间的成员所需存储空间 D该结构体中所有成员所需存储空间的总和 (2)在说明一个共用体变量时系统分配给它的存储空间是(D )。 A该共用体中第一个成员所需存储空间 B该共用体中最后一个成员所需存储空间 C该共用体中占用最大存储空间的成员所需存储空间 D该共用体中所有成员所需存储空间的总和 (3)共用体类型在任何给定时刻, (B)。 A所有成员一直驻留在内存中 B只有一个成员驻留在内存中 C部分成员驻留在内存中 D没有成员驻留在内存中 (4)以下定义结构体类型的变量st1,其中不正确的是(A ) A typedef stuct student { int num; int age; }STD; STD st1; B struct student { int num,age; }st1; C struct { int num; float age; }st1; D struct student { int num; int age; }; struct student st1; (5)已知职工记录描述为: struct workers {

int no; char name[20]; char sex; struct { int day; int month; int year; }birth; }; struct workers w; 设变量w中的”生日”应是”1993年10月25日”,下列对”生日”的正确赋值方式是(C)。 A day=25; month=10; year=1993; B w.day=25w.month=10; w.year=1993; C w.birth.day=25; w.birth.month=10; w.birth.year=1993; D birth.day=25; birth.month=10; birth.year=1993; (6)设有如下定义: struct sk { int a; float b; }data,*p; 若有p=&data;则对data中的a成员的正确引用是(B)。 A (*p).data.a B (*p).a C p->data.a D p.data.a 2.填空 (1)若有以下说明和定义且数组w和变量k已正确赋值,则对w数组中第k个元素中各成员的正确引用形式是w[k-1].b、w[k-1].c 、w[k-1].d 。 struct aa { int b; char c; double d; }; struct aa w[10]; int k=3; (2)若有以下说明和定义,则对x.b成员的另外两种引用形式是x->b-> 和p.b. 。 struct st { int a; struct st *b; }*p, x;

C语言习题及答案(第九章)

9-3编写程序,使用结构体类型,输出一年十二个月的英文名称及相应天数。 解:#include "stdio.h" struct date { char month[10] ; int daynumber ; } main() { int i ; struct date a[12]={{"January",31},{"February",29},{"March",31},{"Aprial",30},{ "May",31},{"June",30},{"july",31},{"August",31},{"September",30}, {"October",31},{"November",30},{"December",31}} ; for(i=0;i<12;i++); printf("%d 月:%s %d\n",i+1,a[i].month,a[i].daynumber) ; } 思考:如何对结构体变量进行初始化?对结构体变量的引用为何要体现为分量(或成员)的引用? 9-4 编写程序求空间任一点到原点的距离,点用结构体描述。并请考虑求空间中任意两点的距离的程序。 解:#include "stdio.h" #include "math.h" struct point { float x ; float y ; float z ; } main() { double d1,d2,d ; struct point p1,p2 ; printf("请输入第一个点的坐标:");

scanf("%f,%f,%f",&p1.x,&p1.y,&p1.z); printf("请输入第二个点的坐标:"); scanf("%f,%f,%f",&p2.x,&p2.y,&p2.z); d1=sqrt(p1.x*p1.x+p1.y*p1.y+p1.z*p1.z); d2=sqrt(p2.x*p2.x+p2.y*p2.y+p2.z*p2.z); d=sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)+(p2.z-p1.z)*( p2.z-p1.z)); printf("第一个点到原点的距离:%f\n",d1); printf("第二个点到原点的距离:%f\n",d2); printf("两点间的距离:%f\n",d); } 9-5 编写输入、输出10个朋友数据的通讯录程序,每个朋友数据包括姓名、地址、邮编、电话、传呼、手机等数据。 解:#include "stdio.h" struct AddressBook { char name[10] ; char address[30] ; char mailnumber[7] ; char telphone[12] ; char byphone[16] ; char movephone[1] ; } main() { int i ; struct AddressBook fd[10] ; for(i=0;i<10;i++) { printf("请输入第%d个朋友的信息:\n",i+1); printf("姓名:"); scanf("%s",&fd[i].name) ; printf("地址:");

C语言结构体习题及答案

第9章结构体 1.定义以下结构体类型 struct s { int a; char b; float f; }; 则语句printf("%d",sizeof(struct s))的输出结果为【】。 A) 3 B) 7 C) 6 D) 4 # 2.当定义一个结构体变量时,系统为它分配的内存空间是【】 A)结构中一个成员所需的内存容量 B)结构中第一个成员所需的内存容量 C)结构体中占内存容量最大者所需的容量 D)结构中各成员所需内存容量之和 3.定义以下结构体类型 struct s { int x; float f; }a[3]; < 语句printf("%d",sizeof(a))的输出结果为【】 A) 4 B) 12 C) 18 D) 6 7.定义以下结构体类型 struct student { char name[10]; int score[50]; float average; }stud1; 则stud1占用内存的字节数是【】。 ( A) 64 B) 114 C) 228 D) 7 9、设有一结构体类型变量定义如下: struct date { int year; int month; int day; }; struct worklist { char name[20]; char sex; $

struct date birthday; } person; 若对结构体变量person的出生年份进行赋值时,下面正确的赋值语句是。。。。 A. year=1976 B. =1976 C. D. =1976 1、若程序中有以下的说明和定义: struct abc { int x;char y; } 花括号后少了分号。 struct abc s1,s2; 则会发生的情况是______。 A) 编译时错B) 程序将顺序编译、连接、执行C) 能顺序通过编译、连接、但不能执行D) 能顺序通过编译、但连接出错

C语言结构体和共用体实验报告

实验九参考程序 实验 9- 1 /**************************************************************** * 实验 9.1 * * ( 1 )为某商店的商品设计合适的结构体 (PRODUCT) 。每一种商品包含编号 (number) 、 * 名称 (name) 、价格 (price) 、折扣 (discount)4 项信息,根据表 9-1 ,为这些信 息选择合适的数据类型。 * (2)建立 2个函数,以实现对商品的操作。 input 函数实现商品的输入; * display 函数显示商品信息。要求这 2个函数都以商品的结构体 (PRODUCT) 指针为 参数。 * (3 )在主函数中为商品键盘定义一个结构体变量 (keyboard) ,利用 input 函数实现键 盘信息的输入; * 定义一个结构体数组 (elec_device[3]) ,利用 input 函数实现冰箱、 空调、电视 信息的输入; * 最后利用 display 函数显示 4 种商品的信息。 * * 表 9-1 #include typedef struct _PRODUCT int iNumber; char strName[32]; float fPrice; float fDiscount; * 编号 名称 价格 折扣 *1010 键盘 89.50 0.85 *1021 冰箱 1024.00 0.95 *1022 空调 2058.50 0.90 *1023 电视 3001.88 0.95 *************************************************************** */

实验6、指针和结构体(有答案)

实验6、指针和结构体 【实验目的】 1.掌握地址和指针的基本概念,学会定义和使用指针变量; 2.熟悉指针与数组之间的关系,能正确使用数组的指针和指向数组的指针变量; 3.掌握指针形参的作用,熟练掌握编写指针形参的函数; 4.掌握结构体类型变量和结构体指针的定义及结构体成员的引用方式; 5.掌握结构体数组的定义及应用方法; 6.掌握链表的定义及操作,并能熟练编写链表应用程序。 【实验内容】 1、程序填空 给定程序中函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。 例如,形参s所指字符串为baawrskjghzlicda,执行后p所指字符数组中的字符串应为aachjlsw。 在以下程序的下划线处填入正确的内容并把下划线删除,使程序得出正确结果。不得增行或删行,也不得更改程序结构。 程序填空如下: #include void fun(char *s,char *p) { int i,j,n,x,t; n=0; for(i=0;s[i]!=’\0’;i++) n++; for(i=1;i

结构体、共用体、枚举

最终排名 Time Limit: 1000MS Memory limit: 65536K 题目描述 第四届山东理工大学ACM网络编程擂台赛比赛完后需要产生一个最终排名,排名按照题数多少来决定。但是有太多的队伍参与,手动计算排名已经不能满足比赛的需求。现在有一份名单记录各个队伍的ID和做出的题目数,需要你写一个程序,产生最终的排名。 为了简化题目,这里的排名规则为:做出题目数量多的队伍排在前面,如果题数相等,保持输入时的相对顺序不要改变。 输入 第一行包含一个正整数T( 1≤T≤15),表示有T组测试数据。每组数据第一行有一个正整数N(1< N≤10000),表示队伍数量。接下来N 行包含两个整数,1≤ID≤10^7, 0≤M≤100。ID为队伍的编号,M为做出的题数。 输出 每组数据输出包含N行,第i行有两个整数,ID和M表示排在第i位的队伍的ID和做出的题数。 示例输入 1 8 1 2 16 3 11 2 20 3 3 5 26 4 7 1 22 4 示例输出 3 5 26 4 22 4

16 3 20 3 1 2 11 2 7 1

#include void main() { struct team { int ID; int M; }t[10000],T; int N,n,i,j,k,time=0; scanf("%d",&N); while(time!=N) { scanf("%d",&n); for(i=0;i

结构体与共用体相关题目练习

结构体与共用体 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)6 main() { 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)8 struct 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)18 10.设有如下定义: 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.a 11.下面程序的输出结果为

相关文档