C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)
更新時(shí)間:2019年02月19日 11:50:10 作者:transportation111
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)學(xué)生選課系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
#include <iostream> #include <iomanip> #include <fstream> #include<Windows.h> #include<cstring> using namespace std; struct SubList/*某個(gè)學(xué)生所學(xué)的課程中的某一個(gè) */ { int num; /*課程代號(hào) */ SubList *next; /*指向下一個(gè)課程的指針*/ SubList() :num(-1), next(NULL){} /*構(gòu)造函數(shù)*/ }; struct StuList /*課程中所選的學(xué)生*/ { int num; /* 學(xué)生的學(xué)號(hào)*/ float score; /*學(xué)生所得的該課程分?jǐn)?shù)*/ StuList *next; /*下一個(gè)學(xué)生*/ StuList() :num(-1), score(0), next(NULL){} }; class Student { private: int Num; /*學(xué)號(hào)*/ char Name[20]; /*學(xué)生的姓名 */ int MaxSubNum; /*學(xué)生最多可以學(xué)五門課程 */ int FactSubNum; /* 學(xué)生實(shí)際所學(xué)的課程數(shù)目 */ SubList *Root; /*課程的指針*/ float SumXueFen; /*總的選課學(xué)分*/ float FactXueFen; /*實(shí)際獲得學(xué)分*/ float SumGrade; /*總成績(jī)*/ bool Update; /*是否需要更新信息*/ public: Student *next;/*讓所有學(xué)生的信息連接起來(lái)*/ SubList *GetSubPtr()const{ return Root; }/*獲取所選的課程表*/ Student() :Update(false), Root(new SubList()), FactXueFen(0), MaxSubNum(5), FactSubNum(0), SumXueFen(0), SumGrade(0),next(NULL){} void SetName(char N[]){ strcpy(Name, N); } /* 設(shè)置學(xué)生的姓名 */ void SetNum(int num){ Num = num; } /*設(shè)置學(xué)號(hào)*/ const char* GetName()const{ return Name; }/*得到學(xué)生的姓名 */ int GetNum()const{ return Num; } /*得到學(xué)號(hào)*/ int GetFactSubNum()const{ return FactSubNum; } /*得到實(shí)際選課數(shù)*/ bool FindSub(int num)const; /*查找是否已有此課程,如果有返回,如果沒有返回 */ void SetInfo(float sumXueFen, float factXueFen, float sumGrade) { SumXueFen = sumXueFen;/*這三條信息因?yàn)橐黄鹩?所以一起設(shè)置了*/ FactXueFen = factXueFen; SumGrade = sumGrade; } void SetUpdate(bool t){ Update = t; }/*是否更新信息的標(biāo)志*/ float GetAveGrade(){ return SumGrade / FactSubNum; } /*學(xué)生課程的平均成績(jī)*/ void AddSub(int num); /*增加課程*/ bool IsFull()const{ return MaxSubNum == FactSubNum; } void ShowStuInfo(); /*輸出學(xué)生信息*/ void DelSub(int num); /*刪除課程 Manage類使用*/ ~Student()/*析構(gòu)函數(shù) 不要也行影響不太大 一般程序,還不太會(huì)內(nèi)存用完*/ { SubList *p = Root; while (p) { SubList*t = p->next; delete p; p = t; } } }; //課程類 class Subject { private: int MaxStuNum; /*最多學(xué)生數(shù)*/ int FactStuNum; /*實(shí)際學(xué)生數(shù)*/ float Credit; /*該課程的學(xué)分 */ char Name[20]; /* 該課程的名稱 */ int Num; /*課程的代號(hào)*/ StuList *Root; /* 學(xué)生名單 */ float AveGrade; /*該課程的平均成績(jī) */ bool Update; /*是否更新信息*/ public: StuList *GetStuPtr()const{ return Root; }/*獲取選此課程的學(xué)生表*/ Subject*next; Subject() :Root(new StuList()), MaxStuNum(30), FactStuNum(0), Update(false),next(NULL){} float GetCredit()const{ return Credit; } //得到課程的學(xué)分 void SetCredit(float credit){ Credit = credit; } //設(shè)置學(xué)分 const char* GetName()const{ return Name; } //讀出課程的名稱 void SetName(char N[]){ strcpy(Name, N); } //設(shè)置課程的名稱 int GetNum()const{ return Num; } //讀出課程的代號(hào) void SetNum(int num){ Num = num; } //設(shè)置課程的代號(hào) int GetFactStuNum()const{ return FactStuNum; } //返回實(shí)際學(xué)生數(shù) int GetMaxStuNum()const{ return MaxStuNum; }//最大學(xué)生數(shù) void SetUpdate(bool t){ Update = t; } void SetAveGrade(float num){ AveGrade = num/FactStuNum; } //設(shè)置平均分 float GetAveGrade(){ return AveGrade; } //得到學(xué)生的平均成績(jī) float GetStuScore(int num); //查找某個(gè)學(xué)生的成績(jī) bool IsFull()const{ return MaxStuNum == FactStuNum; }//是否人數(shù)已滿 void DelStu(int num);//刪除學(xué)生 void AddStu(int num);//增加學(xué)生 ~Subject() { StuList *p = Root; while (p) { StuList*t = p->next; delete p; p = t; } } }; float Subject::GetStuScore(int num) { StuList*p = Root->next; while (p->num != num) p = p->next; return p->score; } void Student::ShowStuInfo() { cout << Num << " " << Name << " " << "選課數(shù):" << FactSubNum << endl; cout << "\t\t 總成績(jī)" << SumGrade << " 平均分" << GetAveGrade() << endl; cout << "\t\t課程總學(xué)分" << SumXueFen << " 獲得學(xué)分" << FactXueFen << endl; system("pause"); } bool Student::FindSub(int num)const//查找是否已有此課程,如果有返回,如果沒有返回 { bool t = false; SubList *p = Root->next; while (!t && p) { if (p->num == num) t = true; p = p->next; } return t; } void Student::AddSub(int num)//給學(xué)生增加一門課 { SubList *s = new SubList(), *p = Root; while (p->next) p = p->next; p->next = s; s->num = num; FactSubNum++; Update = true; } void Student::DelSub(int num) { SubList*p = Root, *t; while (p->next->num != num) p = p->next; t = p->next; p->next = t->next; FactSubNum--; Update = true; delete t; } //////////////////////////Subject////////////////////////////////// void Subject::AddStu(int num)// { StuList *s = new StuList(), *p = Root; while (p->next) p = p->next; p->next = s; s->num = num; FactStuNum++; Update = true; } void Subject::DelStu(int num) { StuList*p = Root, *t; while (p->next->num != num) p = p->next; t = p->next; p->next = t->next; FactStuNum--; Update = true; delete t; } ////////////////////////////////////////////////////////// class Manage { private: Student*StuRoot; Subject*SubRoot; bool Update; public: Manage() :StuRoot(new Student()), SubRoot(new Subject()),Update(false){} Manage(const Manage&p){} void AddStu(); void AddSub(); Student*FindStu(int num); Subject*FindSub(int num); int ShowSub()const;//顯示可選課程 int ShowStu()const; void ShowStuSubInfo(Student*p); void DelStu(Student*p); void DelSub(Subject*p); void Start(); int menu(); int custom(); int server(); Student* password1(); bool password2(); void menu_1_1(Student*p); void menu_2_1(); void menu_2_2(); void menu_2_3(); void menu_2_4(); void menu_2_5(); void menu_2_6(); void menu_2_7(); void menu_2_8(); void menu_2_9(); void IsUpdate() { if (Update == true) { Student*p = StuRoot->next; Subject*q = SubRoot->next; while (q) { float sum = 0; StuList *t =q->GetStuPtr()->next; while (t) { sum += t->score; t = t->next; } q->SetAveGrade(sum); q->SetUpdate(false); q = q->next; } while (p) { float sum = 0, xuefen = 0, xuefen1 = 0; SubList *t = p->GetSubPtr()->next; while (t) { Subject*tt = FindSub(t->num); xuefen += tt->GetCredit(); float f = tt->GetStuScore(p->GetNum()); sum += f; if (f>= 60) xuefen1 += tt->GetCredit(); t = t->next; } p->SetInfo(xuefen, xuefen1, sum); p->SetUpdate(false); p= p->next; } Update = false; } } }; void Manage::DelStu(Student*p) { SubList *l = p->GetSubPtr()->next; while (l) { FindSub(l->num)->DelStu(p->GetNum()); l = l->next; } Student*t = StuRoot; while (t->next != p) t = t->next; t->next = p->next; delete p; Update = true; } void Manage::DelSub(Subject*p) { StuList *l = p->GetStuPtr()->next; while (l) { FindStu(l->num)->DelSub(p->GetNum()); l = l->next; } Subject*t = SubRoot; while (t->next != p) t = t->next; t->next = p->next; delete p; Update = true; } int Manage::ShowSub()const { Subject*p = SubRoot->next; int n = 0; while (p) { cout << p->GetNum() << " " << p->GetName() << " 學(xué)分:" << p->GetCredit() << endl; n++; p = p->next; } return n; } int Manage::ShowStu()const { Student*p = StuRoot->next; int n = 0; while (p) { cout << p->GetNum() << " " << p->GetName() << endl; n++; p = p->next; } return n; } Student*Manage::FindStu(int num) { Student*p = StuRoot->next; while (p) { if (p->GetNum() == num) break; p = p->next; } return p; } Subject*Manage::FindSub(int num) { Subject*p = SubRoot->next; while (p) { if (p->GetNum() == num) break; p = p->next; } return p; } //總菜單 int Manage::menu() { int k = 0, n; while (1) { system("cls"); cout << endl << endl; cout << "*******************************************\n" << "* *\n" << "* 學(xué)生選修課系統(tǒng) *\n" << "* *\n" << "* 操作方式: *\n" << "* 1.選修課系統(tǒng)學(xué)生端 *\n" << "* *\n" << "* 2.選修課系統(tǒng)管理端 *\n" << "* 0. 退出 *\n" << "*******************************************\n" << endl; cout << "\n\t\t請(qǐng)選擇登入方式: "; cin >> n; if (n > -1 && n < 3) return n; else { cerr << "\n\n\t\t\t\t輸入有誤!\n" << endl; k++; } if (k == 3) { cerr << "\n\n\n\t\t~~提示~~:錯(cuò)誤輸入次數(shù)超過三次,你將被強(qiáng)制退出!!\n\n" << endl; return 0; } system("pause"); } } //選修課系統(tǒng)端操作 int Manage::custom() { int n, k = 0; while (1) { system("cls");; cout << "\n\n\n" << "※※※※※※※※※※※※※※※※※※※※※※※※※※\n" << "※ 選修課系統(tǒng)學(xué)生端 ※\n" << "※ ※\n" << "※ 操作方式:. ※\n" << "※ 1、 學(xué)生選課 ※\n" << "※ 2、 學(xué)生情況 ※\n" << "※ 3、 選課情況 ※\n" << "※ 4、 退出系統(tǒng) ※\n" << "※ ※\n" << "※※※※※※※※※※※※※※※※※※※※※※※※※※\n" << endl; cout << "\t\t\t請(qǐng)選擇操作方式: "; cin >> n; if (n > 0 && n < 5) return n; else { cerr << "\n\t\t\t\t輸入有誤!請(qǐng)重新輸入\n" << endl; k++; } if (k == 3) { system("cls"); cerr << "錯(cuò)誤輸入超過三次!你將被強(qiáng)制退出!!\n" << endl; return 4; } system("pause"); } } int Manage::server() { int n, k = 0; while (1) { system("cls");; cout << "\n\n\n" << "※※※※※※※※※※※※※※※※※※※※※※※※※\n" << "※ ※\n" << "※ 選修課系統(tǒng)管理端 ※\n" << "※ ※\n" << "※ 操作方式: ※\n" << "※ 1.增加學(xué)生 2.增加課程 ※\n" << "※ 3.刪除學(xué)生 4.刪除課程 ※\n" << "※ 5.填寫成績(jī) 6.更改學(xué)分 ※\n" << "※ 7.學(xué)生情況 8.選課情況 ※\n" << "※ 9.保存數(shù)據(jù) 0.退出系統(tǒng) ※\n" << "※ ※\n" << "※※※※※※※※※※※※※※※※※※※※※※※※※\n" << endl; cout << "\t\t 請(qǐng)選擇操作方式: " << endl; cin >> n; if (n > -1 && n < 10) return n; else { cerr << "\n\t\t\t\t輸入有誤!\n" << endl; k++; } if (k == 3) { cerr << "錯(cuò)誤輸入超過三次!\n"; return 0; } system("pause"); } } Student* Manage::password1() { system("cls"); int k = 0; int num; while (1) { cout << "請(qǐng)輸入你的學(xué)號(hào):" << endl; cin >> num; Student*p = FindStu(num); if (p == NULL) { cout << "無(wú)此學(xué)號(hào)!!請(qǐng)重新輸入 " << endl; k++; system("pause"); } else { cout << "你的名字為:" << p->GetName() << endl; cout << "請(qǐng)按任意鍵進(jìn)入選課系統(tǒng)" << endl; return p; } if (k >= 3) { system("cls"); cerr << "\n\n\t\t\t輸入錯(cuò)誤密碼超過三次!請(qǐng)按任意鍵退出.." << endl; return NULL; } } } //密碼檢查 bool Manage::password2() { int k = 0, i; const char A[] = "admin"; char B[10]; system("cls"); for (i = 0; i < 8; i++) cout << endl; while (1) { printf("\t\t\t請(qǐng)輸入管理員密碼:"); i = 0; cin >> B; if (strcmp(A, B) == 0) return true; else { k++; cerr << "\n\n\t\t\t密碼輸入錯(cuò)誤!請(qǐng)重新輸入!\n" << endl; system("pause"); } if (k ==3) { system("cls"); cerr << "\n\n\t\t\t輸入錯(cuò)誤密碼超過三次!請(qǐng)按任意鍵退出.." << endl; return false; } } } void Manage::Start() { int n = 1; while (n) { n = menu(); if (n == 1) { Student*p = password1(); while (p) { int c = custom(); switch (c) { case 1: menu_1_1(p); break;//學(xué)生選課 case 2:p->ShowStuInfo(); break;//學(xué)生情況 case 3:ShowStuSubInfo(p);; break;//選課情況 } IsUpdate(); if (c == 4) break;//退出系統(tǒng) } if (p == NULL) n = 0; } else if (n == 2) { bool t = password2(); while (t) { int c = server(); switch (c) { case 1:menu_2_1(); break; //增加學(xué)生 case 2:menu_2_2(); break; //增加課程 case 3: menu_2_3(); break; //刪除學(xué)生 case 4:menu_2_4(); break; //刪除課程 case 5: menu_2_5(); break; //填寫成績(jī) case 6: menu_2_6(); break; //更改學(xué)分 case 7:menu_2_7(); break; //學(xué)生情況 case 8:menu_2_8(); break; //選課情況 case 9: menu_2_9(); break; //保存數(shù)據(jù) } IsUpdate(); if (c == 0) break; //退出系統(tǒng) } if (!t) n = 0; } } } //學(xué)生端功能函數(shù) void Manage::menu_1_1(Student*p) //學(xué)生選課 { if (p->IsFull()) cout << "你的課程已經(jīng)選滿了" << endl; else { int num; if (ShowSub()==0) cout << "無(wú)課程可以選擇" << endl; else { cout << "請(qǐng)輸入你的選擇" << endl; cin >> num; if (p->FindSub(num)) cout << "此課程你已經(jīng)選擇" << endl; else if (FindSub(num)->IsFull()) cout << "課程人數(shù)已滿" << endl; else { p->AddSub(num); FindSub(num)->AddStu(p->GetNum()); cout << "選課成功" << endl; } } } Update = true; system("pause"); } void Manage::ShowStuSubInfo(Student*p) { SubList*l = p->GetSubPtr()->next; cout << p->GetNum() << " " << p->GetName() << " 選課數(shù)" << p->GetFactSubNum() << endl; while (l) { Subject*s = FindSub(l->num); cout << "\t\t" << s->GetNum() << " " << s->GetName() << " " << s->GetCredit() << endl; float f = s->GetStuScore(p->GetNum()); cout << "\t\t 成績(jī) " << f << endl; cout << "------------------------------" << endl; l = l->next; } } //管理端功能函數(shù) void Manage::menu_2_1() //增加學(xué)生 { system("cls"); int num; char name[20]; cout << "\n\n\t\t\t\t增加學(xué)生操作\n" << endl; cout << "\n\n\t\t請(qǐng)輸入學(xué)生學(xué)號(hào):"; cin >> num; if (FindStu(num)) cout << "學(xué)生已經(jīng)存在" << endl; else { cout << "\n\n\t\t請(qǐng)輸入學(xué)生姓名:"; cin >> name; Student*p = new Student(); p->SetNum(num); p->SetName(name); Student *root = StuRoot; while (root->next) root = root->next; root->next = p; cout << endl << "\t\t增加學(xué)生操作成功,按任意鍵繼續(xù)" << endl; } system("pause"); } void Manage::menu_2_2() //增加課程 { system("cls"); int num; float credit; char name[20]; cout << "\n\n\t\t\t\t增加課程操作\n" << endl; cout << "\n\n\t\t 請(qǐng)輸入課程代號(hào):"; cin >> num; if (FindSub(num)) cout << "\n\t\t此課程已經(jīng)存在,按任意鍵繼續(xù)" << endl; else { cout << "\n\n\t\t請(qǐng)輸入課程名:"; cin >> name; cout << "請(qǐng)輸入課程學(xué)分" << endl; cin >> credit; Subject*p = new Subject(); p->SetNum(num); p->SetName(name); p->SetCredit(credit); Subject *root = SubRoot; while (root->next) root = root->next; root->next = p; cout << endl << "\t\t增加課程操作成功,按任意鍵繼續(xù)" << endl; } system("pause"); } void Manage::menu_2_3() //刪除學(xué)生 { system("cls"); cout << "\n\n\t\t\t\t刪除學(xué)生操作" << endl; if (ShowStu()==0) cout << "無(wú)學(xué)生" << endl; else { int num; cout << "\n\t請(qǐng)輸入要?jiǎng)h除的學(xué)生代學(xué)號(hào):"; cin >> num; Student*p = FindStu(num); if (p == NULL) cout << "無(wú)此學(xué)生" << endl; else { DelStu(p); cout << "\n\t\t刪除學(xué)生操作成功,按任意鍵繼續(xù).." << endl; } } system("pause"); } void Manage::menu_2_4() //刪除課程 { system("cls"); cout << "\n\n\t\t\t\t刪除課程操作" << endl; if (ShowSub()==0) cout << "無(wú)課程" << endl; else { int num; cout << "\n\t請(qǐng)輸入要?jiǎng)h除的課程代號(hào):"; cin >> num; Subject*p = FindSub(num); if (p == NULL) cout << "無(wú)此課程" << endl; else { DelSub(p); cout << "\n\t\t刪除課程操作成功,按任意鍵繼續(xù).." << endl; } } system("pause"); } void Manage::menu_2_5() //填寫成績(jī) { system("cls"); cout << "\n\n\t\t\t\t 填寫成績(jī)操作\n" << endl; if (ShowSub()==0) cout << "\n\n\n\t\t對(duì)不起,暫時(shí)沒有任何選修課程。請(qǐng)按任意鍵繼續(xù).." << endl; else { int num; cout << "請(qǐng)選擇課程代號(hào)" << endl; cin >> num; Subject*p = FindSub(num); if (p == NULL) cerr << "\n\t\t沒有此課程!!請(qǐng)按任意鍵繼續(xù).." << endl; else { cout << p->GetNum() << " 課程名稱" << p->GetName() << " 選課人數(shù)" << p->GetFactStuNum() << endl; int n; cout << "請(qǐng)輸入1確認(rèn)開始填寫成績(jī),按其他鍵退出" << endl; cin >> n; if (n == 1) { StuList*q = p->GetStuPtr()->next; while (q) { Student*l = FindStu(q->num); cout << "\n\n\t\t請(qǐng)?zhí)顚? << q->num << " " << l->GetName() << "的學(xué)生成績(jī)\n" << endl; cin >> q->score; l->SetUpdate(true); q = q->next; } p->SetUpdate(true); } } } Update = true; system("pause"); } void Manage::menu_2_6() //更改學(xué)分 { system("cls"); cout << "\n\n\n\t\t\t\t更改學(xué)分操作\n" << endl; if (ShowSub()==0) cout << "\n\n\n\t\t對(duì)不起,暫時(shí)沒有任何課程。請(qǐng)按任意鍵繼續(xù).." << endl; else { int num; cout << "請(qǐng)選擇課程代號(hào)" << endl; cin >> num; Subject*p = FindSub(num); if (p == NULL) cout << "無(wú)此課程" << endl; else { float n; cout << "\n\t\t\t原來(lái)學(xué)分為:" << p->GetCredit() << endl; cout << "\n\t\t\t現(xiàn)要更改為:"; cin >> n; p->SetCredit(n); StuList*q = p->GetStuPtr()->next; while (q) { FindStu(q->num)->SetUpdate(true); q = q->next; } cout << "\n\t\t更改課程學(xué)分成功,按任意鍵繼續(xù)" << endl; } } Update = true; system("pause"); } void Manage::menu_2_7() { Student *p = StuRoot->next; if (p == NULL) cout << "無(wú)記錄" << endl; else while (p) { ShowStuSubInfo(p); p = p->next; } system("pause"); } void Manage::menu_2_8() //選課情況 { system("cls"); cout << "\n\n\t\t\t\t選課情況操作" << endl; if (ShowSub()==0) cout << "\n\n\n\t\t對(duì)不起,暫時(shí)沒有課程!!請(qǐng)按任意鍵繼續(xù).." << endl; else { int num; cout << "\n\t請(qǐng)輸入要查看的課程代號(hào):"; cin >> num; Subject*p = FindSub(num); if (p == NULL) cout << "\n\t\t無(wú)此課程!!\t請(qǐng)按任意鍵繼續(xù).." << endl; else { cout << p->GetNum() << " " << p->GetName() << " " << p->GetCredit() << endl; cout << "\t\t最大人數(shù):" << p->GetMaxStuNum() << " " << "實(shí)際人數(shù)" << p->GetFactStuNum() << endl; StuList*q = p->GetStuPtr()->next; while (q) { cout <<q->num << " " << FindStu(q->num)->GetName() << " " << q->score << endl; q = q->next; } } } system("pause"); } /*保存數(shù)據(jù) 不過沒有讀取函數(shù) 這個(gè)功能就沒有 讀取懶的寫了... */ void Manage::menu_2_9() { Student*p = StuRoot->next; ofstream o("Student.txt",32); ofstream oo("SubList.txt", 32); while (p) { SubList*t=p->GetSubPtr()->next; o.write(reinterpret_cast<char*>(p), sizeof(*p)); while (t) { oo.write(reinterpret_cast<char*>(t), sizeof(*t)); t = t->next; } p = p->next; } o.close(); oo.close(); Subject*q = SubRoot->next; o.open("Subject.txt", 32); oo.open("StuList.txt", 32); while (q) { StuList*t = q->GetStuPtr()->next; o.write(reinterpret_cast<char*>(q), sizeof(*q)); while (t) { oo.write(reinterpret_cast<char*>(t), sizeof(*t)); t = t->next; } q = q->next; } o.close(); oo.close(); cout << "\n\n\n\t\t\t保存數(shù)據(jù)成功!按任意鍵繼續(xù).." << endl; system("pause"); } int main() { Manage m; m.Start(); return 0; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之順序數(shù)組的實(shí)現(xiàn)
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)之順序數(shù)組的實(shí)現(xiàn)的相關(guān)資料,這里提供實(shí)現(xiàn)實(shí)例,希望通過本文能幫助到大家,需要的朋友可以參考下2017-08-08C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)順序表的進(jìn)階講解
程序中經(jīng)常需要將一組數(shù)據(jù)元素作為整體管理和使用,需要?jiǎng)?chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含的元素個(gè)數(shù)可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲(chǔ)區(qū)里,元素間的順序關(guān)系由它們的存儲(chǔ)順序自然表示2022-04-04C語(yǔ)言簡(jiǎn)明講解三目運(yùn)算符和逗號(hào)表達(dá)式的使用
三目運(yùn)算符,又稱條件運(yùn)算符,它是唯一有3個(gè)操作數(shù)的運(yùn)算符,有時(shí)又稱為三元運(yùn)算符。三目運(yùn)算符的結(jié)合性是右結(jié)合的;逗號(hào)表達(dá)式,是c語(yǔ)言中的逗號(hào)運(yùn)算符,優(yōu)先級(jí)別最低,它將兩個(gè)及其以上的式子聯(lián)接起來(lái),從左往右逐個(gè)計(jì)算表達(dá)式,整個(gè)表達(dá)式的值為最后一個(gè)表達(dá)式的值2022-04-04C語(yǔ)言 while for do while循環(huán)體詳解用法
在不少實(shí)際問題中有許多具有規(guī)律性的重復(fù)操作,因此在程序中就需要重復(fù)執(zhí)行某些語(yǔ)句。一組被重復(fù)執(zhí)行的語(yǔ)句稱之為循環(huán)體,能否繼續(xù)重復(fù),決定循環(huán)的終止條件2021-10-10C++中的不規(guī)則二維數(shù)組實(shí)現(xiàn)代碼
本文介紹了一個(gè)在C++中保存不定長(zhǎng)二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),在這個(gè)結(jié)構(gòu)中,我們使用了一個(gè)含有指針和數(shù)組長(zhǎng)度的結(jié)構(gòu)體,用這樣的一個(gè)結(jié)構(gòu)體構(gòu)造一個(gè)結(jié)構(gòu)體數(shù)組,用于存儲(chǔ)每一個(gè)不定長(zhǎng)的數(shù)組,感興趣的朋友一起看看吧2024-03-03