C語言程序設(shè)計A期末模擬試題(1-4)Word版_第1頁
C語言程序設(shè)計A期末模擬試題(1-4)Word版_第2頁
C語言程序設(shè)計A期末模擬試題(1-4)Word版_第3頁
C語言程序設(shè)計A期末模擬試題(1-4)Word版_第4頁
C語言程序設(shè)計A期末模擬試題(1-4)Word版_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

整理為word格式整理為word格式整理為word格式C語言程序設(shè)計A期末模擬試題一一、單項選擇題(每小題2分,共20分)由C++目標文件連接而成的可執(zhí)行文件的缺省擴展名為()。A.cppB.exeC.objD.likx>0&&x<=10的相反表達式為()。A.x<=0||x>10B.x<=0&&x>10C.x<=0||x<=10D.x>0&&x>10在下面的一維數(shù)組定義中,哪一個有語法錯誤。(C)A.inta[]={1,2,3};B.inta[10]={0};C.inta[];D.inta[5];假定p是具有double類型的指針變量,則表達式++p使p的值(以字節(jié)為單位)增加(C)。A.1B.4C.sizeof(double)D.sizeof(p)當(dāng)#include后面的文件名用雙引號括起來時,尋找被包含文件的方式是(B)。A.直接按系統(tǒng)設(shè)定的標準方式搜索目錄B.先在源程序所在目錄搜索,再按系統(tǒng)設(shè)定的標準方式搜索目錄C.僅僅搜索源程序所在目錄D.搜索當(dāng)前邏輯盤上的所有目錄假定指針變量p定義為“int*p=newint(100);”,要釋放p所指向的動態(tài)內(nèi)存,應(yīng)使用語句(A)。A.deletep;B.delete*p;C.delete&p;D.delete[]p;假定AA為一個類,a為該類公有的數(shù)據(jù)成員,px為指向該類對象的一個指針,則訪問px所指對象中數(shù)據(jù)成員a的格式為()。A.px(a)B.px[a]C.px->aD.px.a棧具有()的操作特性。A.先進先出B.先進后出C.進出無序D.進出任意對于任一個類,用戶所能定義的構(gòu)造函數(shù)的個數(shù)至多為()。A.0B.1C.2D.任意個下列對派生類的描述中錯誤的說法是:()。A.派生類至少有一個基類B.派生類可作為另一個派生類的基類C.派生類除了包含它直接定義的成員外,還包含其基類的成員D.派生類所繼承的基類成員的訪問權(quán)限保持不變二、填空題(每題2分,共20分)C++語言是在_________語言的基礎(chǔ)上發(fā)展起來的。當(dāng)執(zhí)行cin語句時,從鍵盤上輸入每個數(shù)據(jù)后必須接著輸入一個________符,然后才能繼續(xù)輸入下一個數(shù)據(jù)。假定x是一個邏輯量,則x&&false的值為__________。元素類型為char的二維數(shù)組a[10][30]共占用________字節(jié)的存儲空間。局部變量具有局部生存期,存放在內(nèi)存的______棧______區(qū)中。已知語句“cout<<p;”的輸出是“Hello!”,則語句“cout<<*p;”輸出的是__________。對類中常量成員的初始化是通過在構(gòu)造函數(shù)中給出的______________來實現(xiàn)的。在重載一個單目運算符時,參數(shù)表中沒有參數(shù),說明該運算符函數(shù)只能是類的_____________。假定用戶為類AB定義了一個構(gòu)造函數(shù)“AB(intaa):a(aa){}”,則定義該類的對象時,有________種定義格式。在每個成員函數(shù)中,隱含的第一個參數(shù)的參數(shù)名為________。三、程序填充題(對程序、函數(shù)或類中劃有橫線的位置,根據(jù)題意按標號把合適的內(nèi)容填寫到程序下面相應(yīng)標號的后面。每小題6分,共24分)1.斐波那契數(shù)列的第1和第2個數(shù)分別為0和1,從第三個數(shù)開始,每個數(shù)等于其前兩個數(shù)之和。求斐波那契數(shù)列中的前20個數(shù),要求每行輸出5個數(shù)。#include<iostream.h>voidmain(){intf,f1,f2,i;cout<<”斐波那契數(shù)列:\n”;f1=0;f2=1;cout<<setw(6)<<f1<<setw(6)<<f2;for(i=3;i<=20;i++){f=______(1)______;cout<<setw(6)<<f;if(_____(2)______)cout<<endl;f1=f2;f2=____(3)_______;}cout<<endl;}(1)(2)(3)2.對數(shù)組a[n]按升序進行的選擇排序算法voidSelectSort(inta[],___(1)___){整理為word格式整理為word格式整理為word格式 inti,j,k; for(i=1;i<n;i++){//進行n-1次選擇和交換k=i-1; for(j=i;j<n;j++) if(a[j]<a[k])___(2)___; intx=a[i-1];a[i-1]=a[k];___(3)___; }}(1)(2)(3)3.已知一個類的定義如下:#include<iostream.h>classAA{ inta[10]; intn;public: voidSetA(intaa[],intnn);//用數(shù)組aa初始化數(shù)據(jù)成員a, //用nn初始化數(shù)據(jù)成員n intMaxA();//從數(shù)組a中前n個元素中查找最大值voidSortA();//采用選擇排序的方法對數(shù)組a中前n個元素//進行從小到大排序voidInsertA();//采用插入排序的方法對數(shù)組a中前n個元素進行從小到大排序 voidPrintA();//依次輸出數(shù)組a中的前n個元素};該類中MaxA()函數(shù)的實現(xiàn)如下,請在標號位置補充適當(dāng)?shù)膬?nèi)容。int____(1)_____{ intx=a[0]; for(inti=1;i<n;i++) if(a[i]>x)___(2)___; ___(3)___;}(1)(2)(3)4.classA{inta;public:A(){a=0;}___(1)___{}//定義構(gòu)造函數(shù),用參數(shù)aa初始化數(shù)據(jù)成員a};main(){___(2)___;//定義類A的指針對象p___(3)__;//用p指向動態(tài)對象并初始化為整數(shù)5}(1)(2)(3)四、理解問答題(寫出前兩小題的程序運行結(jié)果和指出后兩小題的程序(或函數(shù))所實現(xiàn)的功能。每小題6分,共24分)1.#include<iostream.h>#include<stdlib.h>voidmain(){ inta[8]={25,48,32,85,64,18,48,29};intmax,min; max=min=a[0]; for(inti=0;i<8;i++){if(x>a[i])max=a[i]; if(x<a[i])min=a[i]; } cout<<"max:"<<max<<endl; cout<<"min:"<<min<<endl;}2.#include<iostream.h>voidmain(){for(inti=1,s=0;i<20;i++){ if(i%2==0||i%3==0)continue; cout<<i<<’’; s+=i; } cout<<s<<endl;}3.voidtrans(intx){ chara[10]; inti=0,rem; do{ rem=x%16; x=x/16; if(rem<10)a[i]=48+rem;//整理為word格式整理為word格式整理為word格式’0’字符的ASCII碼為48 elsea[i]=55+rem;//’A’字符的ASCII碼為65 i++; }while(x!=0); while(i>0)cout<<a[i]; cout<<endl;}4.char*f(char*s){intn=strlen(s);char*r=newchar[n+1];for(inti=0;i<n;i++)if(s[i]>='a'&&s[i]<='z')r[i]=s[i]-'a'+'A';elser[i]=s[i];r[n]=’\0’;returnr;}五、編程題(每小題6分,共12分)1.求出從鍵盤上輸入的10個整數(shù)中的最大值,要求輸入變量用x表示,存儲最大值的變量用max表示。2.根據(jù)下面類中Reverse函數(shù)成員的原型和注釋寫出它的類外定義。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]; }AA*Reverse();//對于調(diào)用該函數(shù)的對象,將其a數(shù)組中前n個//元素值按相反的次序排列,返回指向該對象的指針。};C語言程序設(shè)計A期末模擬試題一參考答案單選題1.B 2.A 3.C 4.B 5.C 6.A 7.C 8.B 9.D 10.D填空題1.C 2.空白 3.false(或0) 4.300 5.棧 6.H 7.初始化表 8.成員函數(shù) 9.1 10.this三、程序填充題1.(1)f1+f2 (2)i%5==0(3)f2.(1)intn (2)k=j(3)a[k]=x3.(1)AA::MaxA() (2)x=a[i](3)returnx4.(1)A(intaa):a(aa)(2)A*p(3)p=newA(5)四、理解問答題1.max:85min:182.1571113373.此函數(shù)用于把十進制整數(shù)x轉(zhuǎn)換為十六進制數(shù)字串輸出4.根據(jù)參數(shù)s所指向的字符串,生成一個由r所指向的新字符串并返回,該字符串使s字符串中的小寫字母均變?yōu)榇髮?。五、編程題1.#include<iostream.h>voidmain(){ intx,max; cin>>x; max=x;for(inti=0;i<9;i++){ cin>>x; if(x>max)max=x; } cout<<"max:"<<max<<endl;}整理為word格式整理為word格式整理為word格式2.AA*AA::Reverse(){ inti,x; for(i=0;i<n/2;i++){ x=a[i];a[i]=a[n-1-i];a[n-1-i]=x; }returnthis;}C語言程序設(shè)計A期末模擬試題二一、單項選擇題(每小題2分,共20分)編寫C++程序一般需經(jīng)過的幾個步驟依次是()。A.編譯、編輯、連接、調(diào)試B.編輯、編譯、連接、調(diào)試C.編譯、調(diào)試、編輯、連接D.編輯、調(diào)試、編輯、連接假定一個二維數(shù)組的定義語句為“inta[3][4]={{3,4},{2,8,6}};”,則元素a[2][1]的值為(A)。A.0B.4C.8D.6函數(shù)重載是指(A)。A.兩個或兩個以上的函數(shù)取相同的函數(shù)名,但形參的個數(shù)或類型不同B.兩個以上的函數(shù)取相同的名字和具有相同的參數(shù)個數(shù),但形參的類型可以不同C.兩個以上的函數(shù)名字不同,但形參的個數(shù)或類型相同D.兩個以上的函數(shù)取相同的函數(shù)名,并且函數(shù)的返回類型相同假定p指向的字符串為”string”,若要輸出這個字符串的地址值,則使用(D)。A.cout<<*s;B.cout<<s;C.cout<<&s;D.cout<<(void*)s;在類作用域中能夠通過直接使用該類的()成員名進行訪問。A.私有B.公用C.保護D.任何假定AA為一個類,a為該類公有的數(shù)據(jù)成員,若要在該類的一個成員函數(shù)中訪問它,則書寫格式為()。A.aB.AA::aC.a()D.AA::a()在一個用數(shù)組實現(xiàn)的隊列類中,假定數(shù)組長度為MS,隊首元素位置為first,隊列長度為length,則隊尾(即最后一個)元素的位置為()。A.length+1B.first+lengthC.(first+length-1)%MSD.(first+length)%MS假定AB為一個類,則執(zhí)行“ABr1=r2;”語句時將自動調(diào)用該類的()。A.無參構(gòu)造函數(shù)B.帶參構(gòu)造函數(shù)C.賦值重載函數(shù)D.拷貝構(gòu)造函數(shù)雙目運算符重載為普通函數(shù)時,其參數(shù)表中應(yīng)帶有()個參數(shù)。A.0B.1C.2D.3當(dāng)派生類中有和基類一樣名字的成員時,一般來說,()。A.將產(chǎn)生二義性B.派生類的同名成員將覆蓋基類的成員C.是不能允許的D.基類的同名成員將覆蓋派生類的成員二、填空題(每題2分,共20分)行尾使用注釋的開始標記符為__________。設(shè)enumPrintstatus{ready=2,busy,error};則cout<<busy的輸出結(jié)果是________。重載一個函數(shù)的條件是:該函數(shù)必須在參數(shù)的個數(shù)或參數(shù)的___類型_上與其它同名函數(shù)有所不同。定義一個函數(shù)模板要用到的第一個修飾符是_template_。與結(jié)構(gòu)成員訪問表達式p->name等價的表達式是____________。如果一個派生類的基類不止一個,則這種繼承稱為____________。在一個用數(shù)組實現(xiàn)的隊列類中,假定數(shù)組長度為MS,隊首元素位置為first,隊列長度為length,則插入一個新元素的位置為__________。向一個隊列中插入元素就是把該元素放到________元素的后一位置上。假定用戶只為類AB定義了一個構(gòu)造函數(shù)“AB():a(0),b(0){}”,則定義該類對象x的定義語句“ABx;”是_________(正確/錯誤)的。除了__________運算符外,其他重載的運算符都可以被派生類繼承。三、程序填充題(對程序、函數(shù)或類中劃有橫線的位置,根據(jù)題意按標號把合適的內(nèi)容填寫到程序下面相應(yīng)標號的后面。每小題6分,共24分)1.統(tǒng)計字符串中英文字母個數(shù)的程序。#include<iostream.h>intcount(charstr[]);voidmain(){chars1[80];整理為word格式整理為word格式整理為word格式cout<<”Enteraline:”;cin>>s1;cout<<”count=”<<count(s1)<<endl;}intcount(charstr[]){intnum=0;//給統(tǒng)計變量賦初值for(inti=0;str[i];i++)if(str[i]>=’a’&&str[i]<=’z’||___(1)___)___(2)___;___(3)___;}(1)(2)(3)2.從鍵盤上輸入一個正整數(shù),然后把它轉(zhuǎn)換成的二進制數(shù)的每一位存放到一維數(shù)組中,最后輸出該二進制數(shù)。注意二進制數(shù)的存放是按照從低位到高位的次序進行的。#include<iostream.h>voidmain(){ intx;cout<<"輸入一個整數(shù):";cin>>x;inta[20],k=0,r;do{ r=x%2;a[k++]=r;x=___(1)___; }while(___(2)___);for(--k;k>=0;k--)___(3)___;cout<<endl;}(1)(2)(3)3.假定有定義為“structNODE{intdata;NODE*next;};”,下面算法根據(jù)table數(shù)組中的n個元素建立一個表頭指針為L的鏈表,鏈表中結(jié)點值的順序與數(shù)組元素值的順序正好相反。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)4.已知一個利用數(shù)組實現(xiàn)棧的類定義如下:constintARRAY_SIZE=10;classStack{public: voidInit(){top=-1;}//初始化棧為空voidPush(intnewElem);//向棧中壓入一個元素 intPop();//從棧頂彈出一個元素 boolEmpty(){//判棧空if(top==-1)returntrue;elsereturnfalse;} intDepth(){returntop+1;}//返回棧的深度 voidPrint();//按照后進先出原則依次輸出棧中每個元素,直到??諡橹筽rivate: intelem[ARRAY_SIZE];//用于保存堆棧元素的數(shù)組 inttop;//指明棧頂元素位置的指針};該類的Pop和Print函數(shù)的實現(xiàn)分別如下:___(1)___{ if(top==-1){ cout<<"???"<<endl; exit(1);//中止運行 } return___(2)___;}voidStack::Print(){ while(!Empty()) cout<<___(3)___<<'';}整理為word格式整理為word格式整理為word格式(1)(2)(3)四、理解問答題(寫出前兩小題的程序運行結(jié)果和指出后兩小題的程序(或函數(shù))所實現(xiàn)的功能。每小題6分,共24分)1.#include<iomanip.h>constintN=5;voidmain(){inti,p=1,s=0; for(i=1;i<N;i++){ p=p*i; s=s+p; cout<<setw(5)<<i<<setw(5)<<p; cout<<setw(5)<<s<<endl; }}2.#include<iostream.h>#include<string.h>classCD{ char*a; intb;public: voidInit(char*aa,intbb) { a=newchar[strlen(aa)+1]; strcpy(a,aa); b=bb; } char*Geta(){returna;} intGetb(){returnb;} voidOutput(){cout<<a<<''<<b<<endl;}};voidmain(){ CDdx,dy; chara[20]; dx.Init("abcdef",30); strcpy(a,dx.Geta()); strcat(a,"xyz"); dy.Init(a,dx.Getb()+20); dx.Output(); dy.Output();}3.#include<iostream.h>#include<stdlib.h>#include<math.h>voidmain(){inti=10,a; while(i>0){ a=rand()%100+10; intj,k=int(sqrt(a)+1e-5);//sqrt(x)為求x的平方根函數(shù)for(j=2;j<=k;j++) if(a%j==0)break; if(j>k){cout<<a<<'';i--;} }}4.intf8(constchar*str1,constchar*str2){inti=0;while(str1[i]&&str2[i]) if(str1[i]==str2[i])i++; elseif(str1[i]>str2[i])return1; elsereturn-1; if(str1[i]==str2[i])return0; elseif(str1[i]>str2[i])return1; elsereturn-1;}五、編程題(每小題6分,共12分)1.按照下面函數(shù)原型語句編寫一個函數(shù),返回二維數(shù)組a[m][n]中所有元素的平均值,假定采用變量v存放平均值。2.根據(jù)下面類中MaxMin函數(shù)成員的原型和注釋寫出它的類外定義。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];整理為word格式整理為word格式整理為word格式 for(inti=0;i<MS;i++)a[i]=aa[i]; }intMaxMin(int&x,int&y);//從數(shù)組a的前n個元素中求出//最大值和最小值,并分別由引用參數(shù)x和y帶回,//同時若n大于0則返回1,否則返回0。};整理為word格式整理為word格式整理為word格式C語言程序設(shè)計A期末模擬試題二參考答案單選題1.B 2.A 3.A 4.D 5.B 6.A 7.C 8.D 9.C 10.B填空題1.// 2.3 3.類型 4.template 5.(*p).name 6.多繼承 7.(first+length)%MS 8.隊尾 9.正確 10.賦值三、程序填充題1.(1)str[i]>=’A’&&str[i]<=’Z’ (2)num++(3)returnnum2.(1)x/2(2)x!=0(3)cout<<a[k]3.(1)i<n(2)table[i](3)L=p4.(1)intStack::Pop()(2)elem[top--](3)Pop()四、理解問答題1.111223369424332.abcdef30abcdefxyz503.隨機產(chǎn)生出10個10至100之間的素數(shù)并顯示出來。4.實現(xiàn)strcmp函數(shù)的功能,比較兩個字符串str1和str2的大小,若str1較大則返回1,若str2較大則返回-1,若兩者相等則返回0。五、編程題1.doubleMean(doublea[M][N],intm,intn);doubleMean(doublea[M][N],intm,intn){inti,j;doublev=0.0;for(i=0;i<m;i++)for(j=0;j<n;j++)v+=a[i][j];v/=m*n;returnv;}2.intAA::MaxMin(int&x,int&y){ intmx,my; mx=my=a[0]; for(inti=1;i<n;i++){if(a[i]>mx)mx=a[i]; if(a[i]<my)my=a[i]; } x=mx;y=my; if(n>0)return1;elsereturn0;}C語言程序設(shè)計A期末模擬試題三一、單項選擇題(每小題2分,共20分)C++程序的基本模塊為()。A.表達式B.標識符C.語句D.函數(shù)設(shè)x和y均為bool量,則x&&y為真的條件是()。A.它們均為真B.其中一個為真C.它們均為假D.其中一個為假函數(shù)調(diào)用不可以(D)。A.出現(xiàn)在一個表達式中B.出現(xiàn)在執(zhí)行語句中C.作為一個函數(shù)的實參D.作為一個函數(shù)的形參假定變量m定義為“intm=7;”,則定義變量p的正確語句為(B)。A.intp=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;假定有“structBOOK{chartitle[40];floatprice;};BOOK*book;”,則不正確的語句為(A)。整理為word格式整理為word格式整理為word格式A.BOOK*x=newbook;B.BOOKx={"C++Programming",27.0};C.BOOK*x=newBOOK;D.BOOK*x=book;假定變量x定義為“intx=5;”,要使rx成為x的引用(別名),rx應(yīng)定義為(D)。A.intrx=x;B.intrx=&x;C.int*rx=&x;D.int&rx=x;面向?qū)ο蠓椒ǖ亩鄳B(tài)性是指()。A.一個類可以派生出多個特殊類B.一個對象在不同的運行環(huán)境中可以有不同的變體C.針對一消息,不同的對象可以以適合自身的方式加以響應(yīng)D.一個對象可以是由多個其他對象組合而成的面向?qū)ο筌浖_發(fā)中使用的OOD表示()。A.面向?qū)ο蠓治鯞.面向?qū)ο笤O(shè)計C.面向?qū)ο笳Z言D.面向?qū)ο蠓椒ㄔ陉P(guān)鍵字private后面定義的成員為類的()成員。A.私有B.公用C.保護D.任何假定AA為一個類,inta()為該類的一個成員函數(shù),若該成員函數(shù)在類定義體外定義,則函數(shù)頭為()。A.intAA::a()B.intAA:a()C.AA::a()D.AA::inta()二、填空題(每題2分,共20分)C++語言的編譯單位是擴展名為_CPP__的_____程序_____文件。C++常數(shù)0345對應(yīng)的十進制值為__________。假定x是一個邏輯量,則!x||false的值為__________。若a是一個字符數(shù)組,則從鍵盤上向該數(shù)組輸入一個字符串的表達式為____cin>>a____。當(dāng)定義一個結(jié)構(gòu)體變量時,系統(tǒng)分配給該變量的內(nèi)存大小等于各成員所需內(nèi)存大小的____總和___。若p指向x,則____*p____與x的表示是等價的。已知語句“cout<<s;”的輸出是“apple”,則執(zhí)行語句“cout<<s+2;”的輸出結(jié)果為__________。若采用p->abc(y)表達式調(diào)用一個成員函數(shù),在成員函數(shù)中使用的________就代表了類外的p指針。重載插入運算符<<或抽取運算符>>時,其運算符函數(shù)不能被定義為類的________函數(shù)。在一個或若干個類的基礎(chǔ)上構(gòu)造一個新類,被稱為___________。三、程序填充題(對程序、函數(shù)或類中劃有橫線的位置,根據(jù)題意按標號把合適的內(nèi)容填寫到程序下面相應(yīng)標號的后面。每小題6分,共24分)1.把從鍵盤上輸入的一個大于等于3的整數(shù)分解為質(zhì)因子的乘積。如輸入24時得到的輸出結(jié)果為“2223”,輸入50時得到的輸出結(jié)果為“255”,輸入37時得到的輸出結(jié)果為“#include<iostream.h>voidmain(){ intx; cout<<"請輸入一個整數(shù),若小于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.主函數(shù)調(diào)用一個fun函數(shù)將字符串逆序。#include<iostream.h>#include<string.h>___(1)___;voidmain(){chars[80];cin>>s;___(2)___;cout<<”逆序后的字符串:”<<s<<endl;}voidfun(charss[]){intn=strlen(ss);for(inti=0;___(3)____;i++){charc=ss[i];整理為word格式整理為word格式整理為word格式ss[i]=ss[n–1–i];ss[n–1–i]=c;}}(1)(2)(3)3.已知一維數(shù)組類ARRAY的定義如下,構(gòu)造函數(shù)的作用是把參數(shù)n的值賦給s,給v動態(tài)分配長度為n的數(shù)組空間,接著利用數(shù)組參數(shù)a初始化v所指向的數(shù)組。classARRAY{ int*v;//指向存放數(shù)組數(shù)據(jù)的空間 ints;//數(shù)組大小public: ARRAY(inta[],intn);~ARRAY(){delete[]v;}intsize(){returns;} int&operator[](intn);};___(1)___ARRAY(inta[],intn){ if(n<=0){v=NULL;s=0;return;} s=n; v=___(2)___; for(inti=0;i<n;i++)___(3)___;}(1)(2)(3)4.#include<iostream.h>#include<stdlib.h>classA{int*a;intn;intMaxLen;public:A():a(0),n(0),MaxLen(0){}A(int*aa,intnn,intMM){n=nn;MaxLen=MM;if(n>MaxLen)exit(1);___(1)___;//由a指向長度為MaxLen的動態(tài)數(shù)組for(inti=0;i<n;i++)a[i]=aa[i];}~A(){delete[]a;}intGetValue(inti)___(2)___//函數(shù)體返回a[i]的值};voidmain(){intb[10]={1,2,3,4,5,6,7,8,9,10}; Ar(b,10,10);inti,s=0;for(i=0;i<10;i++);___(3)___//把r對象的a數(shù)據(jù)成員中的每個//元素值依次累加到s中cout<<"s="<<s<<endl;}(1)(2)(3)四、理解問答題(寫出前兩小題的程序運行結(jié)果和指出后兩小題的程序(或函數(shù))所實現(xiàn)的功能。每小題6分,共24分)1.#include<iostream.h>voidmain(){ inta=2,b=5,c=0; if(a+b>10)c=a*b;elsec=3*a+b; if(c<=20)cout<<c*c;elsecout<<4+c-5; cout<<endl; a=a+b;b=a+b;c+=a+b; cout<<"a,b,c="<<a<<','<<b<<','<<c<<endl;}2.#include<iostream.h>#include<string.h>voidmain(){chara[5][10]={"student","worker","soldier","cadre","peasant"}; chars1[10],s2[10]; strcpy(s1,a[0]);strcpy(s2,a[0]); for(inti=1;i<5;i++){ if(strcmp(a[i],s1)>0)strcpy(s1,a[i]); if(strcmp(a[i],s2)<0)strcpy(s2,a[i]);}整理為word格式整理為word格式整理為word格式 cout<<s1<<’’<<s2<<endl;}3.#include<iostream.h>#include<math.h>voidmain(){ intx,y; cin>>x; y=int(sqrt(x));//sqrt(x)為求x的算術(shù)平方根 for(inti=1;i<=y;i++) if(x%i==0)cout<<”x=”<<i<<’*’<<x/i<<endl;}4.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;//結(jié)點值域 IntNode*next;//結(jié)點指針域};五、編程題(每小題6分,共12分)1.計算1+3+32+...+310的值并輸出,假定分別用i,p,s作為循環(huán)變量、累乘變量和累加變量的標識符。2.根據(jù)下面類中Reverse1函數(shù)成員的原型和注釋寫出它的類外定義。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]; }AA*Reverse1();//通過動態(tài)存儲分配得到一個對象,并動態(tài)分配//a[MS]數(shù)組空間,要求該對象中的n和MS的值與*this中的//對應(yīng)成員的值相同,數(shù)組元素的值是按照*this中數(shù)組元//素的相反次序排列得到的,要求該函數(shù)返回動態(tài)對象的地址。};整理為word格式整理為word格式整理為word格式C語言程序設(shè)計A期末模擬試題三參考答案單選題1.D 2.A 3.D 4.B 5.A 6.D 7.C 8.B 9.A 10.A填空題1.cpp、程序 2.229 3.!x 4.cin>>a 5.總和 6.*p 7.ple 8.this 9.成員 10.繼承(派生)三、程序填充題1.(1)x<3(或x<=2)(2)x%i==0(3)i++2.(1)voidfun(charss[])(2)fun(s)(3)i<n/23.(1)ARRAY::(2)newint[n](3)v[i]=a[i]4.(1)a=newint[MaxLen](2){returna[i];}(3)s+=r.GetValue(i)四、理解問答題1.121a,b,c=7,12,302.workercadre3.把從鍵盤上輸入的一個整數(shù)x分解為所有可能的每兩個因子之積。整理為word格式整理為word格式整理為word格式4.實現(xiàn)strcat函數(shù)的功能,把str2所指字符串連接到str1所指字符串的后面,并返回str1指針。五、編程題1.#include<iostream.h>voidmain(){ inti;//用i作為循環(huán)變量 intp=1;//用p作為累乘變量 ints=1;//用s作為累加循環(huán)變量 for(i=1;i<=10;i++){p*=3;s+=p;} cout<<s<<endl;}2.AA*AA::Reverse1(){ AA*px=newAA; px->n=n;px->MS=MS; px->a=newint[MS]; for(inti=0;i<n;i++){ px->a[n-1-i]=a[i]; } returnpx;}C語言程序設(shè)計A期末模擬試題四一、單項選擇題(每小題2分,共20分)可用作C++語言用戶標識符的一組標識符是()。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof存儲以下數(shù)據(jù),占用存儲字節(jié)最多的是()。A.0B.‘0’C.“0”D.0.0以下說法中正確的是(B)。A.C++程序總是從第一個定義的函數(shù)開始執(zhí)行B.C++程序總是從main函數(shù)開始執(zhí)行C.C++函數(shù)必須有返回值,否則不能使用函數(shù)D.C++程序中有調(diào)用關(guān)系的所有函數(shù)必須放在同一個程序文件中以下正確的說法是(B)。A.用戶調(diào)用標準庫函數(shù)前,必須重新定義B.用戶可以重新定義標準庫函數(shù),若如此,該函數(shù)將失去原有含義C.系統(tǒng)不允許用戶重新定義標準庫函數(shù)D.用戶調(diào)用標準庫函數(shù)前,不必使用預(yù)編譯命令將該函數(shù)所在文件包括到用戶源文件中變量s的定義為“char*s=”Helloworld!”;”,要使變量p指向s所指向的同一個字符串,則應(yīng)選取(A)。A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s;假定變量a和pa定義為“doublea[10],*pa=a;”,要將12.35賦值給a中的下標為5的元素,不正確的語句是(D)。A.pa[5]=12.35;B.a[5]=12.35;C.*(pa+5)=12.35;D.*(a[0]+5)=12.35;關(guān)于消息,下列說法中不正確的是()。A.發(fā)送消息的對象請求服務(wù),接受消息的對象提供服務(wù)B.消息的發(fā)送者必須了解消息的接收者如何相應(yīng)消息C.在C++中,消息的發(fā)送具體體現(xiàn)為對接收消息的對象的某個函數(shù)的調(diào)用D.每個對象只能接收某些特定格式的消息軟件產(chǎn)品準確執(zhí)行軟件需求規(guī)格說明書中所規(guī)定的任務(wù)的能力叫做軟件的()。A.可維護性B.可復(fù)用性C.兼容性D.正確性假定AA是一個類,abc是該類的一個成員函數(shù),則參數(shù)表中隱含的第一個參數(shù)為()。A.abcB.*thisC.thisD.this&類的析構(gòu)函數(shù)可以帶有()個參數(shù)。A.0B.1C.2D.任意二、填空題(每題2分,共20分)用于從鍵盤上為變量輸入值的標準輸入流對象是________。程序中的預(yù)處理命令是指以______字符開頭的命令。常數(shù)100和3.62的數(shù)據(jù)類型分別為__________和__________。用于存儲一個長度為n的字符串的字符數(shù)組的長度至少為整理為word格式整理為word格式整理為word格式____n+1____。假定a是一個一維數(shù)組,則a[i]對應(yīng)的存儲地址(以字節(jié)為單位)為_a+i*sizeof(a[i])_?;惡团缮惖年P(guān)系稱為__________。類定義中,既包含數(shù)據(jù)成員,也包含________成員。在一個用數(shù)組實現(xiàn)的隊列類中,包含有兩個數(shù)據(jù)成員,一個指明隊列長度,另一個指明__________元素的位置。當(dāng)一個隊列為空時,不能對其做________元素的操作。派生類的成員函數(shù)可以直接訪問基類的成員,不能直接訪問基類的______成員。三、程序填充題(對程序、函數(shù)或類中劃有橫線的位置,根據(jù)題意按標號把合適的內(nèi)容填寫到程序下面相應(yīng)標號的后面。每小題6分,共24分)1.對數(shù)組a[n]按升序進行的插入排序算法voidInsertSort(___(1)___,intn){ inti,j,x; for(i=1;i<n;i++){//進行n-1次循環(huán)x=a[i]; for(j=i-1;j>=0;j--)//為x順序向前尋找合適的插入位置 if(x<a[j])___(2)___;else___(3)___; a[j+1]=x; }}(1)(2)(3)2.假定有定義為“structNODE{intdata;NODE*next;};”,下面算法根據(jù)table數(shù)組中的n個元素建立一個表頭指針為L的鏈表,鏈表中結(jié)點值的順序與數(shù)組元素值的順序相同。voidf5(NODE*&L,inttable[],intn){ if(n<=0){L=NULL;return;} L=newNODE;//生成附加的頭結(jié)點 inti=0; NODE*p=L; while(___(1)___){ p=p->next=___(2)___; p->data=___(3)___; i++; } p->next=NULL;//把最后一個結(jié)點的指針域置空 p=L; L=L->next;//使L指向鏈表的第一個帶值的結(jié)點 deletep;}(1)(2)(3)3.下面是一維數(shù)組類ARRAY的定義,ARRAY與普通一維數(shù)組區(qū)別是:(a)用()而不是[]進行下標訪問,(2)下標從1而不是從0開始,(c)要對下標是否越界進行檢查。classARRAY{ int*v;//指向存放數(shù)組數(shù)據(jù)的空間 ints;//數(shù)組大小public: ARRAY(inta[],intn);~ARRAY(){delete[]v;}intsize(){returns;}int&operator()(intn);};___(1)___operator()(intn){//()的運算符函數(shù)定義 if(___(2)___){cerr<<"下標越界!";exit(1);}return___(3)___;}(1)(2)(3)4.在下面一段類的定義中,需要填充的函數(shù)由注釋內(nèi)容給出了功能。classPoint//定義坐標點類{public:intx,y;//點的橫坐標和縱坐標Point(){x=0;y=0;}Point(intx0,inty0){x=x0;y=y0;}intX(){returnx;}intY(){returny;}voidPrintP(){cout<<"Point:("<<x<<","<<y<<")"<<endl;}}; 整理為word格式整理為word格式整理為word格式classLine:publicPoint//利用坐標點類定義直線類{private:classPointpt1,pt2;//直線的兩個端點public: Line(Pointpts,Pointpte);//構(gòu)造函數(shù),分別用參數(shù)初始化對應(yīng)的端點doubleDx(){returnpt2.x-pt1.x;}doubleDy(){returnpt2.y-pt1.y;}doubleLength(){//計算直線的長度 returnsqrt(___(1)___); };voidPrintL();//輸出直線的兩個端點和直線長度};Line::Line(Pointpts,Pointpte)___(2)___voidLine::PrintL(){cout<<"1st";pt1.PrintP();cout<<"2nd";pt2.PrintP();cout<<"TheLengthofLine:"<<___(3)___<<endl;}(1)(2)(3)四、理解問答題(寫出前兩小題的程序運行結(jié)果和指出后兩小題的程序(或函數(shù))所實現(xiàn)的功能。每小題6分,共24分)1.#include<iostream.h>voidmain(

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論