案例描述
學校正在做畢設項目,每名老師帶領5個學生,總共有3名老師,需求如下
設計學生和老師的結構體,其中在老師的結構體中,有老師姓名和一個存放5名學生的數組作為成員
學生的成員有姓名、考試分數,
創建數組存放3名老師,通過函數給每個老師及所帶的學生賦值
最終打印出老師數據以及老師所帶的學生數據。
#include <iostream>
#include <ctime>
using namespace std;/*
* 案例描述
學校正在做畢設項目,每名老師帶領5個學生,總共有3名老師,需求如下設計學生和老師的結構體,其中在老師的結構體中,有老師姓名和一個存放5名學生的數組作為成員學生的成員有姓名、考試分數,
創建數組存放3名老師,通過函數給每個老師及所帶的學生賦值最終打印出老師數據以及老師所帶的學生數據。
*//*
思維過程:
1. 分析數據: 1名老師帶領5名學生,總共有3名老師。學生的信息有 姓名,分數
2. 數據結構體: 分為兩個,老師和學生,老師的結構體內有 老師姓名,學生數組[];學生的結構體內有 學生姓名,分數(分數隨機);
3. 函數邏輯構成: 分為給老師、學生傳參賦值;將所傳入的內容輸出打印;4. 函數_給老師、學生傳參賦值:傳入參數(老師數組,老師數量)老師、學生名字由 string nameSeed = "ABCDE";//名字種子命名通過雙循環給老師及學生賦值----其中分數隨機需添加#include <ctime> rand() % 61 + 40 學生分數在40~100之間* b為最大值,a為最小值要取得 [a,b) 的隨機整數,使用 (rand() % (b-a))+ a;---要取得 [a,b] 的隨機整數,使用 (rand() % (b-a+1))+ a;---要取得 (a,b] 的隨機整數,使用 (rand() % (b-a))+ a + 1;5. 函數_打印老師_學生分數:雙循環進行遍歷;遍歷老師;遍歷學生*///結構體定義
struct Student {//成員列表string name; //姓名int score; //分數
};struct Teacher
{string name;Student sArray[5]; //學生數組
};// 給老師和學生賦值函數
void set_Teacher_Stu(Teacher tArray[],int len) { //len為老師的數量string tName = "老師";string sName = "學生";string nameSeed = "ABCDE";//名字種子for (int i = 0; i < len; i++) {tArray[i].name = tName + nameSeed[i];//老師名字for (int j = 0; j < 5; j++){tArray[i].sArray[j].name = sName + nameSeed[j];//學生名字tArray[i].sArray[j].score = rand() % 61 + 40; //學生分數}}}//打印老師學生函數
void print_Teacher_Stu(Teacher tArray[],int len) { ////遍歷老師和學生for (int i = 0; i < len; i++){cout << tArray[i].name << endl;// 打印老師的名字for (int j = 0; j < 5; j++) // 打印學生名字{cout << " \t姓名: " << tArray[i].sArray[j].name << " \t分數: "<< tArray[i].sArray[j].score << endl;}}
}int main() {srand((unsigned int)time(NULL));Teacher tArray[3]; // 老師數組為3名老師int len = sizeof(tArray) / sizeof(Teacher);set_Teacher_Stu(tArray, len);//創建數據print_Teacher_Stu(tArray, len);//打印數據system("pause");return 0;}