内容正文:
9.6节:联合体
一、单项选择题
1.联合体最核心的特征是( )
A. 所有成员拥有独立内存空间 B. 全部成员共享同一块起始内存
C. 成员必须是相同数据类型 D. 占用内存等于所有成员字节之和
2.现有定义union Data{short a; char b; float c;};,该联合体变量占用内存字节数由( )决定
A. short 成员 a,占 2 字节 B. char 成员 b,占 1 字节
C. float 成员 c,占 4 字节 D. 4+1+4=9 字节
3.在C语言中,定义联合体类型必须使用的关键字是()
A. struct B. enum C. union D. typedef
4.关于联合体和结构体在内存分配上的主要区别,下列说法正确的是()
A. 结构体成员共享内存,联合体成员各自占用独立内存
B. 联合体成员共享同一块内存,结构体成员各自占用独立内存
C. 两者都是成员共享同一块内存
D. 两者都是成员各自占用独立内存,没有区别
5.设有定义 union U { int x; char y[4]; } u;。若执行 u.y[0]=1; u.y[1]=0; u.y[2]=0; u.y[3]=0;,在小端模式下,u.x 的值是()
A. 1 B. 16777216 C. 0 D. 不确定
6.联合体变量定义的合法形式是()
A. union { int a; float b; }
B. union data { int a; float b; }; data x;
C. union data { int a; float b; } x;
D. data { int a; float b; } x;
7.以下关于联合体赋值的描述,错误的是()
A. 可以给联合体的整型成员赋值
B. 可以给联合体的字符成员赋值
C. 可以将一个联合体变量直接赋值给另一个同类型的联合体变量
D. 可以同时给联合体的两个不同成员赋值并让它们都保持有效
8.使用指向联合体的指针访问成员时,应使用的运算符是()
A. . B. -> C. * D. &
9.设有 union Data { int k; char c; } a;,执行 a.k = 256; 后,a.c 的值是()(假设小端模式)
A. 256 B. 1 C. 0 D. -1
10.若定义 typedef union { long x[2]; int y[4]; char z[8]; } MY_TYPE;,则 MY_TYPE 是()
A. 一个联合体变量 B. 一个联合体类型名
C. 一个结构体类型名 D. 一个宏定义
二、填空题。
1.在C语言中,无论联合体包含多少个成员,所有成员的______地址都是相同的,且都等于该联合体变量的首地址。
2.在任意时刻,联合体变量中只有______个成员是有效的(即被赋值的),对其中一个成员赋值会覆盖其他成员的数据。
3.对于联合体变量 u 及其成员 m,表达式 &u 的值与表达式 ______ 的值在数值上是相等的。
4.当将联合体变量作为参数传递给函数时,默认采用______传递的方式,即在函数内部修改形参不会影响实参的值。
5.在定义联合体类型时,右花括号 } 后面必须紧跟一个______符号,表示类型定义的结束。
三、阅读程序题。
1.写出下列程序段的输出结果:________________。
#include <stdio.h>
union Test {
int a;
char b;
};
int main() {
union Test t;
t.a = 10;
t.b = 20;
printf("%d", t.a);
return 0;
}
2.写出下列程序段的输出结果:________________。
#include <stdio.h>
union Data {
int i;
char c[4];
};
int main() {
union Data d;
d.c[0] = 1;
d.c[1] = 0;
d.c[2] = 0;
d.c[3] = 0;
printf("%d", d.i);
return 0;
}
3.写出下列程序段的输出结果:________________。
#include <stdio.h>
union Data {
int i;
char c[4];
};
int main() {
union Data d;
d.c[0] = 0;
d.c[1] = 1;
d.c[2] = 0;
d.c[3] = 0;
printf("%d", d.i);
return 0;
}
4.写出下列程序段的输出结果:________________。
#include <stdio.h>
union Mix {
int x;
short y;
};
int main() {
union Mix m;
m.x = 0x12345678;
m.y = 0xABCD;
printf("%x", m.x);
return 0;
}
5.写出下列程序段的输出结果:________________。
#include <stdio.h>
struct S {
int a;
union {
char c;
int b;
} u;
};
int main() {
struct S s;
s.a = 100;
s.u.b = 200;
printf("%d %d", s.a, s.u.c);
return 0;
}
6.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U { int i; char c; };
int main() {
union U arr[2];
arr[0].i = 0x00000001;
arr[1].i = 0x00000002;
char *p = (char *)arr;
printf("%d %d", p[0], p[4]);
return 0;
}
7.写出下列程序段的输出结果:________________。
#include <stdio.h>
enum Type { INT, CHAR };
union Data {
int i;
char c;
};
struct Var {
enum Type t;
union Data d;
};
int main() {
struct Var v;
v.t = INT;
v.d.i = 65;
printf("%c", v.d.c);
return 0;
}
8.写出下列程序段的输出结果:________________。
#include <stdio.h>
void func() {
static union U { int a; char b; } u = { .b = 'X' };
printf("%d", u.a);
}
int main() {
func();
return 0;
}
9.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U { int a; int b; };
int main() {
union U u;
u.a = 10;
u.b = 20;
printf("%d", u.a);
return 0;
}
10.写出下列程序段的输出结果:________________。
#include <stdio.h>
struct A { char c; int i; };
union B { struct A s; char arr[8]; };
int main() {
union B b;
b.arr[0] = 'H';
printf("%c", b.s.c);
return 0;
}
11.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U {
struct { char a; char b; } s;
short k;
};
int main() {
union U u;
u.k = 0x0506;
printf("%d", u.s.a + u.s.b);
return 0;
}
12.写出下列程序段的输出结果:________________。
#include <stdio.h>
struct Inner {
char c;
int i;
};
union U {
struct Inner s;
char arr[8];
};
int main() {
union U u = {0};
u.arr[0] = 3;
u.arr[4] = 8;
printf("%d %d", u.s.c, u.s.i);
return 0;
}
13.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U { char c[3]; int i; };
int main() {
union U arr[2];
arr[0].c[0] = 1; arr[0].c[1] = 2; arr[0].c[2] = 3;
arr[1].c[0] = 4; arr[1].c[1] = 5; arr[1].c[2] = 6;
char *p = (char *)arr;
printf("%d %d", p[3], p[4]);
return 0;
}
14.写出下列程序段的输出结果:________________。
#include <stdio.h>
struct A { char x; };
union B { struct A a; int y; };
struct C { union B b; char z; };
int main() {
struct C c = {0};
c.b.y = 0x12345678;
c.z = 0xAA;
printf("%x", c.b.a.x);
return 0;
}
15.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U { int i; short s[2]; };
void flip(union U *u) {
short temp = u->s[0];
u->s[0] = u->s[1];
u->s[1] = temp;
}
int main() {
union U u;
u.i = 0x00010002;
flip(&u);
printf("%x", u.i);
return 0;
}
四、编程题。
1. 图书与期刊资料管理系统:图书馆的资料分为图书和期刊两种,它们的共同属性有书名和出版年份,不同属性为图书有作者和ISBN号,期刊有期号和主办单位。请编写程序,输入N份资料的信息(先输入类型字符B代表图书、J代表期刊,再输入对应数据),然后以整齐的表格形式输出所有资料,输出时需根据类型显示不同的特有属性。
2.员工与兼职人员薪资结算系统:某公司人员分为正式员工和兼职人员,共同属性有姓名和工号,薪资计算方式不同:正式员工为固定月薪,兼职人员为按小时计费(时薪和当月工作时长)。请编写程序,输入若干人员数据(先输入类型F代表正式、P代表兼职,再输入对应数据),计算每个人的当月应发薪资,并以表格形式输出姓名、工号、人员类型及应发薪资。
3.几何图形属性记录器:设计一个程序来记录不同几何图形的属性,图形分为圆和矩形,共同属性为图形名称,不同属性为圆有半径,矩形有长和宽。程序要求用户输入N个图形的信息(先输入Circle或Rect,再输入对应数据),然后输出每个图形的名称、类型以及其关键尺寸参数。
4.学生与教师信息登记表:学校的人员分为学生和教师,共同属性有姓名和年龄,不同属性为学生有学号和班级,教师有工号和职称。请编写程序,输入N个人的信息(先输入类型S代表学生、T代表教师,再输入对应数据),然后以表格形式输出所有人的详细信息。
5.轿车与卡车车辆信息库:车辆分为轿车和卡车,共同属性有品牌和生产年份,不同属性为轿车有座位数,卡车有载重吨位。请编写程序,输入N辆车的信息(先输入类型C代表轿车、T代表卡车,再输入对应数据),然后以表格形式输出所有车辆的详细信息。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
9.6节:联合体
一、单项选择题
1.联合体最核心的特征是( )
A. 所有成员拥有独立内存空间 B. 全部成员共享同一块起始内存
C. 成员必须是相同数据类型 D. 占用内存等于所有成员字节之和
【答案】B
【解析】联合体所有成员共用同一块内存,同一时刻仅能有效存储一个成员数据。
2.现有定义union Data{short a; char b; float c;};,该联合体变量占用内存字节数由( )决定
A. short 成员 a,占 2 字节 B. char 成员 b,占 1 字节
C. float 成员 c,占 4 字节 D. 4+1+4=9 字节
【答案】C
【解析】联合体总大小等于内部占用字节最大的成员,float占4字节,整体占4字节。
3.在C语言中,定义联合体类型必须使用的关键字是( )
A. struct B. enum C. union D. typedef
【答案】C
【解析】union 是定义联合体(共用体)的关键字。struct 用于结构体,enum 用于枚举,typedef 用于类型重命名。
4.关于联合体和结构体在内存分配上的主要区别,下列说法正确的是( )
A. 结构体成员共享内存,联合体成员各自占用独立内存
B. 联合体成员共享同一块内存,结构体成员各自占用独立内存
C. 两者都是成员共享同一块内存
D. 两者都是成员各自占用独立内存,没有区别
【答案】B
【解析】这是联合体最核心的特征。联合体的所有成员起始地址相同,共享同一块内存区域;而结构体的每个成员都有自己独立的内存空间。
5.设有定义 union U { int x; char y[4]; } u;。若执行 u.y[0]=1; u.y[1]=0; u.y[2]=0; u.y[3]=0;,在小端模式下,u.x 的值是( )
A. 1 B. 16777216 C. 0 D. 不确定
【答案】A
【解析】在小端模式下,低位字节存储在低地址。y[0] 对应 x 的最低8位。将 y[0] 设为1,其余为0,则整数 x 的二进制表示即为 1。
6.联合体变量定义的合法形式是( )
A. union { int a; float b; }
B. union data { int a; float b; }; data x;
C. union data { int a; float b; } x;
D. data { int a; float b; } x;
【答案】C
【解析】A选项只定义了类型没定义变量;B选项在C语言中定义变量需加 union 关键字;D选项语法错误。C选项是在定义类型的同时定义了变量 x,完全合法。
7.以下关于联合体赋值的描述,错误的是( )
A. 可以给联合体的整型成员赋值
B. 可以给联合体的字符成员赋值
C. 可以将一个联合体变量直接赋值给另一个同类型的联合体变量
D. 可以同时给联合体的两个不同成员赋值并让它们都保持有效
【答案】D
【解析】联合体在同一时刻只能保存一个成员的有效值。虽然语法上可以连续赋值,但后一次赋值会覆盖前一次的内容,无法让两个成员同时保持各自独立的有效值。
8.使用指向联合体的指针访问成员时,应使用的运算符是( )
A. . B. -> C. * D. &
【答案】B
【解析】通过指针访问结构体或联合体成员,统一使用箭头运算符 ->。点运算符 . 用于变量直接访问。
9.设有 union Data { int k; char c; } a;,执行 a.k = 256; 后,a.c 的值是( )(假设小端模式)
A. 256 B. 1 C. 0 D. -1
【答案】C
【解析】的十六进制是 0x0100。在小端模式下,低地址(a.c 所在位置)存储的是 00,高地址存储的是 01。所以 a.c 读取低地址的一个字节,值为 0。
10.若定义 typedef union { long x[2]; int y[4]; char z[8]; } MY_TYPE;,则 MY_TYPE 是( )
A. 一个联合体变量 B. 一个联合体类型名
C. 一个结构体类型名 D. 一个宏定义
【答案】B
【解析】typedef 的作用是为数据类型定义一个新的别名。这里 MY_TYPE 代表了那个匿名联合体类型。
二、填空题。
1.在C语言中,无论联合体包含多少个成员,所有成员的______地址都是相同的,且都等于该联合体变量的首地址。
【答案】起始(或首)
【解析】这是联合体内存模型的基础。与结构体不同,联合体成员不是依次排列的,而是重叠存放的,起点一致。
2.在任意时刻,联合体变量中只有______个成员是有效的(即被赋值的),对其中一个成员赋值会覆盖其他成员的数据。
【答案】一(或1)
【解析】由于共享内存,写入一个成员会破坏其他成员的二进制表示,因此逻辑上同一时间只能存储一种类型的数据。
3.对于联合体变量 u 及其成员 m,表达式 &u 的值与表达式 ______ 的值在数值上是相等的。
【答案】&u.m
【解析】因为成员 m 的起始地址就是联合体 u 的起始地址。
4.当将联合体变量作为参数传递给函数时,默认采用______传递的方式,即在函数内部修改形参不会影响实参的值。
【答案】值
【解析】C语言中,除非传递的是指针,否则基本数据类型和聚合类型(如结构体、联合体)通常都是值传递,会生成一份副本。
5.在定义联合体类型时,右花括号 } 后面必须紧跟一个______符号,表示类型定义的结束。
【答案】分号(或 ;)
【解析】这是定义联合体类型时的语法格式要求。
三、阅读程序题。
1.写出下列程序段的输出结果:________________。
#include <stdio.h>
union Test {
int a;
char b;
};
int main() {
union Test t;
t.a = 10;
t.b = 20;
printf("%d", t.a);
return 0;
}
【答案】20
2.写出下列程序段的输出结果:________________。
#include <stdio.h>
union Data {
int i;
char c[4];
};
int main() {
union Data d;
d.c[0] = 1;
d.c[1] = 0;
d.c[2] = 0;
d.c[3] = 0;
printf("%d", d.i);
return 0;
}
【答案】1
3.写出下列程序段的输出结果:________________。
#include <stdio.h>
union Data {
int i;
char c[4];
};
int main() {
union Data d;
d.c[0] = 0;
d.c[1] = 1;
d.c[2] = 0;
d.c[3] = 0;
printf("%d", d.i);
return 0;
}
【答案】256
4.写出下列程序段的输出结果:________________。
#include <stdio.h>
union Mix {
int x;
short y;
};
int main() {
union Mix m;
m.x = 0x12345678;
m.y = 0xABCD;
printf("%x", m.x);
return 0;
}
【答案】1234abcd
5.写出下列程序段的输出结果:________________。
#include <stdio.h>
struct S {
int a;
union {
char c;
int b;
} u;
};
int main() {
struct S s;
s.a = 100;
s.u.b = 200;
printf("%d %d", s.a, s.u.c);
return 0;
}
【答案】100 -56
6.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U { int i; char c; };
int main() {
union U arr[2];
arr[0].i = 0x00000001;
arr[1].i = 0x00000002;
char *p = (char *)arr;
printf("%d %d", p[0], p[4]);
return 0;
}
【答案】1 2
7.写出下列程序段的输出结果:________________。
#include <stdio.h>
enum Type { INT, CHAR };
union Data {
int i;
char c;
};
struct Var {
enum Type t;
union Data d;
};
int main() {
struct Var v;
v.t = INT;
v.d.i = 65;
printf("%c", v.d.c);
return 0;
}
【答案】A
8.写出下列程序段的输出结果:________________。
#include <stdio.h>
void func() {
static union U { int a; char b; } u = { .b = 'X' };
printf("%d", u.a);
}
int main() {
func();
return 0;
}
【答案】88
9.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U { int a; int b; };
int main() {
union U u;
u.a = 10;
u.b = 20;
printf("%d", u.a);
return 0;
}
【答案】20
10.写出下列程序段的输出结果:________________。
#include <stdio.h>
struct A { char c; int i; };
union B { struct A s; char arr[8]; };
int main() {
union B b;
b.arr[0] = 'H';
printf("%c", b.s.c);
return 0;
}
【答案】H
11.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U {
struct { char a; char b; } s;
short k;
};
int main() {
union U u;
u.k = 0x0506;
printf("%d", u.s.a + u.s.b);
return 0;
}
【答案】11
12.写出下列程序段的输出结果:________________。
#include <stdio.h>
struct Inner {
char c;
int i;
};
union U {
struct Inner s;
char arr[8];
};
int main() {
union U u = {0};
u.arr[0] = 3;
u.arr[4] = 8;
printf("%d %d", u.s.c, u.s.i);
return 0;
}
【答案】3 8
13.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U { char c[3]; int i; };
int main() {
union U arr[2];
arr[0].c[0] = 1; arr[0].c[1] = 2; arr[0].c[2] = 3;
arr[1].c[0] = 4; arr[1].c[1] = 5; arr[1].c[2] = 6;
char *p = (char *)arr;
printf("%d %d", p[3], p[4]);
return 0;
}
【答案】0 4
14.写出下列程序段的输出结果:________________。
#include <stdio.h>
struct A { char x; };
union B { struct A a; int y; };
struct C { union B b; char z; };
int main() {
struct C c = {0};
c.b.y = 0x12345678;
c.z = 0xAA;
printf("%x", c.b.a.x);
return 0;
}
【答案】78
15.写出下列程序段的输出结果:________________。
#include <stdio.h>
union U { int i; short s[2]; };
void flip(union U *u) {
short temp = u->s[0];
u->s[0] = u->s[1];
u->s[1] = temp;
}
int main() {
union U u;
u.i = 0x00010002;
flip(&u);
printf("%x", u.i);
return 0;
}
【答案】20001
四、编程题。
1. 图书与期刊资料管理系统:图书馆的资料分为图书和期刊两种,它们的共同属性有书名和出版年份,不同属性为图书有作者和ISBN号,期刊有期号和主办单位。请编写程序,输入N份资料的信息(先输入类型字符B代表图书、J代表期刊,再输入对应数据),然后以整齐的表格形式输出所有资料,输出时需根据类型显示不同的特有属性。
【参考代码】
#include <stdio.h>
typedef union {
struct { char author[20], isbn[20]; } book;
struct { int issue; char org[20]; } journal;
} Info;
typedef struct {
char type;
char title[20];
int year;
Info info;
} Material;
int main() {
int n, i;
scanf("%d", &n);
Material m[n];
for(i = 0; i < n; i++) {
scanf(" %c", &m[i].type);
if(m[i].type == 'B')
scanf("%s %d %s %s",m[i].title,&m[i].year,m[i].info.book.author,m[i].info.book.isbn);
else
scanf("%s %d %d %s",m[i].title,&m[i].year,&m[i].info.journal.issue,m[i].info.journal.org);
}
printf("Type Title Year Detail1 Detail2
");
for(i = 0; i < n; i++) {
if(m[i].type == 'B')
printf("Book %-10s %-6d %-12s %s
",m[i].title,m[i].year,m[i].info.book.author,m[i].info.book.isbn);
else
printf("Journal%-10s %-6d %-12d %s
",m[i].title,m[i].year,m[i].info.journal.issue,m[i].info.journal.org);
}
return 0;
}
2.员工与兼职人员薪资结算系统:某公司人员分为正式员工和兼职人员,共同属性有姓名和工号,薪资计算方式不同:正式员工为固定月薪,兼职人员为按小时计费(时薪和当月工作时长)。请编写程序,输入若干人员数据(先输入类型F代表正式、P代表兼职,再输入对应数据),计算每个人的当月应发薪资,并以表格形式输出姓名、工号、人员类型及应发薪资。
【参考代码】
#include <stdio.h>
typedef union {
float salary; // 正式员工月薪
struct { float rate, hours; } part; // 兼职时薪和工时
} Pay;
typedef struct {
char name[15];
int id;
char type;
Pay pay;
} Employee;
int main() {
int n, i;
scanf("%d", &n);
Employee e[n];
for(i = 0; i < n; i++) {
scanf(" %c", &e[i].type);
if(e[i].type == 'F')
scanf("%s %d %f", e[i].name, &e[i].id, &e[i].pay.salary);
else
scanf("%s %d %f %f", e[i].name, &e[i].id, &e[i].pay.part.rate, &e[i].pay.part.hours);
}
printf("Name ID Type Salary
");
for(i = 0; i < n; i++) {
float total = (e[i].type == 'F') ? e[i].pay.salary : (e[i].pay.part.rate * e[i].pay.part.hours);
printf("%-12s %-6d %-9s %.2f
", e[i].name, e[i].id, (e[i].type=='F'?"Full-time":"Part-time"), total);
}
return 0;
}
3.几何图形属性记录器:设计一个程序来记录不同几何图形的属性,图形分为圆和矩形,共同属性为图形名称,不同属性为圆有半径,矩形有长和宽。程序要求用户输入N个图形的信息(先输入Circle或Rect,再输入对应数据),然后输出每个图形的名称、类型以及其关键尺寸参数。
【参考代码】
#include <stdio.h>
#include <string.h>
typedef union {
float radius;
struct { float len, wid; } rect;
} Geo;
typedef struct {
char name[15];
char type[10];
Geo g;
} Shape;
int main() {
int n, i;
scanf("%d", &n);
Shape s[n];
char flag[10];
for(i = 0; i < n; i++) {
scanf("%s", flag);
if(strcmp(flag, "Circle") == 0) {
strcpy(s[i].type, "Circle");
scanf("%s %f", s[i].name, &s[i].g.radius);
} else {
strcpy(s[i].type, "Rect");
scanf("%s %f %f", s[i].name, &s[i].g.rect.len, &s[i].g.rect.wid);
}
}
printf("Name Type Dimensions
");
for(i = 0; i < n; i++) {
if(strcmp(s[i].type, "Circle") == 0)
printf("%-12s %-8s R: %.2f
", s[i].name, s[i].type, s[i].g.radius);
else
printf("%-12s %-8s L: %.2f W: %.2f
", s[i].name, s[i].type, s[i].g.rect.len, s[i].g.rect.wid);
}
return 0;
}
4.学生与教师信息登记表:学校的人员分为学生和教师,共同属性有姓名和年龄,不同属性为学生有学号和班级,教师有工号和职称。请编写程序,输入N个人的信息(先输入类型S代表学生、T代表教师,再输入对应数据),然后以表格形式输出所有人的详细信息。
【参考代码】
#include <stdio.h>
typedef union {
struct { int sid; char class[15]; } student;
struct { int tid; char title[15]; } teacher;
} Detail;
typedef struct {
char type;
char name[15];
int age;
Detail d;
} Person;
int main() {
int n, i;
scanf("%d", &n);
Person p[n];
for(i = 0; i < n; i++) {
scanf(" %c", &p[i].type);
if(p[i].type == 'S')
scanf("%s %d %d %s", p[i].name, &p[i].age, &p[i].d.student.sid, p[i].d.student.class);
else
scanf("%s %d %d %s", p[i].name, &p[i].age, &p[i].d.teacher.tid, p[i].d.teacher.title);
}
printf("Type Name Age ID Class/Title
");
for(i = 0; i < n; i++) {
if(p[i].type == 'S')
printf("Student %-12s %-6d %-7d %s
", p[i].name, p[i].age, p[i].d.student.sid, p[i].d.student.class);
else
printf("Teacher %-12s %-6d %-7d %s
", p[i].name, p[i].age, p[i].d.teacher.tid, p[i].d.teacher.title);
}
return 0;
}
5.轿车与卡车车辆信息库:车辆分为轿车和卡车,共同属性有品牌和生产年份,不同属性为轿车有座位数,卡车有载重吨位。请编写程序,输入N辆车的信息(先输入类型C代表轿车、T代表卡车,再输入对应数据),然后以表格形式输出所有车辆的详细信息。
【参考代码】
#include <stdio.h>
typedef union {
int seats;
float load;
} Spec;
typedef struct {
char type;
char brand[15];
int year;
Spec s;
} Vehicle;
int main() {
int n, i;
scanf("%d", &n);
Vehicle v[n];
for(i = 0; i < n; i++) {
scanf(" %c", &v[i].type);
if(v[i].type == 'C')
scanf("%s %d %d", v[i].brand, &v[i].year, &v[i].s.seats);
else
scanf("%s %d %f", v[i].brand, &v[i].year, &v[i].s.load);
}
printf("Type Brand Year Seats/Load
");
for(i = 0; i < n; i++) {
if(v[i].type == 'C')
printf("Car %-12s %-6d %-10d
", v[i].brand, v[i].year, v[i].s.seats);
else
printf("Truck %-12s %-6d %-10.1f
", v[i].brand, v[i].year, v[i].s.load);
}
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$