7、结构体案例1.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include <iostream>
  2. #include <ctime>
  3. #if(0)
  4. //结构体案例1
  5. //案例描述:
  6. //学校正在做毕设项目,每名老师带领5个学生,总共有3名老师,需求如下:
  7. //设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员
  8. //学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值
  9. //最终打印出老师数据以及老师所带的学生数据
  10. //学生的结构体
  11. struct Student
  12. {
  13. std::string SName; //学生姓名
  14. int score; //学生分数
  15. };
  16. //老师的结构体定义
  17. struct Teacher
  18. {
  19. std::string TName; //姓名
  20. struct Student SArray[5];
  21. };
  22. //给老师和学生赋值的函数
  23. void allocateSpace(struct Teacher TArray[] , int len)
  24. {
  25. std::string nameSeed = "ABCDE";
  26. //给老师赋值
  27. for (int i = 0; i < len; i++)
  28. {
  29. TArray[i].TName = "Teacher_";
  30. TArray[i].TName += nameSeed[i];
  31. //通过循环给每名老师所带学生赋值
  32. for (int j = 0; j < 5; j++)
  33. {
  34. TArray[i].SArray[j].SName = "Student_";
  35. TArray[i].SArray[j].SName += nameSeed[j];
  36. int random = rand() % 61 + 40; //40 ~ 100
  37. TArray[i].SArray[j].score = random;
  38. }
  39. }
  40. }
  41. //打印所有信息的函数
  42. void printInfo(struct Teacher TArray[], int len)
  43. {
  44. for (int i = 0; i < len; i++)
  45. {
  46. std::cout << "老师姓名:" << TArray[i].TName << std::endl;
  47. for (int j = 0; j < 5; j++)
  48. {
  49. std::cout << "\t学生姓名:" << TArray[i].SArray[j].SName << "考试分数:" << TArray[i].SArray[j].score << std::endl;
  50. }
  51. }
  52. }
  53. int main()
  54. {
  55. //创建一个随机种子
  56. srand((unsigned int)time(NULL));
  57. //1、创建三名老师的数组
  58. struct Teacher TArray[3];
  59. //2、通过函数给3名老师的信息赋值 并给老师带的学生信息赋值
  60. int len = sizeof(TArray) / sizeof(TArray[0]);
  61. allocateSpace(TArray, len);
  62. //3、打印所有老师及所带的学生信
  63. printInfo(TArray, len);
  64. system("pause");
  65. return 0;
  66. }
  67. #endif