作者在 2013-05-16 12:52:06 发布以下内容
/*
编写一个程序,按照下列要求,创建一个含有两个成员的结构模板
A.第一个成员是社会保障号;第二个成员是一个含有3个成员的结构
它的第一个成员是名,第二个成员是名和姓中间的名字
最后一个成员是姓.
创建并初始化一个含有5个此类结构的数组.
程序以下列形式输出数据:
Dribble, Fiossie M. - 302039823
名和姓中间的名字只输出了它的第一个字母,后面加了一个句点.
如果姓名中间的名字为空,那么它的第一个字母和句点都不会输出
写一个函数来实现输出,把结构数组传递给这个函数.
B.修改A部分,传递结构的值而不是地址.
*/
#include <stdio.h>
#include <stdlib.h>
#define NAMELEN 11
#define SSNLEN 10
struct person{
char fname[NAMELEN];
char mname[NAMELEN];
char lname[NAMELEN];
};
struct people{
char ssnum[SSNLEN];
struct person name;
};
void disp(struct people []);
void disp2(struct people);
int main(void)
{
struct people pop[5] = {
{"302039823", {"Dribble", "Midd", "Fiossie"}},
{"402024621", {"Lorraine", "", "Cezara"}},
{"351247345", {"Christina", "Ltto", "Tib"}},
{"716437223", {"sophic", "Sa", "Chant"}},
{"702033129", {"Chantilly", "", "Alex"}}
};
int i;
disp(pop);
puts(" ");
for(i = 0; i < 5; i++)
disp2(pop[i]);
return 0;
}
void disp2(struct people pop)
{
if(pop.name.mname[0] == '\0')
printf("%s, %s - %s\n", pop.name.fname, pop.name.lname, pop.ssnum);
else
printf("%s, %s %c. - %s\n", pop.name.fname, pop.name.lname, pop.name.mname[0], pop.ssnum);
}
void disp(struct people pop[])
{
int i;
for(i = 0; i < 5; i++)
{
if(pop[i].name.mname[0] == '\0')
printf("%s, %s - %s\n", pop[i].name.fname, pop[i].name.lname, pop[i].ssnum);
else
printf("%s, %s %c. - %s\n", pop[i].name.fname, pop[i].name.lname, pop[i].name.mname[0], pop[i].ssnum);
}
}