2023年中央廣播電視大學計算機科學與技術專業_第1頁
2023年中央廣播電視大學計算機科學與技術專業_第2頁
2023年中央廣播電視大學計算機科學與技術專業_第3頁
2023年中央廣播電視大學計算機科學與技術專業_第4頁
2023年中央廣播電視大學計算機科學與技術專業_第5頁
已閱讀5頁,還剩18頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

中央廣播電視大學計算機科學與技術專業面向對象程序設計課程考核說明(2023年版)一、考核說明《面向對象程序設計》課程是電大系記錄算機科學與技術專業本科生(專科起點)的一門必修課程。本課程是數據結構、操作系統、計算機網絡、軟件工程等的先修課程,在整個專業教學體系中占據非常重要的基礎地位。本課程重要介紹C++語言的基本語法規則,各種數據類型的定義、表達和使用,各種流程控制語句的定義與作用,類和對象的定義與應用,面向過程和面向對象的程序設計方法等內容。面向對象的思想是需要在實踐中不斷摸索和體會的,學生們在后續課的學習和以后的工作中要積極去運用和實踐。教學的重要目的是讓學生可以建立起思考問題的方法,指導以后的軟件開發實踐。現將該課程考核的有關問題說明如下:1.考核對象全國電大系統開放教育試點計算機科學與技術專業(專科起點本科)學生。2.教學媒體文字主教材《C++面向對象程序設計》王萍編著清華大學出版社出版實驗教材《面向對象程序設計實驗》徐孝凱等編中央廣播電視大學出版社出版錄象教材16講王萍主講中央廣播電視大學音像出版社出版復習資料《面向對象程序設計期末復習指導》中央電大教育雜志社出版發行作業練習《面向對象程序設計形成性考核作業冊》中央電大教育雜志社出版發行網上輔導在電大在線計算機科學與技術《面向對象程序設計》課程網頁上發表3.命題依據本考核說明以電大計算機科學與技術專業《面向對象程序設計教學大綱》為依據編制。本考核說明是考試命題的依據。4.考核規定本課程是以實用為最終目的,重要考核學生對C++語言的掌握限度和對解決一般問題的程序設計能力。不要死記硬背,注重理解和運用。考核分為以下幾個層次:理解:規定學生理解面向過程和面向對象程序設計的基本思想和方法,理解C++語言程序的基本結構,理解各種C++語法成分定義、表達和作用。應用:規定學生可以根據所學的C++語言知識和程序設計知識,分析和理解一般的程序或函數模塊或類模塊,可以根據解決簡樸問題的規定編寫出較規范的并且可讀性好的面向過程或面向對象的函數模塊或程序。綜合應用:規定學生可以綜合運用多個知識點進行比較復雜的程序(函數模塊)分析和設計,考察學生綜合運用知識的能力和實際解決問題的能力。5.命題原則(1)在教學大綱和考核說明所規定的知識范圍內命題。在教學知識范圍之內,需要靈活運用才可以解決問題的試題不屬于超綱。(2)試題的考察規定覆蓋面廣、區分度高。(3)試題兼顧各個能力層次,理解約占40%,應用約占40%,綜合應用約占20%。(4)試題的難易限度和題量適當,按難易限度分為四個層次:容易占20%,較易占30%,較難占30%,難占20%。題量安排以平時可以獨立完畢作業者,能在規定的考試時間內做完并有一定期間檢查為原則。6.試題題型單項選擇題:根據題意,從四種可選擇的答案中選擇合適的一種答案。填空題:根據題意,在畫有橫線或空白處填寫合適內容。程序填充題:根據C++程序或函數(類)模塊,及相應的功能描述,在畫有橫線或空白處填寫合適內容。理解問答題:根據C++程序或函數(類)模塊,回答一些問題。如寫出程序運營結果或函數調用結果,寫出程序或函數所能實現的功能,按題意規定指犯錯誤位置并改正。編程題:給出編程規定和函數原型,編寫出相應的程序或函數模塊。7.考核形式:采用期末考核與形成性考核相結合的方式。形成性考核分為兩種,一種視作業完畢情況和實驗完畢情況而定,占總成績的15%;另一種為期末上機考核,占總成績的15%,完畢一個指定題目的程序開發和調試,由各省級電大在省內統一命題,時間為60分鐘。期末考核占總成績的70%,為閉卷考試,由中央電大統一命題,時間為150分鐘。總成績滿分為100分,合成成績達60分及以上者可獲得該課程規定的4學分,否則不獲得該課程學分。 二、考核內容和規定第一部分程序設計基礎考核目的:考核學生對C++程序結構、程序運營過程、各種數據類型的作用、數據常量表達、表達式構成、運算符含義、簡樸語句和復合語句格式等的掌握限度。考核的知識點:C++語言特點和程序的基本結構。上機輸入、編輯、連接、運營一個C++程序的過程。整數、字符、實數、邏輯等標準數據類型的含義。各種常量的字面表達和符號表達,變量的定義與使用。常用運算符的表達、優先級與結合性。表達式的分類和使用。考核規定:理解:C++語言的有關基本概念、程序結構、數據類型的分類與作用、常量和變量的表達、運算符含義、表達式構成與運算等內容。應用:可以編寫簡樸的程序,能完畢簡樸數據和表達式的輸入和輸出,能運用變量存放輸入數據、臨時數據和計算結果,能運用符號常量存放固定數據,能根據數值計算和數據解決的規定選擇合適的常量或變量表達,能運用運算符進行算術、比較(即關系)和邏輯運算,能把一般數學算式、不等式或條件表達成相應的C++表達式。第二部分流程控制語句與程序模塊的基本結構考核目的:考核學生對各種分支語句、循環語句和跳轉類語句的理解和掌握限度,對程序模塊的順序、分支和循環這三種基本結構的理解限度,對運用流程控制語句編寫程序解決實際問題的能力。考核的知識點:下列各種控制語句的定義格式、執行過程與作用:if語句、switch語句、for語句、while語句、do語句、break語句、continue語句、return語句等。各種分支和循環語句互相嵌套的作用和執行過程。考核規定:理解:各種語句的格式、執行過程與作用,語句之間互相嵌套的概念。應用:(1)可以分析具有if和switch分支類語句的程序模塊并給出功能或執行結果,可以按照分支解決的規定編寫出相應的分支程序。(2)可以分析具有for、while和do循環類語句的程序模塊并給出功能或執行結果,可以按照循環解決的規定編寫出相應的循環程序,如累加計算、數據記錄、求最大值、求平均值等程序。(3)可以實現if和switch語句之間的轉換,可以實現for、while和do循環語句之間的轉換。綜合應用:運用各種流程控制語句和其他語句等已有知識進行比較復雜的程序分析與設計,如雙重或三重循環的程序分析與設計。第三部分函數考核目的:考核學生對變量作用域的理解限度,對函數定義與調用格式的掌握限度,對形式參數和實在參數的使用與結合的理解限度,對模塊化程序設計方法的掌握限度。考核的知識點:模塊化程序設計的概念,多文獻結構的程序。函數的定義、聲明與調用格式,靜態函數的含義。函數定義中值參數、指針參數、數組參數、引用參數、常量參數的聲明格式及作用;函數中帶默認值參數的說明與作用。函數調用中的實參與函數定義中的形參之間的結合過程。函數返回值的一般類型、指針類型和引用類型的作用。變量的作用域和生存期,靜態變量的特點。內聯函數的定義格式及作用。遞歸函數的設計方法和調用過程。函數重載的含義和作用。函數模板的定義格式及作用。考核規定:理解:(1)模塊化程序設計與函數的關系,函數的定義格式與聲明格式,函數調用表達式的格式及執行過程,帶默認值參數的含義與用法。(2)全局變量、局部變量、靜態變量的含義。(3)內聯函數和函數模板的定義與聲明格式,函數模板的實例化,重載函數的作用。應用:(1)可以分析已知函數,給出所能實現的功能或運營結果。(2)可以根據解決問題的需要合理地設立函數參數、函數的返回值類型以及編寫出函數體。(3)運用遞歸函數來簡化程序設計。(4)運用函數重載來優化程序設計。(5)運用函數模板來設計可以解決任何數據類型的程序。第四部分數組、結構、指針和引用考核目的:考核學生對數組、字符串、結構、指針、引用等數據類型的理解和掌握限度。考核的知識點:一維數組的概念、定義和初始化。二維及多維數組的概念、定義和初始化。一維和二維數組元素的下標訪問方式。字符串與字符數組的區別與聯系,字符串的輸入與輸出。常用字符串函數(如strlen,strcpy,strcmp,strcat等)的調用格式與作用。結構類型的定義格式和作用,結構變量的定義格式和初始化。結構成員的表達和使用。指針的概念、定義及初始化。針對指針的各種運算操作。數組名的指針含義,數組元素的下標與指針方式的表達及轉換。數組形參與指針形參之間的等價表達與轉換。引用的定義和初始化,引用參數與值參數的區別。一般變量與數組的存儲空間的動態分派與釋放。考核規定:理解:(1)數組、字符串、結構、指針、引用等的概念、表達和作用。(2)數組的存儲空間分派,數組元素的地址計算,數組元素的下標訪問方式和指針訪問方式。(3)字符串的存儲格式,字符串的輸入輸出方式,字符串函數的調用。(4)數據空間的動態分派與釋放,鏈表的結構與訪問結點的過程。應用:(1)可以分析和設計在一維數組上的順序查找、選擇排序、插入排序等算法。(2)可以分析和設計在二維數組上的矩陣加、減、轉置、乘等運算的算法。(3)可以分析和設計運用字符串函數進行字符串解決的算法。(4)可以分析和設計動態生成的鏈表,在鏈表頭或尾插入或刪除結點的算法,以及遍歷鏈表的算法。(5)可以分析和設計對順序或鏈接表達的棧或隊列進行插入或刪除元素(結點)的算法。(6)可以使用引用類型作為函數的參數類型和返回值類型。綜合應用:運用數組、字符串、結構、指針、引用等數據類型進行程序設計。第五部分類與對象考核目的:考核學生對類這種復雜數據類型的理解和運用限度,對面向對象程序設計方法的掌握限度。考核的知識點:面向對象程序設計的概念。類的定義,類與結構的區別和聯系。類成員的訪問控制與訪問方式。內聯與非內聯成員函數的聲明與定義。對象的生成和初始化。類的作用域。類的構造函數與析構函數。類的拷貝構造函數和賦值重載函數。靜態數據成員和靜態成員函數。對象成員和一般成員的初始化方式。友元函數與友元類。this指針。用數組和鏈表實現隊列類和棧類。考核規定:理解:(1)面向對象程序設計的有關概念。(2)類的定義,類成員的訪問權限,構造函數與析構函數的定義格式及作用。(3)靜態數據成員定義、初始化與作用,靜態函數成員的定義格式與特性。(4)友元函數和友元類的聲明與作用。應用:(1)可以分析和設計具有簡樸類定義的程序。(2)可以使用數組或鏈表建立隊列類和棧類。綜合應用:(1)可以根據程序規定構造滿足規定的類。在構造過程中充足考慮構造函數和析構函數的使用、成員訪問控制的運用、內聯函數的運用、靜態成員的選用。(2)可以根據規定構造多個類完畢所規定的程序設計任務,多個類之間可以發生一定的關系,如一個類作為另一個類的成員或友元、一個類使用另一個類的服務等。第六部分繼承與多態性考核目的:考核學生對面向對象機制(封裝、繼承和多態)的理解和掌握限度。考核的知識點:結構化程序設計和面向對象程序設計思想的不同。繼承(單繼承與多繼承)的含義,派生類的定義和使用。派生類中構造函數和析構函數的執行過程。對派生類和基類中同名成員的訪問方式。靜態聯編與動態聯編的各自的含義和區別。靜態聯編與函數重載,動態聯編與虛函數,多態性。虛基類,抽象類,純虛函數。考核規定:理解:(1)類繼承的概念和作用,派生類的定義格式。(2)派生類對基類的繼承方式,派生類對基類成員的訪問權限。(3)靜態聯編和動態聯編的含義,函數重載和虛函數的作用。應用:(1)能分析具有派生類的程序。(2)可以根據規定構造類的繼承層次,并完畢一定的程序設計。綜合應用:可以運用繼承、虛函數、動態聯編(即多態性)等機制完畢面向對象的程序設計。第七部分運算符重載考核目的:考核學生對運算符重載的理解和掌握限度。考核的知識點:運算符重載的概念與函數定義格式。一般函數的運算符重載和成員函數的運算符重載。引用在運算符重載中的作用。作為友元函數的運算符重載。單目和雙目算術運算符的重載。增1和減1運算符的重載。插入運算符和抽取運算符的重載。圓括號運算符和中括號運算符作為成員函數的重載。考核規定:理解:(1)運算符重載的概念及作用。(2)引用在運算符重載中的作用。(3)運算符重載作為一般函數和成員函數在參數上的區別。應用:可以分析和設計帶有運算符重載的函數或類。三、期末考核試題樣例及解答一、單項選擇(每小題1分,12小題,共12分)1.C++源程序文獻的缺省擴展名為()。A.cppB.exeC.objD.lik2.x>0||y==5的相反表達式為()。A.x<=0||y!=5B.x<=0&&y!=5C.x>0||y!=5D.x>0&&y==53.在下面的字符數組定義中,有語法錯誤的是()。A.chara[20]=“abcdefg”;B.chara[]=“x+y=55.”;C.chara[15];D.chara[10]=’5’;4.以下對的的函數原型語句是()。A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(int,int);D.doublefun(intx,y);5.在下面存儲類中,()的對象不是局部變量。A.外部靜態類B.自動類C.函數形參D.寄存器類6.假定有“structBOOK{chartitle[40];floatprice;};BOOK*book=newBOOK;”,則對的的語句是()。A.strcpy(book->title,”WangTao”);B.strcpy(book.title,”WangTao”);C.strcpy(*book.title,”WangTao”);D.strcpy((*book)->title,”WangTao”);7.軟件產品所具有的所有或部分地再用于新的應用的能力稱為該軟件的()。A.可維護性B.可復用性C.兼容性D.對的性8.在多文獻結構的程序中,通常把具有main()函數的文獻稱為()。A.主文獻B.實現文獻C.程序文獻D.頭文獻9.在一個用鏈表實現的隊列類中,假定每個結點包含的值域用elem表達,包含的指針域用next表達,鏈隊的隊首指針用elemHead表達,隊尾指針用elemTail表達,若鏈隊為空,則進行插入時必須把新結點的地址賦給()。A.elemHeadB.elemTailC.elemHead和elemTailD.elemHead或elemTail10.假定AB為一個類,則執行“ABa,b(2),c[3],*p=&a;”語句時共調用該類無參構造函數的次數為()。A.5B.6C.3D.411.引入友元的重要目的是為了()。A.增強數據安全性B.提高程序的可靠性C.提高程序的效率和靈活性D.保證類的封裝性12.假如是類B在類A的基礎上構造,那么,就稱()。A.類A為基類或父類,類B為超類或子類B.類A為基類、父類或超類,類B為派生類或子類C.類A為派生類,類B為基類D.類A為派生類或子類,類B為基類、父類或超類二、填空(每空1分,15小題,共18分)1.C++語言是在_________語言的基礎上發展起來的。2.假定x=5,y=6,則執行表達式y*=x++計算后,x和y的值分別為__________和__________。3.假定x是一個邏輯量,則x&&false的值為__________。4.在if語句中,每個else關鍵字與它前面同層次并且最接近的________關鍵字相配套。5.一個二維字符數組a[10][20]可以存儲________個字符串,每個字符串的長度至多為________。6.局部變量具有局部生存期,存放在內存的____________區中。7.假定p所指對象的值為25,p+1所指對象的值為42,則執行*(p++)或*p++運算后,p所指對象的值為________。8.已知語句“cout<<s;”的輸出是“apple”,則執行語句“cout<<s+2;”的輸出結果為__________。9.面向對象軟件開發的生命周期分為三個階段,即分析、__________和__________。10.若采用p->abc(y)表達式調用一個成員函數,在成員函數中使用的________就代表了類外的p指針。11.當用戶為一個類定義有____________時,則系統不會為該類再自動生成一個默認構造函數。12.假定用戶為類AB定義了一個構造函數"AB(intaa,intbb):a(aa),b(bb){}",則定義該類的對象時,有________種定義格式。13.假定用戶只為類AB定義了一個構造函數"AB(intaa,intbb=0){a=aa;b=bb;}",則定義該類的對象時,其實參表中至少帶有_________個實參。14.在重載一個單目運算符時,參數表中沒有參數,說明該運算符函數只能是類的_____________。15.若要保證一個公共的基類在派生類中只產生一個基類子對象,則必須都以____________的方式繼承它。三、程序填充。對程序、函數或類中劃有橫線的位置,根據題意按標號把合適的內容填寫到程序下面相應標號的后面(每小題6分,3小題,共18分)1.把從鍵盤上輸入的一個大于等于3的整數分解為質因子的乘積。如輸入24時得到的輸出結果為“2223”,輸入50時得到的輸出結果為“255”,輸入37時得到的輸出結果為“37”。#include<iostream.h>voidmain(){ intx; cout<<"請輸入一個整數,若小于3則重輸:"; docin>>x;while(___(1)___); inti=2; do{ while(___(2)___){ cout<<i<<''; x/=i; } ___(3)___; }while(i<x); if(x!=1)cout<<x; cout<<endl;}(1)(2)(3)2.假定有定義為“structNODE{intdata;NODE*next;};”,下面算法根據table數組中的n個元素建立一個表頭指針為L的鏈表,鏈表中結點值的順序與數組元素值的順序正好相反。voidf6(NODE*&L,inttable[],intn){ L=NULL; if(n<=0)return; inti=0; NODE*p; while(___(1)___){ p=newNODE; p->data=___(2)___; p->next=L; ___(3)___; i++; }}(1)(2)(3)3.已知一個運用數組實現棧的類定義如下:constintARRAY_SIZE=10;classStack{public: voidInit(){top=-1;}//初始化棧為空voidPush(intnewElem);//向棧中壓入一個元素 intPop();//從棧頂彈出一個元素 boolEmpty(){//判棧空returntop==-1;} intDepth(){returntop+1;}//返回棧的深度 voidPrint();//按照后進先出原則依次輸出棧中每個元素,//直到棧空為止private: intelem[ARRAY_SIZE];//用于保存棧元素的數組 inttop;//指明棧頂元素位置的指針};voidStack::Push(intnewElem){ if(___(1)___){ cout<<"棧滿!"<<endl; exit(1);//中止運營 } ___(2)___; elem[top]=___(3)___;}(1)(2)(3)四、寫出程序或程序段的運營結果(每小題6分,3小題,共18分)1.#include<iostream.h>voidmain(){intx=5; switch(2*x-3){ case4:cout<<x<<’’; case7:cout<<2*x+1<<’’; case10:cout<<3*x-1<<’’;break; default:cout<<"default"<<endl; } cout<<"switchend."<<endl;}2.#include<iostream.h>voidmain(){ inti,j,len[3]; chara[3][8]={"year","month","day"}; for(i=0;i<3;i++){ for(j=0;j<8;j++) if(a[i][j]=='\0'){ len[i]=j;break; } cout<<a[i]<<":"<<len[i]<<endl; }}3.#include<iostream.h>#include<string.h>classPoint{ intx,y;public: Point(intx1=0,inty1=0):x(x1),y(y1){ cout<<"Point:"<<x<<''<<y<<'\n'; } ~Point(){ cout<<"Pointdes!\n"; }};classText{chartext[100]; //文字內容public: Text(char*str){strcpy(text,str);cout<<"Textcon!\n"; } ~Text() {cout<<"Textdes!\n";}};classCircleWithText:publicPoint,publicText{public: CircleWithText(intcx,intcy,char*msg): Point(cx,cy),Text(msg){ cout<<"PointwithTextcon!\n"; } ~CircleWithText(){cout<<"PointwithTextdes\n";}};voidmain(){ CircleWithTextcm(3,4,"hello"); }五、指出程序或函數的功能(每小題6分,2小題,共12分)1.doublef1(doublea,doubleb,charop){ switch(op){ case’+’:returna+b; case’-’:returna-b; case’*’:returna*b; case’/’:if(b==0){ cout<<"dividedby0!"<<endl; exit(1); } elsereturna/b; default:cout<<"operatorerror!"<<endl; exit(1); }}功能:2.IntNode*FindMax(IntNode*f){ if(!f)returnNULL; IntNode*p=f; f=f->next; while(f){ if(f->data>p->data)p=f; f=f->next; } returnp;}假定IntNode的類型定義為:structIntNode{ intdata;//結點值域 IntNode*next;//結點指針域};功能:六、程序改錯。請根據程序或函數模塊的功能改寫個別地方的錯誤(每小題6分,共6分)。在下面的定義中,NODE是鏈表結點的結構,appendToList則是一函數,其功能是:在list所指向的鏈表的末尾添加一個新的值為x的結點,并返回表頭指針。函數中有兩處錯誤,指犯錯誤所在行的行號并提出改正意見。structNODE{intdata;NODE*next;};NODE*appendToList(NODE*list,intx){//1行NODE*p=newint;//2行p->data=x;//3行p->next=NULL;//4行if(list==NULL)returnp;//5行NODE*p1=list;//6行while(p1->next!=NULL)p1=p1->next;//7行p1=p;//8行returnlist;}錯誤行的行號為______和________。分別改正為______________和______________。七、編程(每小題8分,2小題,共16分)1.編一程序求出滿足不等式的最小n值并輸出。2.根據下面類中MaxMin函數成員的原型和注釋寫出它的類外定義。classAA{ int*a; intn; intMS;public: voidInitAA(intaa[],intnn,intms){ if(nn>ms){cout<<"Error!"<<endl;exit(1);} MS=ms; n=nn; a=newint[MS]; for(inti=0;i<MS;i++)a[i]=aa[i]; }intMaxMin(int&x,int&y);//從數組a的前n個元素中求出//最大值和最小值,并分別由引用參數x和y帶回,//同時若n大于0則返回1,否則返回0。};試題參考解答:一、單項選擇1.A2.B3.D4.C5.A6.A7.B8.A9.C10.D11.C12.B二、填空1.C2.630

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論