[关闭]
@SuHongjun 2020-04-30T03:24:33.000000Z 字数 2886 阅读 969

C语言-Day 18 - 结构体

C语言


结构体

结构体类型定义

  1. #include "stdio.h"
  2. struct BOOK //结构体类型定义,BOOK是类型名,定义的新类型是:struct BOOK类型
  3. {
  4. char ISBN[50]; //结构体的成员
  5. char bookname[100];
  6. char author[100];
  7. float price;
  8. int soldCount;
  9. };
  10. main()
  11. {
  12. struct BOOK b[100]; //b是一个结构体数组,数组元素的类型是:struct BOOK
  13. }
  1. #include "stdio.h"
  2. //自定义类型
  3. struct Book // 类型定义
  4. {
  5. char ISBN[50]; //成员
  6. char bookName[100];
  7. char author[100];
  8. float price;
  9. int soldCount; //小驼峰命名法
  10. };
  11. //函数原型声明
  12. main()
  13. {
  14. struct Book book1,book2; //变量定义,struct Book是类型,book1、book2是变量
  15. }
  16. //函数定义
  1. #include "stdio.h"
  2. //自定义类型
  3. //函数原型声明
  4. main()
  5. {
  6. }
  7. //函数定义

结构体变量定义及初始化方式:

  1. #include "stdio.h"
  2. struct BOOK //结构体类型定义,BOOK是类型名,定义的新类型是:struct BOOK类型
  3. {
  4. char ISBN[50]; //结构体的成员
  5. char bookName[100];
  6. char author[100];
  7. float price;
  8. int soldCount;
  9. };
  10. main()
  11. {
  12. struct BOOK book1; //book1是struct BOOK 类型的一个变量;
  13. struct BOOK book2 = {"9787001","西游记","吴承恩",34.8,46}; //结构体变量初始化
  14. struct BOOK ba1[100]; //ba1是结构体数组
  15. struct BOOK ba2[100] = {
  16. {"9787001","西游记","吴承恩",34.8,46},
  17. {"9787002","狼图腾","姜蓉",45.8,67},
  18. {"9787003","红与黑","司汤达",25.8,21},
  19. }; //结构体数组的初始化,部分初始化
  20. }

结构体数组的基本用法:初始化、输出

  1. #include "stdio.h"
  2. struct BOOK //结构体类型定义,BOOK是类型名,定义的新类型是:struct BOOK类型
  3. {
  4. char ISBN[50]; //结构体的成员
  5. char bookName[100];
  6. char author[100];
  7. float price;
  8. int soldCount;
  9. };
  10. main()
  11. {
  12. int i;
  13. struct BOOK book1; //book1是struct BOOK 类型的一个变量;
  14. struct BOOK book2 = {"9787001","西游记","吴承恩",34.8,46}; //结构体变量初始化
  15. struct BOOK ba1[100]; //ba1是结构体数组
  16. struct BOOK ba2[100] = {
  17. {"9787001","西游记","吴承恩",34.8,46},
  18. {"9787002","狼图腾","姜蓉",45.8,67},
  19. {"9787003","红与黑","司汤达",25.8,21},
  20. }; //结构体数组的初始化,部分初始化
  21. printf("图书信息:\n");
  22. printf("===============================================================\n");
  23. printf(" ISBN\t\t书名\t作者\t售价\t售出数量\n");
  24. printf("---------------------------------------------------------------\n");
  25. for(i=0; i<3; i++)
  26. printf(" %s\t%s\t%s\t%.2f\t%5d\n",
  27. ba2[i].ISBN, //结构体对成员的引用方式 .
  28. ba2[i].bookName,
  29. ba2[i].author,
  30. ba2[i].price,
  31. ba2[i].soldCount);
  32. printf("===============================================================\n");
  33. }

结构体数组:输入、输出

  1. #include "stdio.h"
  2. struct BOOK //结构体类型定义,BOOK是类型名,定义的新类型是:struct BOOK类型
  3. {
  4. char ISBN[50]; //结构体的成员
  5. char bookName[100];
  6. char author[100];
  7. float price;
  8. int soldCount;
  9. };
  10. main()
  11. {
  12. struct BOOK b[100]; //b是一个结构体数组,数组元素的类型是:struct BOOK
  13. int i;
  14. char buff[100];
  15. printf("请录入图书信息:\n");
  16. for(i=0; i<3; i++)
  17. {
  18. printf("第%d本书--ISBN:",i+1);
  19. gets(b[i].ISBN); //b[i].ISBN 是数组名
  20. printf("第%d本书--书名:",i+1);
  21. gets(b[i].bookName); //b[i].bookName 是数组名
  22. printf("第%d本书--作者:",i+1);
  23. gets(b[i].author); //b[i].author 是数组名
  24. printf("第%d本书--售价:",i+1);
  25. scanf("%f",&b[i].price); //b[i].price 是float型
  26. printf("第%d本书--售出数量:",i+1);
  27. scanf("%d",&b[i].soldCount); //b[i].soldCount 是int型
  28. gets(buff);
  29. }
  30. printf("已录入的图书信息:\n");
  31. printf("===============================================================\n");
  32. printf(" ISBN\t\t书名\t作者\t售价\t售出数量\n");
  33. printf("---------------------------------------------------------------\n");
  34. for(i=0; i<3; i++)
  35. printf(" %s\t%s\t%s\t%.2f\t%5d\n",
  36. b[i].ISBN,
  37. b[i].bookName,
  38. b[i].author,
  39. b[i].price,
  40. b[i].soldCount);
  41. printf("===============================================================\n");
  42. }

思考题:如何避免每次都要录入大量的数据?? (避免重复录入)
提示:文件操作

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注