《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》習(xí)題答案(共66頁(yè))

上傳人:29 文檔編號(hào):58651301 上傳時(shí)間:2022-02-28 格式:DOC 頁(yè)數(shù):66 大?。?95.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》習(xí)題答案(共66頁(yè))_第1頁(yè)
第1頁(yè) / 共66頁(yè)
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》習(xí)題答案(共66頁(yè))_第2頁(yè)
第2頁(yè) / 共66頁(yè)
《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》習(xí)題答案(共66頁(yè))_第3頁(yè)
第3頁(yè) / 共66頁(yè)

下載文檔到電腦,查找使用更方便

20 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》習(xí)題答案(共66頁(yè))》由會(huì)員分享,可在線閱讀,更多相關(guān)《《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》習(xí)題答案(共66頁(yè))(66頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 《C++程序設(shè)計(jì)》 習(xí)題解答 專(zhuān)心---專(zhuān)注---專(zhuān)業(yè) 目錄 第2部分 習(xí)題解答 第1章 面向?qū)ο蟪绦蛟O(shè)計(jì)概述 一、簡(jiǎn)答題 簡(jiǎn)述面向過(guò)程程序設(shè)計(jì)和面向?qū)ο蟪绦蛟O(shè)計(jì)的編程思想,體會(huì)面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)。 【答案要點(diǎn)】 面向過(guò)程程序設(shè)計(jì)的編程思想:功能分解、逐步求精、模塊化、結(jié)構(gòu)化。當(dāng)要設(shè)計(jì)一個(gè)目標(biāo)系統(tǒng)時(shí),首先從整體上概括出

2、整個(gè)系統(tǒng)需要實(shí)現(xiàn)的功能,然后對(duì)系統(tǒng)的每項(xiàng)功能進(jìn)行逐層分解,直到每項(xiàng)子功能都足夠簡(jiǎn)單,不需要再分解為止。具體實(shí)現(xiàn)系統(tǒng)時(shí),每項(xiàng)子功能對(duì)應(yīng)一個(gè)模塊,模塊間盡量相對(duì)獨(dú)立,通過(guò)模塊間的調(diào)用關(guān)系或全局變量而有機(jī)地聯(lián)系起來(lái)。 面向?qū)ο蟪绦蛟O(shè)計(jì)的編程思想: (1)客觀世界中的事物都是對(duì)象(object),對(duì)象之間存在一定的關(guān)系。 (2)用對(duì)象的屬性(attribute)描述事物的靜態(tài)特征,用對(duì)象的操作(operation)描述事物的行為(動(dòng)態(tài)特征)。 (3)對(duì)象的屬性和操作結(jié)合為一體,形成一個(gè)相對(duì)獨(dú)立、不可分的實(shí)體。對(duì)象對(duì)外屏蔽其內(nèi)部細(xì)節(jié),只留下少量接口,以便與外界聯(lián)系。 (4)通過(guò)抽象對(duì)對(duì)象進(jìn)行分

3、類(lèi),把具有相同屬性和相同操作的對(duì)象歸為一類(lèi),類(lèi)是這些對(duì)象的抽象描述,每個(gè)對(duì)象是其所屬類(lèi)的一個(gè)實(shí)例。 (5)復(fù)雜的對(duì)象可以用簡(jiǎn)單的對(duì)象作為其構(gòu)成部分。 (6)通過(guò)在不同程度上運(yùn)用抽象的原則,可以得到一般類(lèi)和特殊類(lèi)。特殊類(lèi)繼承一般類(lèi)的屬性與操作,從而簡(jiǎn)化系統(tǒng)的構(gòu)造過(guò)程。 (7)對(duì)象之間通過(guò)傳遞消息進(jìn)行通信,以實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系。 (8)通過(guò)關(guān)聯(lián)表達(dá)類(lèi)之間的靜態(tài)關(guān)系。 與傳統(tǒng)的面向過(guò)程程序設(shè)計(jì)相比,面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)如下: (1)從認(rèn)識(shí)論的角度看,面向?qū)ο蟪绦蛟O(shè)計(jì)改變了軟件開(kāi)發(fā)的方式。軟件開(kāi)發(fā)人員能夠利用人類(lèi)認(rèn)識(shí)事物所采用的一般思維方式來(lái)進(jìn)行軟件開(kāi)發(fā)。 (2)面向?qū)ο蟪绦蛑械臄?shù)

4、據(jù)的安全性高。外界只能通過(guò)對(duì)象提供的對(duì)外接口操作對(duì)象中的數(shù)據(jù),這可以有效保護(hù)數(shù)據(jù)的安全。 (3)面向?qū)ο蟪绦蛟O(shè)計(jì)有助于軟件的維護(hù)與復(fù)用。某類(lèi)對(duì)象數(shù)據(jù)結(jié)構(gòu)的改變只會(huì)引起該類(lèi)對(duì)象操作代碼的改變,只要其對(duì)外提供的接口不發(fā)生變化,程序的其余部分就不需要做任何改動(dòng)。面向?qū)ο蟪绦蛟O(shè)計(jì)中類(lèi)的繼承機(jī)制有效解決了代碼復(fù)用的問(wèn)題。人們可以像使用集成電路(IC)構(gòu)造計(jì)算機(jī)硬件那樣,比較方便地重用對(duì)象類(lèi)來(lái)構(gòu)造軟件系統(tǒng)。 二、編程題 【程序參考代碼】 /*學(xué)生信息管理系統(tǒng)C語(yǔ)言源代碼student.c*/ #include /*包含輸入/輸出頭文件*/ #include

5、ring.h> /*包含字符串處理頭文件*/ #include #define MAXSIZE 100 /*能夠處理的學(xué)生總?cè)藬?shù),可以隨意修改*/ typedef struct { /*用于存放生日信息的結(jié)構(gòu)體*/ int year; int month; int day; }Date; typedef struct Stud{ /*用于存放學(xué)生信息的結(jié)構(gòu)體*/ char Num[12]; /*學(xué)號(hào)為11位*/ char Name[11]; /*姓名,最多5個(gè)漢字*/

6、 char Sex[2]; /*性別,男記為m,女記為f */ Date Birthday; /*出生日期*/ float English, DataStructure, CPlusPlus; /*三門(mén)課成績(jī)*/ float Sum, Average; /*總成績(jī)、平均成績(jī)*/ }Student; char CurFile[40]; /*存放當(dāng)前正在操作的磁盤(pán)文件的文件名*/ int IsOpen=0;

7、 /*當(dāng)前是否有磁盤(pán)文件被打開(kāi)標(biāo)志*/ int found=0; /*在查找學(xué)生信息時(shí)是否找到標(biāo)志*/ Student stud[MAXSIZE]; /*用于存放讀入內(nèi)存中的所有學(xué)生信息的全局?jǐn)?shù)組*/ int Index=0; /*存放實(shí)際學(xué)生人數(shù)的全局變量*/ /*各自定義函數(shù)原型聲明*/ void Create(); /*新建學(xué)生信息文件*/ void Open(); /*打開(kāi)學(xué)生信息文件,并讀取學(xué)生信息到全局?jǐn)?shù)組stud

8、中*/ void Display(); /*顯示學(xué)生信息*/ void Search(); /*查詢學(xué)生信息*/ int SearchNum(char* Num); /*按學(xué)號(hào)查詢學(xué)生信息*/ int SearchName(char* Name); /*按姓名查詢學(xué)生信息*/ void Append(); /*添加學(xué)生信息*/ void Modify(); /*修改學(xué)生信息*/ void Delete(); /*刪除學(xué)生信息*/ void

9、 Total(); /*統(tǒng)計(jì)所有學(xué)生某一科目總成績(jī)*/ void Sort(); /*學(xué)生信息排序*/ void Backup(); /*備份學(xué)生信息*/ void menu() /*系統(tǒng)功能菜單*/ { int choice; /*用于保存用戶對(duì)功能菜單的選擇結(jié)果*/ for( ; ; ) { /*顯示系統(tǒng)功能菜單*/ printf("\n*************************************************

10、***\n"); printf("*************** 學(xué)生信息管理系統(tǒng) *******************\n"); printf("****************************************************\n"); printf("************ 1.新建學(xué)生信息文件 *****************\n"); printf("************ 2.打開(kāi)學(xué)生信息文件 *****************\n"); printf("******

11、****** 3.顯示學(xué)生信息 *****************\n"); printf("************ 4.查詢學(xué)生信息 *****************\n"); printf("************ 5.添加學(xué)生信息 *****************\n"); printf("************ 6.修改學(xué)生信息 *****************\n"); printf("************ 7.刪除學(xué)生信息 *****************\

12、n"); printf("************ 8.統(tǒng)計(jì)學(xué)生信息 *****************\n"); printf("************ 9.學(xué)生信息排序 *****************\n"); printf("************ 10.備份學(xué)生信息 *****************\n"); printf("************ 0.退出系統(tǒng) *****************\n"); printf("****************

13、************************************\n"); printf(" 請(qǐng)選擇要執(zhí)行的操作(0~8):_"); scanf("%d", &choice); switch(choice){ case 1: Create(); break; case 2: Open(); break; case 3: Display(); break; case 4: Search(); break; case 5: Append(

14、); break; case 6: Modify(); break; case 7: Delete(); break; case 8: Total(); break; case 9: Sort(); break; case 10: Backup(); break; case 0: return; default: printf("選擇錯(cuò)誤!請(qǐng)重新選擇。\n"); }/*switch結(jié)束*/ }/*for結(jié)束*/ } void ReOrEx()/*在用戶執(zhí)行完一項(xiàng)系統(tǒng)功能后,可以選擇:是繼續(xù)運(yùn)行系統(tǒng),還是

15、退出系統(tǒng)*/ { int n; printf("\n****************************************************\n"); printf("*************** 1. 返回上級(jí)菜單 **************\n"); printf("*************** 0. 退出系統(tǒng) **************\n"); printf("****************************************************\n"); printf("

16、 請(qǐng)選擇(1/0)?_"); scanf("%d",&n); if(n==0) { printf("\n****************************************************\n"); printf("************* 謝謝使用本系統(tǒng)! ***************\n"); printf("****************************************************\n"); exit(1); } } void main()

17、 { printf("****************************************************\n"); printf("********* 歡迎使用學(xué)生信息管理系統(tǒng)! *********\n"); printf("****************************************************\n"); system("pause"); menu();/*系統(tǒng)功能以菜單的形式提供給用戶*/ printf("\n*****************************************

18、***********\n"); printf("************* 謝謝使用本系統(tǒng)! ***************\n"); printf("****************************************************\n"); }/*main函數(shù)結(jié)束*/ /*各自定義函數(shù)實(shí)現(xiàn)代碼*/ int New(char* FileName) /*創(chuàng)建磁盤(pán)文件*/ { FILE *fp; if((fp=fopen(FileName,"w"))==NULL) { return 0; } else { fclo

19、se(fp); Index=0; return 1; } } void Create() /*新建學(xué)生信息文件*/ { char FileName[40]; printf("請(qǐng)輸入新建文件的名稱:"); scanf("%s", &FileName); if(strcmp(FileName, "studentbackup")) { strcat(FileName, ".dat"); if(!New(FileName)) printf("%s文件創(chuàng)建失敗!\n", FileName); else { strcpy(CurFile, Fi

20、leName); printf("%s文件創(chuàng)建成功!\n", FileName); } } else { printf("%s是備份文件,禁止創(chuàng)建與此文件同名的文件!\n",FileName); } ReOrEx(); } void Open() /*打開(kāi)學(xué)生信息文件*/ { char FileName[40]; printf("請(qǐng)輸入要打開(kāi)的數(shù)據(jù)文件的名稱:"); scanf("%s", &FileName); if(strcmp(FileName, "studentbackup")) { strcat(FileNam

21、e, ".dat"); if(IsOpen==0) { FILE *fp; if((fp=fopen(FileName, "rb"))==NULL) { printf("%s文件打開(kāi)失??!\n", FileName); } else { IsOpen=1; Index=0; while(!feof(fp)) { fread(&stud[Index], sizeof(struct Stud), 1, fp); Index++; }

22、 Index--; printf("學(xué)生總?cè)藬?shù)為:%d\n", Index); fclose(fp); printf("%s文件打開(kāi)成功!\n", FileName); strcpy(CurFile, FileName); } } else printf("%s文件已經(jīng)打開(kāi)!\n", FileName); } else printf("%s是備份文件,禁止打開(kāi)此文件!\n", FileName); ReOrEx(); } void Display() /*

23、顯示全部學(xué)生信息*/ { int i; if(!strcmp(CurFile, "")) { printf("當(dāng)前并未打開(kāi)或新建文件,無(wú)法顯示!\n"); } else { printf("\n 顯示所有學(xué)生成績(jī)信息\n\n"); printf("%--12s%--11s%--5s%--14s%--12s%--15s%--12s%--12s%--12s\n", "Num", "Name", "Sex", "Birthday", "English", "DataStructure", "CPlusPlus", "Sum",

24、 "Average"); for(i=0; i

25、ud[i].Sum, stud[i].Average); } } ReOrEx(); } int SearchNum(char* Num) /*按學(xué)號(hào)查詢學(xué)生信息*/ { int i; for(i=0;

26、* Name) /*按姓名查詢學(xué)生信息*/ { int i; for(i=0; i

27、trcmp(CurFile, "")) { printf("當(dāng)前并未打開(kāi)或新建文件,無(wú)法查詢!\n"); } else { printf("\n 查詢某一學(xué)生信息\n"); printf("****************************************************\n"); printf("*************** 1. 按學(xué)號(hào)查詢 *************\n"); printf("*************** 2. 按姓名查詢

28、 *************\n"); printf("****************************************************\n"); printf(" 請(qǐng)選擇(1/2)?_"); scanf("%d", &n); if(n==1) { printf("請(qǐng)輸入學(xué)生學(xué)號(hào):\n"); scanf("%s", Num); i=SearchNum(Num); } else if(n==2) { printf("請(qǐng)輸入學(xué)生姓名:\n"); sca

29、nf("%s", &Name); i=SearchName(Name); } printf("該學(xué)生的具體信息為:\n\n"); printf("%--12s%--11s%--5s%--14s%--12s%--15s%--12s%--12s%--12s\n", "Num", "Name", "Sex", "Birthday", "English", "DataStructure", "CPlusPlus","Sum", "Average"); printf("%--12s%--11s%--5s%4d/%2d/%2d%10.2f%15.2f%12.2f%12.2f%12

30、.2f\n\n", stud[i].Num, stud[i].Name, stud[i].Sex, stud[i].Birthday.year, stud[i].Birthday.month, stud[i].Birthday.day, stud[i].English, stud[i].DataStructure, stud[i].CPlusPlus, stud[i].Sum, stud[i].Average); } ReOrEx(); } void AddData() /*添加一條學(xué)生信息*/ { char Num[12]; char Name[10]; char

31、Sex[2]; int Year, Month, Day; float English, DataStructure, CPP; int location; if(Index>=MAXSIZE) { printf("錯(cuò)誤! 學(xué)生信息已滿,不能添加!\n"); } else { printf("執(zhí)行添加學(xué)生信息操作!\n"); printf("\n請(qǐng)輸入學(xué)生學(xué)號(hào):"); scanf("%s", Num); location=SearchNum(Num); if (!found) { printf("可以進(jìn)行添加操作!\n");

32、 printf("\n請(qǐng)輸入學(xué)生姓名:"); scanf("%s", Name); printf("\n請(qǐng)輸入學(xué)生性別:"); scanf("%s", &Sex); printf("\n請(qǐng)輸入學(xué)生出生年份:"); scanf("%d", &Year); printf("\n請(qǐng)輸入學(xué)生出生月份:"); scanf("%d", &Month); printf("\n請(qǐng)輸入學(xué)生出生日:"); scanf("%d", &Day); printf("\n請(qǐng)輸入

33、學(xué)生英語(yǔ)成績(jī):"); scanf("%f", &English); printf("\n請(qǐng)輸入學(xué)生數(shù)據(jù)結(jié)構(gòu)成績(jī):"); scanf("%f", &DataStructure); printf("\n請(qǐng)輸入學(xué)生C++成績(jī):"); scanf("%f", &CPP); printf("\n"); strcpy(stud[Index].Num, Num); strcpy(stud[Index].Name, Name); strcpy(stud[Inde

34、x].Sex, Sex); stud[Index].Birthday.year=Year; stud[Index].Birthday.month=Month; stud[Index].Birthday.day=Day; stud[Index].English=English; stud[Index].DataStructure=DataStructure; stud[Index].CPlusPlus=CPP; stud[Index].Sum=English+DataStructure+CPP;

35、stud[Index].Average=stud[Index].Sum/3; Index++; printf("插入一條學(xué)生信息操作成功!\n"); } else printf("不能進(jìn)行添加學(xué)生信息操作!\n"); } } void Save(char* FileName) /*學(xué)生信息存盤(pán)*/ { FILE *fp; int i; if((fp=fopen(FileName, "wb"))==NULL) { printf("文件打開(kāi)失??!"); return; } for(i=0;I

36、tud[i], sizeof(struct Stud), 1, fp); } fclose(fp); } void Append() /*添加學(xué)生信息*/ { if(!strcmp(CurFile, "")) { printf("當(dāng)前并未打開(kāi)或新建文件,無(wú)法添加!\n"); } else { AddData(); Save(CurFile); } ReOrEx(); } void ModifyData() /*修改一條學(xué)生信息*/ { char Num[12]; char Name[10]; char Sex[2]; float English

37、, DataStructure, CPP; int Year, Month, Day; int location; printf("\n執(zhí)行修改學(xué)生信息操作!\n\n"); printf("請(qǐng)輸入將要修改的學(xué)生的學(xué)號(hào):"); scanf("%s", Num); location=SearchNum(Num); if (found) { printf("可以進(jìn)行修改學(xué)生信息操作!\n"); printf("\n請(qǐng)輸入學(xué)生姓名:"); scanf("%s", Name); printf("\n請(qǐng)輸入學(xué)生性別:"); scan

38、f("%s", &Sex); printf("\n請(qǐng)輸入學(xué)生出生年份:"); scanf("%d", &Year); printf("\n請(qǐng)輸入學(xué)生出生月份:"); scanf("%d", &Month); printf("\n請(qǐng)輸入學(xué)生出生日:"); scanf("%d", &Day); printf("\n請(qǐng)輸入學(xué)生英語(yǔ)成績(jī):"); scanf("%f", &English); printf("\n請(qǐng)輸入學(xué)生數(shù)據(jù)結(jié)構(gòu)成績(jī):"); scanf("%f", &DataStructu

39、re); printf("\n請(qǐng)輸入學(xué)生C++成績(jī):"); scanf("%f", &CPP); printf("\n"); strcpy(stud[location].Num, Num); strcpy(stud[location].Name, Name); strcpy(stud[location].Sex, Sex); stud[location].Birthday.year=Year; stud[location].Birthday.month=Month; stud

40、[location].Birthday.day=Day; stud[location].English=English; stud[location].DataStructure=DataStructure; stud[location].CPlusPlus=CPP; stud[location].Sum=English+DataStructure+CPP; stud[location].Average=stud[Index].Sum/3; printf("執(zhí)行修改學(xué)生信息操作成功!\n"); } else printf("不能進(jìn)行修改學(xué)生

41、信息操作!\n"); } void Modify() /*修改學(xué)生信息*/ { if(!strcmp(CurFile, "")) { printf("當(dāng)前并未打開(kāi)或新建文件,無(wú)法修改!\n"); } else { ModifyData(); Save(CurFile); } ReOrEx(); } int DeleteData()/*刪除一條學(xué)生信息*/ { char Num[12]; int location,i; printf("\n 執(zhí)行刪除學(xué)生信息操作!\n\n"); printf("警告!學(xué)生信息一

42、旦刪除,將不可恢復(fù)。請(qǐng)小心使用該操作!\n\n"); printf("請(qǐng)輸入將要?jiǎng)h除的學(xué)生的學(xué)號(hào):\n"); scanf("%s", Num); location=SearchNum(Num); if(found) { if(location!=MAXSIZE) { for(i=location; i

43、, stud[i+1].Sex); stud[i].Birthday.year=stud[i+1].Birthday.year; stud[i].Birthday.month=stud[i+1].Birthday.month; stud[i].Birthday.day=stud[i+1].Birthday.day; stud[i].English=stud[i+1].English; stud[i].DataStructure=stud[i+1].DataStructure; stud[i].CPlusPlus=stud[i+1].C

44、PlusPlus; stud[i].Sum=stud[i+1].Sum; stud[i].Average=stud[i+1].Average; } } Index--; return 1; } return 0; } void Delete() /*刪除學(xué)生信息*/ { if(!strcmp(CurFile, "")) { printf("當(dāng)前并未打開(kāi)或新建文件,無(wú)法刪除!\n"); } else { if(DeleteData()) { Save(CurFile); printf("刪除一條學(xué)生信息操作成

45、功!\n"); } else { printf("不能進(jìn)行刪除操作!\n"); printf("刪除一條學(xué)生信息操作失??!\n"); } } ReOrEx(); } float GetOneCourseSum(int n) /*計(jì)算所有學(xué)生某一科目的總成績(jī)*/ { float N=0; int i; switch(n){ case 1://計(jì)算英語(yǔ)總成績(jī) for(i=0; i

46、=0; i

47、某一科目總成績(jī)*/ { int x; if(!strcmp(CurFile, "")) { printf("當(dāng)前并未打開(kāi)或新建文件,無(wú)法統(tǒng)計(jì)成績(jī)!\n"); } else { printf("\n 統(tǒng)計(jì)某一科目總成績(jī)及平均成績(jī)\n"); printf("\n"); printf("****************************************************\n"); printf("*** 1. 統(tǒng)計(jì)《英語(yǔ)》課程總成績(jī)及平均成績(jī) ***\n"); printf("

48、*** 2. 統(tǒng)計(jì)《數(shù)據(jù)結(jié)構(gòu)》課程總成績(jī)及平均成績(jī) ***\n"); printf("*** 3. 統(tǒng)計(jì)《C++》課程總成績(jī)及平均成績(jī) ***\n"); printf("****************************************************\n"); printf(" 請(qǐng)選擇(1-3)?_"); scanf("%d", &x); switch(x) {case 1: printf("\n英語(yǔ)總成績(jī)?yōu)椋?5.2f\n\n", GetOneCourseS

49、um(1)); printf("英語(yǔ)平均成績(jī)?yōu)椋?5.2f\n", GetOneCourseAverage(1)); break; case 2: printf("\n數(shù)據(jù)結(jié)構(gòu)總成績(jī)?yōu)椋?5.2f\n\n", GetOneCourseSum(2)); printf("數(shù)據(jù)結(jié)構(gòu)平均成績(jī)?yōu)椋?5.2f\n", GetOneCourseAverage(2)); break; case 3: printf("\nC++總成績(jī)?yōu)椋?5.2f\n\n", GetOneCourseSum(3));

50、 printf("c++平均成績(jī)?yōu)椋?5.2f\n", GetOneCourseAverage(3)); break; default: printf("選擇錯(cuò)誤!\n"); } } ReOrEx(); } void Bubble(int N) /*冒泡排序*/ { Student temp; int change=1; int i,j; switch(N){ case 1: /*按英語(yǔ)成績(jī)排序*/ { for(i=Index-1; i>=1 && change; --i) { change=0; for(j

51、=0; jstud[j+1].English) { strcpy(temp.Num, stud[j].Num); strcpy(temp.Name, stud[j].Name); strcpy(temp.Sex, stud[j].Sex); temp.Birthday.year=stud[j].Birthday.year; temp.Birthday.month=stud[j].Birthday.month; t

52、emp.Birthday.day=stud[j].Birthday.day; temp.English=stud[j].English; temp.DataStructure=stud[j].DataStructure; temp.CPlusPlus=stud[j].CPlusPlus; temp.Sum=stud[j].Sum; temp.Average=stud[j].Average; strcpy(stud[j].Num, stud[j+1

53、].Num); strcpy(stud[j].Name, tud[j+1].Name); strcpy(stud[j].Sex, stud[j+1].Sex); stud[j].Birthday.year=stud[j+1].Birthday.year; stud[j].Birthday.month=stud[j+1].Birthday.month; stud[j].Birthday.day=stud[j+1].Birthday.day; stud[j].English

54、=stud[j+1].English; stud[j].DataStructure=stud[j+1].DataStructure; stud[j].CPlusPlus=stud[j+1].CPlusPlus; stud[j].Sum=stud[j+1].Sum; stud[j].Average=stud[j+1].Average; strcpy(stud[j+1].Num, temp.Num); strcpy(stud[j+1].Name, temp.Na

55、me); strcpy(stud[j+1].Sex, temp.Sex); stud[j+1].Birthday.year=temp.Birthday.year; stud[j+1].Birthday.month=temp.Birthday.month; stud[j+1].Birthday.day=temp.Birthday.day; stud[j+1].English=temp.English; stud[j+1].DataStructure=temp.Dat

56、aStructure; stud[j+1].CPlusPlus=temp.CPlusPlus; stud[j+1].Sum=temp.Sum; stud[j+1].Average=temp.Average; change=1; } } } break; case 2: /*按數(shù)據(jù)結(jié)構(gòu)成績(jī)排序*/ { for(i=Index-1; i>=1 && change; --i) { change=0; for(j=0; j

57、 if(stud[j].DataStructure>stud[j+1].DataStructure) { ……(此處省略的代碼與按英語(yǔ)成績(jī)排序中的加粗代碼完全一樣) } } } break; case 3: /*按C++成績(jī)排序*/ { for(i=Index-1; i>=1 && change; --i) { change=0; for(j=0; jstud[j+1].CPlusPlus) { ……(此處省略的代碼與按英語(yǔ)成績(jī)排序中的加粗代碼完全

58、一樣) } } } break; case 4: /*按總成績(jī)排序*/ { for(i=Index-1; i>=1 && change; --i) { change=0; for(j=0; jstud[j+1].Sum) { ……(此處省略的代碼與按英語(yǔ)成績(jī)排序中的加粗代碼完全一樣) } } } break; } printf("\n 顯示所有學(xué)生成績(jī)信息\n\n"); printf("%--12s%-

59、-11s%--5s%--14s%--12s%--15s%--12s%--12s%--12s\n", "Num", "Name", "Sex", "Birthday", "English", "DataStructure", "CPlusPlus", "Sum", "Average"); for(i=0;i

60、irthday.year, stud[i].Birthday.month, stud[i].Birthday.day, stud[i].English, stud[i].DataStructure, stud[i].CPlusPlus, stud[i].Sum,stud[i].Average); } } void Sort() /*按某一科目成績(jī)升序顯示學(xué)生成績(jī)*/ { int x; if(!strcmp(CurFile, "")) { printf("當(dāng)前并未打開(kāi)或新建文件,無(wú)法顯示!\n"); } else { printf("\n 按某一科目

61、成績(jī)升序顯示學(xué)生成績(jī)\n"); printf("\n"); printf("****************************************************\n"); printf("*** 1. 按英語(yǔ)成績(jī)升序顯示學(xué)生成績(jī) ***\n"); printf("*** 2. 按數(shù)據(jù)結(jié)構(gòu)成績(jī)升序顯示學(xué)生成績(jī) ***\n"); printf("*** 3. 按C++成績(jī)升序顯示學(xué)生成績(jī) ***\n"); printf("*** 4. 按

62、總成績(jī)成績(jī)升序顯示學(xué)生成績(jī) ***\n"); printf("****************************************************\n"); printf(" 請(qǐng)選擇(1-4)?_"); scanf("%d", &x); printf("\n"); Bubble(x); } ReOrEx(); } void Backup() /*創(chuàng)建備份文件,備份學(xué)生信息*/ { if(!strcmp(CurFile, "")) { printf("當(dāng)前并未打開(kāi)或新建文

63、件,無(wú)法備份!\n"); } else { FILE *fp; int i; if((fp=fopen("studentbackup.dat", "wb"))==NULL) { printf("創(chuàng)建備份文件失敗!"); return; } for(i=0; i

64、第2章 面向過(guò)程程序設(shè)計(jì) 一、簡(jiǎn)答題 1.【答案要點(diǎn)】 直接常量也稱字面值常量,在程序中直接按其書(shū)寫(xiě)形式對(duì)待,如數(shù)字12、字符'a'、字符串"Hello"等,而常變量是變量,系統(tǒng)會(huì)在靜態(tài)存儲(chǔ)區(qū)為常變量分配內(nèi)存空間,如下語(yǔ)句定義的變量PI就是常變量。 const float PI=3.14.159; 常變量在聲明時(shí)必須進(jìn)行初始化,可以用值對(duì)其初始化,也可以使用表達(dá)式,使用表達(dá)式時(shí),系統(tǒng)會(huì)先計(jì)算出表達(dá)式的值,然后再將值賦給常變量。在程序運(yùn)行的過(guò)程中,其值不能發(fā)生變化。 使用常變量的好處,主要表現(xiàn)在以下幾個(gè)方面:(1)常變量更直觀,常變量名可以表示一定的意義;(2)在后期維護(hù)過(guò)程中如果需

65、要改變常變量的值,只要在定義該常變量的語(yǔ)句中修改就可以了,即使在程序中多處用到它也只需要修改這一處。(3)系統(tǒng)可以對(duì)常變量進(jìn)行類(lèi)型檢查,這樣進(jìn)一步降低了程序出錯(cuò)的概率。 2.【答案要點(diǎn)】 main函數(shù)中的第3行代碼有誤,該行代碼直接使用void指針。注釋掉此行,程序運(yùn)行結(jié)果如下: *p = d *p = 100 *p = 1.4013e-043 *p = -9.25596e+061 3.【答案要點(diǎn)】 所謂名字空間就是一個(gè)由程序設(shè)計(jì)者命名的內(nèi)存區(qū)域。程序設(shè)計(jì)者可以根據(jù)需要指定一些有名字的空間域,把一些全局標(biāo)識(shí)符分別放在各個(gè)名字空間中,從而與其他全局標(biāo)識(shí)符分隔開(kāi)。 名字空間的作用

66、:解決程序中名字沖突的問(wèn)題。即在程序運(yùn)行過(guò)程中遇到相同名字的變量,系統(tǒng)能不能正確地區(qū)分它們。 使用名字空間時(shí),語(yǔ)法如下: namespace 名字空間名 { 定義成員 } 訪問(wèn)名字空間的成員時(shí),可以使用如下3種方式之一。 (1)使用名字空間的別名 可以為名字空間起一個(gè)別名來(lái)代替較長(zhǎng)的名字空間名。如: namespace Information { ... } 可以用一個(gè)較短的縮寫(xiě)作為別名來(lái)代替它。如: namespace Info = Information; 通過(guò)這樣一個(gè)語(yǔ)句使得別名Info與原名Information等價(jià),在原來(lái)可以使用Information的位置都可以無(wú)條件的換成Info。 (2)使用“using 名字空間的成員名;” 可以在程序中使用“using名字空間中的成員名;”來(lái)簡(jiǎn)化名字空間的成員訪問(wèn),using后面必須是由名字空間限定的成員。如: using ns1::Tax; 后面訪問(wèn)Tax( )時(shí)就相當(dāng)于ns1::Tax( ),這樣可以避免在每一次訪問(wèn)名字空間的成員時(shí)都用名字空間限定,簡(jiǎn)化名字空間的使用。但是要注意不能在同一作用

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!