fork download
  1.  
  2. #include <stdio.h>
  3. #include <string.h>
  4.  
  5. // 日期结构体
  6. struct Date {
  7. int year, month, day;
  8. };
  9.  
  10. // 地址结构体
  11. struct Address {
  12. char city[20];
  13. char street[50];
  14. };
  15.  
  16. // 学生结构体嵌套了日期和地址
  17. struct Student {
  18. int id;
  19. char name[20];
  20. struct Date birthday;
  21. struct Address addr;
  22. float score;
  23. };
  24.  
  25. // 函数:输入一个学生信息
  26. void inputStudent(struct Student *p) {
  27. printf("输入学号:");
  28. scanf("%d", &p->id);
  29. printf("输入姓名:");
  30. scanf("%s", p->name);
  31. printf("输入出生日期(年 月 日):");
  32. scanf("%d %d %d", &p->birthday.year, &p->birthday.month, &p->birthday.day);
  33. printf("输入城市:");
  34. scanf("%s", p->addr.city);
  35. printf("输入街道:");
  36. scanf("%s", p->addr.street);
  37. printf("输入成绩:");
  38. scanf("%f", &p->score);
  39. }
  40.  
  41. // 函数:输出一个学生信息
  42. void printStudent(const struct Student *p) {
  43. printf("学号:%d\n", p->id);
  44. printf("姓名:%s\n", p->name);
  45. printf("生日:%d-%d-%d\n", p->birthday.year, p->birthday.month, p->birthday.day);
  46. printf("地址:%s %s\n", p->addr.city, p->addr.street);
  47. printf("成绩:%.1f\n", p->score);
  48. }
  49.  
  50. int main() {
  51. struct Student stuArr[3]; // 结构体数组,存储多个学生
  52.  
  53. // 输入3个学生信息
  54. for (int i = 0; i < 3; i++) {
  55. printf("请输入第%d个学生信息:\n", i+1);
  56. inputStudent(&stuArr[i]);
  57. }
  58.  
  59. // 输出所有学生信息
  60. printf("\n所有学生信息:\n");
  61. for (int i = 0; i < 3; i++) {
  62. printStudent(&stuArr[i]);
  63. printf("\n");
  64. }
  65.  
  66. return 0;
  67. }
Success #stdin #stdout 0.01s 5288KB
stdin
123
stdout
请输入第1个学生信息:
输入学号:输入姓名:输入出生日期(年 月 日):输入城市:输入街道:输入成绩:请输入第2个学生信息:
输入学号:输入姓名:输入出生日期(年 月 日):输入城市:输入街道:输入成绩:请输入第3个学生信息:
输入学号:输入姓名:输入出生日期(年 月 日):输入城市:输入街道:输入成绩:
所有学生信息:
学号:123
姓名:
生日:434643080-32765-1024079664
地址:N �$=N
成绩:0.0

学号:1023591495
姓名:N
生日:434642928-32765-1024080576
地址:N 
成绩:0.0

学号:434651081
姓名:�
生日:0-0-0
地址: v ��
成绩:0.0