C Primer Plus 第十四章 编程练习4

作者在 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);
	}
}
文章评论,共0条
游客请输入验证码
浏览39535次