编写一个程序。按照下列要求,创建一个含有两个成员的结构模板:
a.第一个成员是社会保障号;第二个成员是一个含三个成员的结构。它的第一个成员是名,第二个成员是名和姓中间的名字,最后一个成员是姓。创建并初始化一个含有5个此类结构的数组。程序以下列形式输出数据:
名和姓中间的名字只输出了它的第一个字母,后面加了一个句点。如果姓名中间的名字为空,那么它的第一个字母和句点都不会输出(当然喽)。写一个函数来实现输出,把结构数组传递给这个函数。
#include <stdio.h> void display(struct persons *p); struct names { char firstname[20]; char middlename[20]; char lastname[20]; }; struct persons{ int number; struct names name; }; struct persons person[5] = { {302039823,{"Dribble","Mackede","Flossie"}}, {345345345,{"gadenfs","Kasdfas","Pszajkh"}}, {302039823,{"Kazsdfj","Aasdfaf","Mjasdfh"}}, {302039823,{"Qaadsef","","Yjsjdsh"}}, {302039823,{"Bsdsdfs","Fsjdsdd","Rshdsdf"}} }; int main(void) { display(person); return 0; } void display(struct persons *p) { int i; for(i=0; i<5; i++) if (p[i].name.middlename[0] != '\0') printf("%s, %s %c. -- %d\n",p[i].name.firstname, p[i].name.lastname, p[i].name.middlename[0], p[i].number); else printf("%s, %s -- %d\n",p[i].name.firstname, p[i].name.lastname, p[i].number); } b.修改a部分,传递结构的值而不是结构地址。 #include <stdio.h> void display(struct persons people[]); struct names { char firstname[20]; char middlename[20]; char lastname[20]; }; struct persons{ int number; struct names name; }; struct persons person[5] = { {302039823,{"Dribble","Mackede","Flossie"}}, {345345345,{"gadenfs","Kasdfas","Pszajkh"}}, {302039823,{"Kazsdfj","Aasdfaf","Mjasdfh"}}, {302039823,{"Qaadsef","","Yjsjdsh"}}, {302039823,{"Bsdsdfs","Fsjdsdd","Rshdsdf"}} }; int main(void) { display(person); return 0; } void display(struct persons people[5]) { int i; for(i=0; i<5; i++) if (people[i].name.middlename[0] != '\0') printf("%s, %s %c. -- %d\n",people[i].name.firstname, people[i].name.lastname, people[i].name.middlename[0], people[i].number); else printf("%s, %s -- %d\n",people[i].name.firstname, people[i].name.lastname, people[i].number); }
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题