《C++面向?qū)ο蟪绦蛟O(shè)計》習(xí)題答案(共66頁)
《《C++面向?qū)ο蟪绦蛟O(shè)計》習(xí)題答案(共66頁)》由會員分享,可在線閱讀,更多相關(guān)《《C++面向?qū)ο蟪绦蛟O(shè)計》習(xí)題答案(共66頁)(66頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-----傾情為你奉上 《C++程序設(shè)計》 習(xí)題解答 專心---專注---專業(yè) 目錄 第2部分 習(xí)題解答 第1章 面向?qū)ο蟪绦蛟O(shè)計概述 一、簡答題 簡述面向過程程序設(shè)計和面向?qū)ο蟪绦蛟O(shè)計的編程思想,體會面向?qū)ο蟪绦蛟O(shè)計的優(yōu)點。 【答案要點】 面向過程程序設(shè)計的編程思想:功能分解、逐步求精、模塊化、結(jié)構(gòu)化。當(dāng)要設(shè)計一個目標(biāo)系統(tǒng)時,首先從整體上概括出
2、整個系統(tǒng)需要實現(xiàn)的功能,然后對系統(tǒng)的每項功能進(jìn)行逐層分解,直到每項子功能都足夠簡單,不需要再分解為止。具體實現(xiàn)系統(tǒng)時,每項子功能對應(yīng)一個模塊,模塊間盡量相對獨立,通過模塊間的調(diào)用關(guān)系或全局變量而有機(jī)地聯(lián)系起來。 面向?qū)ο蟪绦蛟O(shè)計的編程思想: (1)客觀世界中的事物都是對象(object),對象之間存在一定的關(guān)系。 (2)用對象的屬性(attribute)描述事物的靜態(tài)特征,用對象的操作(operation)描述事物的行為(動態(tài)特征)。 (3)對象的屬性和操作結(jié)合為一體,形成一個相對獨立、不可分的實體。對象對外屏蔽其內(nèi)部細(xì)節(jié),只留下少量接口,以便與外界聯(lián)系。 (4)通過抽象對對象進(jìn)行分
3、類,把具有相同屬性和相同操作的對象歸為一類,類是這些對象的抽象描述,每個對象是其所屬類的一個實例。 (5)復(fù)雜的對象可以用簡單的對象作為其構(gòu)成部分。 (6)通過在不同程度上運用抽象的原則,可以得到一般類和特殊類。特殊類繼承一般類的屬性與操作,從而簡化系統(tǒng)的構(gòu)造過程。 (7)對象之間通過傳遞消息進(jìn)行通信,以實現(xiàn)對象之間的動態(tài)聯(lián)系。 (8)通過關(guān)聯(lián)表達(dá)類之間的靜態(tài)關(guān)系。 與傳統(tǒng)的面向過程程序設(shè)計相比,面向?qū)ο蟪绦蛟O(shè)計的優(yōu)點如下: (1)從認(rèn)識論的角度看,面向?qū)ο蟪绦蛟O(shè)計改變了軟件開發(fā)的方式。軟件開發(fā)人員能夠利用人類認(rèn)識事物所采用的一般思維方式來進(jìn)行軟件開發(fā)。 (2)面向?qū)ο蟪绦蛑械臄?shù)
4、據(jù)的安全性高。外界只能通過對象提供的對外接口操作對象中的數(shù)據(jù),這可以有效保護(hù)數(shù)據(jù)的安全。
(3)面向?qū)ο蟪绦蛟O(shè)計有助于軟件的維護(hù)與復(fù)用。某類對象數(shù)據(jù)結(jié)構(gòu)的改變只會引起該類對象操作代碼的改變,只要其對外提供的接口不發(fā)生變化,程序的其余部分就不需要做任何改動。面向?qū)ο蟪绦蛟O(shè)計中類的繼承機(jī)制有效解決了代碼復(fù)用的問題。人們可以像使用集成電路(IC)構(gòu)造計算機(jī)硬件那樣,比較方便地重用對象類來構(gòu)造軟件系統(tǒng)。
二、編程題
【程序參考代碼】
/*學(xué)生信息管理系統(tǒng)C語言源代碼student.c*/
#include 5、ring.h> /*包含字符串處理頭文件*/
#include 6、 char Sex[2]; /*性別,男記為m,女記為f */
Date Birthday; /*出生日期*/
float English, DataStructure, CPlusPlus; /*三門課成績*/
float Sum, Average; /*總成績、平均成績*/
}Student;
char CurFile[40]; /*存放當(dāng)前正在操作的磁盤文件的文件名*/
int IsOpen=0; 7、 /*當(dāng)前是否有磁盤文件被打開標(biāo)志*/
int found=0; /*在查找學(xué)生信息時是否找到標(biāo)志*/
Student stud[MAXSIZE]; /*用于存放讀入內(nèi)存中的所有學(xué)生信息的全局?jǐn)?shù)組*/
int Index=0; /*存放實際學(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é)號查詢學(xué)生信息*/
int SearchName(char* Name); /*按姓名查詢學(xué)生信息*/
void Append(); /*添加學(xué)生信息*/
void Modify(); /*修改學(xué)生信息*/
void Delete(); /*刪除學(xué)生信息*/
void 9、 Total(); /*統(tǒng)計所有學(xué)生某一科目總成績*/
void Sort(); /*學(xué)生信息排序*/
void Backup(); /*備份學(xué)生信息*/
void menu() /*系統(tǒng)功能菜單*/
{ int choice; /*用于保存用戶對功能菜單的選擇結(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)計學(xué)生信息 *****************\n");
printf("************ 9.學(xué)生信息排序 *****************\n");
printf("************ 10.備份學(xué)生信息 *****************\n");
printf("************ 0.退出系統(tǒng) *****************\n");
printf("**************** 13、************************************\n");
printf(" 請選擇要執(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("選擇錯誤!請重新選擇。\n");
}/*switch結(jié)束*/
}/*for結(jié)束*/
}
void ReOrEx()/*在用戶執(zhí)行完一項系統(tǒng)功能后,可以選擇:是繼續(xù)運行系統(tǒng),還是 15、退出系統(tǒng)*/
{ int n;
printf("\n****************************************************\n");
printf("*************** 1. 返回上級菜單 **************\n");
printf("*************** 0. 退出系統(tǒng) **************\n");
printf("****************************************************\n");
printf(" 16、 請選擇(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ù)實現(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("請輸入新建文件的名稱:");
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("請輸入要打開的數(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)前并未打開或新建文件,無法顯示!\n"); }
else
{ printf("\n 顯示所有學(xué)生成績信息\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é)號查詢學(xué)生信息*/
{ int i;
for(i=0; 26、* Name) /*按姓名查詢學(xué)生信息*/
{ int i;
for(i=0; i 27、trcmp(CurFile, ""))
{ printf("當(dāng)前并未打開或新建文件,無法查詢!\n"); }
else
{ printf("\n 查詢某一學(xué)生信息\n");
printf("****************************************************\n");
printf("*************** 1. 按學(xué)號查詢 *************\n");
printf("*************** 2. 按姓名查詢 28、 *************\n");
printf("****************************************************\n");
printf(" 請選擇(1/2)?_");
scanf("%d", &n);
if(n==1)
{ printf("請輸入學(xué)生學(xué)號:\n");
scanf("%s", Num);
i=SearchNum(Num);
}
else if(n==2)
{ printf("請輸入學(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("錯誤! 學(xué)生信息已滿,不能添加!\n"); }
else
{ printf("執(zhí)行添加學(xué)生信息操作!\n");
printf("\n請輸入學(xué)生學(xué)號:");
scanf("%s", Num);
location=SearchNum(Num);
if (!found)
{ printf("可以進(jìn)行添加操作!\n");
32、
printf("\n請輸入學(xué)生姓名:");
scanf("%s", Name);
printf("\n請輸入學(xué)生性別:");
scanf("%s", &Sex);
printf("\n請輸入學(xué)生出生年份:");
scanf("%d", &Year);
printf("\n請輸入學(xué)生出生月份:");
scanf("%d", &Month);
printf("\n請輸入學(xué)生出生日:");
scanf("%d", &Day);
printf("\n請輸入 33、學(xué)生英語成績:");
scanf("%f", &English);
printf("\n請輸入學(xué)生數(shù)據(jù)結(jié)構(gòu)成績:");
scanf("%f", &DataStructure);
printf("\n請輸入學(xué)生C++成績:");
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)前并未打開或新建文件,無法添加!\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("請輸入將要修改的學(xué)生的學(xué)號:");
scanf("%s", Num);
location=SearchNum(Num);
if (found)
{ printf("可以進(jìn)行修改學(xué)生信息操作!\n");
printf("\n請輸入學(xué)生姓名:");
scanf("%s", Name);
printf("\n請輸入學(xué)生性別:");
scan 38、f("%s", &Sex);
printf("\n請輸入學(xué)生出生年份:");
scanf("%d", &Year);
printf("\n請輸入學(xué)生出生月份:");
scanf("%d", &Month);
printf("\n請輸入學(xué)生出生日:");
scanf("%d", &Day);
printf("\n請輸入學(xué)生英語成績:");
scanf("%f", &English);
printf("\n請輸入學(xué)生數(shù)據(jù)結(jié)構(gòu)成績:");
scanf("%f", &DataStructu 39、re);
printf("\n請輸入學(xué)生C++成績:");
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)前并未打開或新建文件,無法修改!\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ù)。請小心使用該操作!\n\n");
printf("請輸入將要刪除的學(xué)生的學(xué)號:\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)前并未打開或新建文件,無法刪除!\n"); }
else
{ if(DeleteData())
{ Save(CurFile);
printf("刪除一條學(xué)生信息操作成 45、功!\n");
}
else
{ printf("不能進(jìn)行刪除操作!\n");
printf("刪除一條學(xué)生信息操作失?。n");
}
}
ReOrEx();
}
float GetOneCourseSum(int n) /*計算所有學(xué)生某一科目的總成績*/
{ float N=0;
int i;
switch(n){
case 1://計算英語總成績
for(i=0; i 46、=0; i 47、某一科目總成績*/
{ int x;
if(!strcmp(CurFile, ""))
{ printf("當(dāng)前并未打開或新建文件,無法統(tǒng)計成績!\n"); }
else
{ printf("\n 統(tǒng)計某一科目總成績及平均成績\n");
printf("\n");
printf("****************************************************\n");
printf("*** 1. 統(tǒng)計《英語》課程總成績及平均成績 ***\n");
printf(" 48、*** 2. 統(tǒng)計《數(shù)據(jù)結(jié)構(gòu)》課程總成績及平均成績 ***\n");
printf("*** 3. 統(tǒng)計《C++》課程總成績及平均成績 ***\n");
printf("****************************************************\n");
printf(" 請選擇(1-3)?_");
scanf("%d", &x);
switch(x)
{case 1:
printf("\n英語總成績?yōu)椋?5.2f\n\n", GetOneCourseS 49、um(1));
printf("英語平均成績?yōu)椋?5.2f\n", GetOneCourseAverage(1));
break;
case 2:
printf("\n數(shù)據(jù)結(jié)構(gòu)總成績?yōu)椋?5.2f\n\n", GetOneCourseSum(2));
printf("數(shù)據(jù)結(jié)構(gòu)平均成績?yōu)椋?5.2f\n", GetOneCourseAverage(2));
break;
case 3:
printf("\nC++總成績?yōu)椋?5.2f\n\n", GetOneCourseSum(3));
50、 printf("c++平均成績?yōu)椋?5.2f\n", GetOneCourseAverage(3));
break;
default: printf("選擇錯誤!\n");
}
}
ReOrEx();
}
void Bubble(int N) /*冒泡排序*/
{ Student temp;
int change=1;
int i,j;
switch(N){
case 1: /*按英語成績排序*/
{ 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)成績排序*/
{ for(i=Index-1; i>=1 && change; --i)
{ change=0;
for(j=0; j
57、 if(stud[j].DataStructure>stud[j+1].DataStructure)
{ ……(此處省略的代碼與按英語成績排序中的加粗代碼完全一樣) }
}
}
break;
case 3: /*按C++成績排序*/
{ for(i=Index-1; i>=1 && change; --i)
{ change=0;
for(j=0; jstud[j+1].CPlusPlus)
{ ……(此處省略的代碼與按英語成績排序中的加粗代碼完全 58、一樣) }
}
}
break;
case 4: /*按總成績排序*/
{ for(i=Index-1; i>=1 && change; --i)
{ change=0;
for(j=0; jstud[j+1].Sum)
{ ……(此處省略的代碼與按英語成績排序中的加粗代碼完全一樣) }
}
}
break;
}
printf("\n 顯示所有學(xué)生成績信息\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() /*按某一科目成績升序顯示學(xué)生成績*/
{ int x;
if(!strcmp(CurFile, ""))
{ printf("當(dāng)前并未打開或新建文件,無法顯示!\n"); }
else
{ printf("\n 按某一科目 61、成績升序顯示學(xué)生成績\n");
printf("\n");
printf("****************************************************\n");
printf("*** 1. 按英語成績升序顯示學(xué)生成績 ***\n");
printf("*** 2. 按數(shù)據(jù)結(jié)構(gòu)成績升序顯示學(xué)生成績 ***\n");
printf("*** 3. 按C++成績升序顯示學(xué)生成績 ***\n");
printf("*** 4. 按 62、總成績成績升序顯示學(xué)生成績 ***\n");
printf("****************************************************\n");
printf(" 請選擇(1-4)?_");
scanf("%d", &x);
printf("\n");
Bubble(x);
}
ReOrEx();
}
void Backup() /*創(chuàng)建備份文件,備份學(xué)生信息*/
{ if(!strcmp(CurFile, ""))
{ printf("當(dāng)前并未打開或新建文 63、件,無法備份!\n"); }
else
{ FILE *fp;
int i;
if((fp=fopen("studentbackup.dat", "wb"))==NULL)
{ printf("創(chuàng)建備份文件失??!"); return; }
for(i=0; i 64、第2章 面向過程程序設(shè)計
一、簡答題
1.【答案要點】
直接常量也稱字面值常量,在程序中直接按其書寫形式對待,如數(shù)字12、字符'a'、字符串"Hello"等,而常變量是變量,系統(tǒng)會在靜態(tài)存儲區(qū)為常變量分配內(nèi)存空間,如下語句定義的變量PI就是常變量。
const float PI=3.14.159;
常變量在聲明時必須進(jìn)行初始化,可以用值對其初始化,也可以使用表達(dá)式,使用表達(dá)式時,系統(tǒng)會先計算出表達(dá)式的值,然后再將值賦給常變量。在程序運行的過程中,其值不能發(fā)生變化。
使用常變量的好處,主要表現(xiàn)在以下幾個方面:(1)常變量更直觀,常變量名可以表示一定的意義;(2)在后期維護(hù)過程中如果需 65、要改變常變量的值,只要在定義該常變量的語句中修改就可以了,即使在程序中多處用到它也只需要修改這一處。(3)系統(tǒng)可以對常變量進(jìn)行類型檢查,這樣進(jìn)一步降低了程序出錯的概率。
2.【答案要點】
main函數(shù)中的第3行代碼有誤,該行代碼直接使用void指針。注釋掉此行,程序運行結(jié)果如下:
*p = d
*p = 100
*p = 1.4013e-043
*p = -9.25596e+061
3.【答案要點】
所謂名字空間就是一個由程序設(shè)計者命名的內(nèi)存區(qū)域。程序設(shè)計者可以根據(jù)需要指定一些有名字的空間域,把一些全局標(biāo)識符分別放在各個名字空間中,從而與其他全局標(biāo)識符分隔開。
名字空間的作用 66、:解決程序中名字沖突的問題。即在程序運行過程中遇到相同名字的變量,系統(tǒng)能不能正確地區(qū)分它們。
使用名字空間時,語法如下:
namespace 名字空間名
{
定義成員
}
訪問名字空間的成員時,可以使用如下3種方式之一。
(1)使用名字空間的別名
可以為名字空間起一個別名來代替較長的名字空間名。如:
namespace Information
{ ... }
可以用一個較短的縮寫作為別名來代替它。如:
namespace Info = Information;
通過這樣一個語句使得別名Info與原名Information等價,在原來可以使用Information的位置都可以無條件的換成Info。
(2)使用“using 名字空間的成員名;”
可以在程序中使用“using名字空間中的成員名;”來簡化名字空間的成員訪問,using后面必須是由名字空間限定的成員。如:
using ns1::Tax;
后面訪問Tax( )時就相當(dāng)于ns1::Tax( ),這樣可以避免在每一次訪問名字空間的成員時都用名字空間限定,簡化名字空間的使用。但是要注意不能在同一作用
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險源安全管理制度
- 安全培訓(xùn)資料:典型建筑火災(zāi)的防治基本原則與救援技術(shù)
- 企業(yè)雙重預(yù)防體系應(yīng)知應(yīng)會知識問答
- 8 各種煤礦安全考試試題
- 9 危險化學(xué)品經(jīng)營單位安全生產(chǎn)管理人員模擬考試題庫試卷附答案
- 加壓過濾機(jī)司機(jī)技術(shù)操作規(guī)程
- 樹脂砂混砂工藝知識總結(jié)
- XXXXX現(xiàn)場安全應(yīng)急處置預(yù)案
- 某公司消防安全檢查制度總結(jié)
- 1 煤礦安全檢查工(中級)職業(yè)技能理論知識考核試題含答案
- 4.燃?xì)獍踩a(chǎn)企業(yè)主要負(fù)責(zé)人模擬考試題庫試卷含答案
- 工段(班組)級安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫試卷含答案-4
- 建筑起重司索信號工安全操作要點
- 實驗室計量常見的30個問問答題含解析