当前位置:文档之家› 结构体和共用体习题

结构体和共用体习题

习题六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、aB (*p)、aC p->data、aD p、data、a2、填空(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;p=&x;3、阅读下面程序,写出运行结果。

(1),ffffffcc#include <stdio、h>main( ){struct byte{int x;char y;};unionint i[2];long j;char m[2];struct byte d;}r,*s=&r;s->j=0x98765432;printf("%x,%x\n",s->d、x,s->d、y);}(2)结果:1,miniputer#include <stdio、h>struct tree{int x;char *s;}t;func(struct tree t ){t、x=10;t、s="puter";return(0);}main(){t、x=1;t、s="miniputer";func(t);printf("%d,%s\n",t、x,t、s);}#include <stdio、h>、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、结果:、0,<null>struct tree{int x;char *s;}t;func(struct tree t ){t、x=10;t、s="puter";return(0);}main(){//t、x=1;//t、s="miniputer";func(t);printf("%d,%s\n",t、x,t、s);}(3)结果:34,12#include <stdio、h>main()union{char s[2];int i;}a;a、i=0x1234;printf("%x,%x\n",a、s[0],a、s[1]);}(4)结果:1,2,30#include <stdio、h>struct st{int x;int *y;}*p;int s[]={10,20,30,40};struct st a[]={1,&s[0],2,&s[1],3,&s[2],4,&s[3]};main(){p=a;printf("%d,",p->x);printf("%d,",(++p)->x);printf("%d,",*(++p)->y);}(5)结果:8typedef union{long a[2];int b;char c[8];}TY;TY our;main(){printf(“%d\n”,sizeof(our));}4、编写程序输入一个学生记录, 记录包含学号、姓名、性别与成绩信息,从键盘输入这些数据,并且显示出来。

#include<stdio、h>struct student{int no;char name[20];char sex[2];float score;}stu1;main(){printf("*********请输入该学生得学号、姓名、性别与成绩:\n");scanf("%d %s %s %f",&stu1、no,stu1、name,stu1、sex,&stu1、score);printf("学号:%d\n 姓名:%s\n 性别:%s\n 成绩:%f\n",stu1、no,stu1、name,stu1、sex,stu1、score);}/*5、有若干运动员,每个运动员包括编号、姓名、性别、年龄、身高、体重。

如果性别为男,参赛项目为长跑与登山;如果性别为女,参赛项目为短跑、跳绳。

用一个函数输入运动员信息,用另一个函数输出运动员得信息,再建立一个函数求所有参赛运动员每个项目得平均成绩。

*/#include<stdio、h>#include<string、h>char items1[2]={'长跑','登山'};char items2[2]={'短跑','跳绳'};void InputAthInfo();void outputAthInfo();void items_Avg();struct athlete{int num;char name[10];char sex;int age;float height;float weight;char items[2];}ath[2];void InputAthInfo(){int i;for( i=0;i<2;i++){printf("请输入第%d个运动员得信息:",i);scanf("编号:%d\n 姓名:%s\n 性别: %c\n 年龄:%d\n 身高: %f\n 体重:%f\n ",&ath[i]、num ,ath[i]、name,ath[i]、sex,&ath[i]、age,&ath[i]、height,&ath[i]、weight);}}void outputAthInfo(){ int j;printf("编号\t 姓名\t 性别\t 年龄\t 身高\t 体重\t 项目\n" );for(j=0;j<2;j++){if(ath[j]、sex=='m'||ath[j]、sex=='M')strcpy(ath[j]、items ,items1);elsestrcpy(ath[j]、items,items2);//printf("第%d个运动员得信息就是:",j)printf("%d\t %s\t %c\ t%d\t %f\t %f\t %s\t %s\t",ath[j]、num,ath[j]、name,ath[j]、sex,ath[j]、age,ath[j]、height,ath[j]、weight,ath[j]、items[0],ath[j]、items[1]);}}void items_Avg(){int i;float sum1=0,sum2=0,avg1,avg2;for(i=0;i<2;i++){sum1+=ath[i]、items[0];avg1=sum1/2;sum2+=ath[i]、items[1];avg2=sum2/2;}printf("%-3f%-3f",avg1,avg2);}void main(){void InputAthInfo();void outputAthInfo();void items_Avg();}6、一个班有30名学生,每个学生得数据包括学号、姓名、性别、及2门课得成绩,现从键盘上输入这些数据,并且要求:(1) 输出每个学生2门课得平均分。

(2) 输出每门课得全班平均分。

(3) 输出姓名为”zhangliang”得学生得2门课得成绩。

/*6、一个班有30名学生,每个学生得数据包括学号、姓名、性别、及2门课得成绩,现从键盘上输入这些数据,并且要求:(1) 输出每个学生2门课得平均分。

(2) 输出每门课得全班平均分。

(3) 输出姓名为”zhangliang”得学生得2门课得成绩。

*/#include<stdio、h>#include<string、h>#define N 2void Input_Info();void score_avg();void everyStu_avgScore();void score_zhangliang();void main(){Input_Info();score_avg();everyStu_avgScore();score_zhangliang();}struct student{int no;char name[20];char sex[2];float score1;float score2;}stu[N];void Input_Info(){int i;printf("*************输入该班所有人得信息:(学号、姓名、性别、数学成绩、英语成绩,并用空格隔开)\n");//printf("学号 \t 姓名\t 性别\t 数学 \t 英语");for(i=0;i<N;i++){printf("请输入第%d个人得信息:\n",i);scanf("%d %s %s %f %f",&stu[i]、no,stu[i]、name,stu[i]、sex,&stu[i]、score1,&stu[i]、score2);}}void everyStu_avgScore()//(1) 输出每个学生2门课得平均分。

相关主题