《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》習(xí)題答案(共66頁(yè))
《《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í)題解答 專心---專注---專業(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、類,把具有相同屬性和相同操作的對(duì)象歸為一類,類是這些對(duì)象的抽象描述,每個(gè)對(duì)象是其所屬類的一個(gè)實(shí)例。 (5)復(fù)雜的對(duì)象可以用簡(jiǎn)單的對(duì)象作為其構(gòu)成部分。 (6)通過(guò)在不同程度上運(yùn)用抽象的原則,可以得到一般類和特殊類。特殊類繼承一般類的屬性與操作,從而簡(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á)類之間的靜態(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ì)改變了軟件開發(fā)的方式。軟件開發(fā)人員能夠利用人類認(rèn)識(shí)事物所采用的一般思維方式來(lái)進(jìn)行軟件開發(fā)。 (2)面向?qū)ο蟪绦蛑械臄?shù)
4、據(jù)的安全性高。外界只能通過(guò)對(duì)象提供的對(duì)外接口操作對(duì)象中的數(shù)據(jù),這可以有效保護(hù)數(shù)據(jù)的安全。
(3)面向?qū)ο蟪绦蛟O(shè)計(jì)有助于軟件的維護(hù)與復(fù)用。某類對(duì)象數(shù)據(jù)結(jié)構(gòu)的改變只會(huì)引起該類對(duì)象操作代碼的改變,只要其對(duì)外提供的接口不發(fā)生變化,程序的其余部分就不需要做任何改動(dòng)。面向?qū)ο蟪绦蛟O(shè)計(jì)中類的繼承機(jī)制有效解決了代碼復(fù)用的問(wèn)題。人們可以像使用集成電路(IC)構(gòu)造計(jì)算機(jī)硬件那樣,比較方便地重用對(duì)象類來(lái)構(gòu)造軟件系統(tǒng)。
二、編程題
【程序參考代碼】
/*學(xué)生信息管理系統(tǒng)C語(yǔ)言源代碼student.c*/
#include 5、ring.h> /*包含字符串處理頭文件*/
#include 6、 char Sex[2]; /*性別,男記為m,女記為f */
Date Birthday; /*出生日期*/
float English, DataStructure, CPlusPlus; /*三門課成績(jī)*/
float Sum, Average; /*總成績(jī)、平均成績(jī)*/
}Student;
char CurFile[40]; /*存放當(dāng)前正在操作的磁盤文件的文件名*/
int IsOpen=0; 7、 /*當(dāng)前是否有磁盤文件被打開標(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(); /*打開學(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.打開學(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)建磁盤文件*/
{ 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() /*打開學(xué)生信息文件*/
{ char FileName[40];
printf("請(qǐng)輸入要打開的數(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文件打開失??!\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文件打開成功!\n", FileName);
strcpy(CurFile, FileName);
}
}
else
printf("%s文件已經(jīng)打開!\n", FileName);
}
else
printf("%s是備份文件,禁止打開此文件!\n", FileName);
ReOrEx();
}
void Display() /* 23、顯示全部學(xué)生信息*/
{ int i;
if(!strcmp(CurFile, ""))
{ printf("當(dāng)前并未打開或新建文件,無(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)前并未打開或新建文件,無(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é)生信息存盤*/
{ FILE *fp;
int i;
if((fp=fopen(FileName, "wb"))==NULL)
{ printf("文件打開失敗!"); return; }
for(i=0;I 36、tud[i], sizeof(struct Stud), 1, fp); }
fclose(fp);
}
void Append() /*添加學(xué)生信息*/
{ if(!strcmp(CurFile, ""))
{ printf("當(dāng)前并未打開或新建文件,無(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)前并未打開或新建文件,無(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)前并未打開或新建文件,無(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)前并未打開或新建文件,無(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)前并未打開或新建文件,無(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)前并未打開或新建文 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)】
直接常量也稱字面值常量,在程序中直接按其書寫形式對(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)行類型檢查,這樣進(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í)符分隔開。
名字空間的作用 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è)較短的縮寫作為別名來(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)化名字空間的使用。但是要注意不能在同一作用
- 溫馨提示:
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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案