- 相關(guān)推薦
計算機二級C++基礎練習題
C++不僅擁有計算機高效運行的實用性特征,同時還致力于提高大規(guī)模程序的編程質(zhì)量與程序設計語言的問題描述能力。以下是小編整理的關(guān)于計算機二級C++基礎練習題,希望大家認真閱讀!
計算機二級C++基礎練習題 1
一、選擇題(每小題1分,共40分)
1下列有關(guān)內(nèi)聯(lián)函數(shù)的敘述中,正確的是( )。
A.內(nèi)聯(lián)函數(shù)在調(diào)用時發(fā)生控制轉(zhuǎn)移
B.內(nèi)聯(lián)函數(shù)必須通過關(guān)鍵字inline來定義
C.內(nèi)聯(lián)函數(shù)是通過編譯器來實現(xiàn)的
D.內(nèi)聯(lián)函數(shù)函數(shù)體的最后一條語句必須是return語句
參考答案:C
參考解析:一般函數(shù)進行調(diào)用時,要將程序執(zhí)行權(quán)轉(zhuǎn)到被調(diào)用函數(shù)中,然后再返回到調(diào)用它的函數(shù)中;而內(nèi)聯(lián)函數(shù)在調(diào)用時,是將調(diào)用表達式用內(nèi)聯(lián)函數(shù)體來替換,所以在調(diào)用時不發(fā)生控制轉(zhuǎn)移。在類內(nèi)部實現(xiàn)的函數(shù)都是內(nèi)聯(lián)函數(shù),可以不用inline定義;只有函數(shù)外部定義的內(nèi)聯(lián)函數(shù)才必須加關(guān)鍵字inline。編譯系統(tǒng)并非對內(nèi)聯(lián)函數(shù)必須使用內(nèi)聯(lián),而且根據(jù)具體情況決定。內(nèi)聯(lián)函數(shù)不是必須要有返回值的。
2語句int*P=&k;定義了指針P,與這個語句等效的語句序列是( )。
A.int* p;P=&k;B.int * P;P=k;C.int * p;* P=&k;D.int * p;* P=k;
參考答案:A
參考解析:本題考查指針和地址,題目中定義了一個指向變量k的一個指針p,那么與題目中等效的表達式A選項,即先定義一個指向整型的指針,然后指向k的地址。
3有如下程序:
#include
using namespace std;
class A
{
public:
A(){cout<<”A”;}
-A(){cout<<”-A”;}
};
class B:public A
{
A*P;
public:
B(){cout<<”B”;P=new A();}
-B(){cout<<”~B”; p;}
};
int main()
{
B obj;
return 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~A~B~A
參考答案:B
參考解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù)。對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù),再執(zhí)行基類的析構(gòu)函數(shù)。所以本題答案為B。
4有如下類定義:
class AA
{
im a:
public:
int getRef()const{return&a;}//①
int getValue()const{return a;}//②
void set(int n)const{a=n;}//③
friend void show(AA aA.const{cout<
};
其中四個函數(shù)的定義中正確的是( )。
A.①B.②C.③D.④
參考答案:B
參考解析:本題考查常成員函數(shù),常成員函數(shù)只能引用本類中的數(shù)據(jù)成員,而不能修改它。所以本題答案為B。
5若要對Data類中重載的加法運算符成員函數(shù)進行聲明,下列選項中正確的是( )。
A.Data+(DatA.;B.Data operator+(DatA.;C.Data+operator(DatA.;D.operator+(Data,DatA.;
參考答案:B
參考解析:根據(jù)重載加法運算符的格式,只有B選項正確。
6有如下數(shù)組聲明:int num[10];,下標值引用錯誤的是( )。
A.num[10]B.num[5]C.num[3]D.hum[o]
參考答案:A
參考解析:數(shù)組定義中的數(shù)字指的是數(shù)組的大小,而下標是從0開始的,所以本題中數(shù)組的最后一個元素是num[9]。
7將前綴運算符“--”重載為非成員函數(shù),下列原型中能正確用于類中說明的是( )。
A.DeCr&operator--(int);B.DeCr operator--(DeCr&,int);C.friend DeCr&operator--(DeCr&);D.friend DeCr operator--(DeCr&,int);
參考答案:C
參考解析:把“--”運算符重載為非成員(友元)函數(shù)格式:friend<返回類型>operator--()是前綴的格式;friend<返回類型>operator--(int)是后綴的格式。當然也可以有參數(shù)如題中C選項所示。
8如果派生類以proteCted方式繼承基類,則原基類的proteCted成員和publiC成員在派生類中的訪問屬性分別是( )。
A.publiC和publiCB.publiC和proteCtedC.proteCted和publiCD.proteCted和proteCted
參考答案:D
參考解析:本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,所以本題答案為D。
9在函數(shù)中,可以用aut0、extem、register和static這四個關(guān)鍵字中的一個來說明變量的存儲類型,如果不說明存儲類型,則默認的存儲類型是( )。
A.autoB.externC.registerD.static
參考答案:A
參考解析:變量的存儲方法分為靜態(tài)存儲和動態(tài)存儲兩大類,包含4種:自動的(auto)、靜態(tài)的(static)、寄存器的(register)、外部的(extem)。變量如果沒有說明存儲類型,那么默認就是aut0。
10下列程序的輸出結(jié)果是( )。
#include
int rain(iltl a,int B)
{
if(a
else retum b;
retum 0;
}
void main()
{
eout<
}
A.0B.1C.2D.3
參考答案:B
參考解析:本題考查的是函數(shù)的調(diào)用,第一次調(diào)用min(2,3),因為2<3,所以返回值為2,第二次調(diào)用min(1,2),因為l<2,所以返回1。
11在黑盒測試方法中,設計測試用例的主要根據(jù)是( )。
A.程序內(nèi)部邏輯B.程序外部功能C.程序數(shù)據(jù)結(jié)構(gòu)D.程序流程圖
參考答案:B
參考解析:黑盒測試是對軟件已經(jīng)實現(xiàn)的功能是否滿足需求進行測試和驗證,黑盒測試完全不考慮程序內(nèi)部的邏輯結(jié)構(gòu)和內(nèi)部特性,只根據(jù)程序的需求和功能規(guī)格說明,檢查程序的功能是否符合它的功能說明,所以本題選擇B。
12在面向?qū)ο蠓椒ㄖ,不屬于“對象”基本特點的是( )。
A.一致性B.分類性C.多態(tài)性D.標識唯一性
參考答案:A
參考解析:對象有如下一些基本特點:標識唯一性、分類性、多態(tài)性、封裝性、模塊獨立性好。所以選擇A。
13有以下程序:
#include
void fun(int a,int b,int C.
{ a=456,b=567,c=678;}
void main()
{
int X=10,Y=20,Z=30;
fun(X,Y,z);
aout<
}
輸出結(jié)果是( )。
A.30,20,10B.10,20,30C.456,567,678D.678,567,456
參考答案:B
參考解析:本題考查函數(shù)中變量的作用范圍,在主函數(shù)中給變餐x、Y、Z賦值,然后將其作為實參傳遞給了函數(shù)fun(),雖然在函數(shù)fun()中改變了這3個變量的值,但只是同名的局部變量,不影響函數(shù)中變量的值,所以在調(diào)用函數(shù)fun()結(jié)束后,主函數(shù)3個變量的值未改變。
14對類的構(gòu)造函數(shù)和析構(gòu)函數(shù)描述正確的是( )。
A.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)不能重載
B.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)可以重載
C.構(gòu)造函數(shù)可以重載,析構(gòu)函數(shù)也可以重載
D.構(gòu)造函數(shù)不能重載,析構(gòu)函數(shù)也不能重裁
參考答案:A
參考解析:一個類中只能定義一個析構(gòu)函數(shù),否則會造成對同…對象的多次刪除;而構(gòu)造函數(shù)可以根據(jù)不同的參數(shù)個數(shù)和類型進行多次重載。
15通過運算符重載,可以改變運算符原有的( )。
A.操作數(shù)類型B.操作數(shù)個數(shù)C.優(yōu)先級D.結(jié)合性
參考答案:A
參考解析:重載運算符的規(guī)則如下:①c++不允許用戶自己定義新的運算符,只能對已有的C++運算符進行重載;②C++不能重載的運算符只有5個;③重載不能改變運算符運算對象的個數(shù);④重載不能改變運算符的優(yōu)先級和結(jié)合性;⑤重載運算符的函數(shù)不能有默認的參數(shù);⑥重載的運算符必須和用戶定義的自定義類型的對象一起使用,至少應有一個是類對象,即不允許參數(shù)全部是c++的標準類型。故本題答案為A。
16下列關(guān)于c++流的描述中,錯誤的是( )。
A.cout>>’A’表達式可輸出字符A
B.eof()函數(shù)可以檢測是否到達文件尾
C.對磁盤文件進行流操作時,必須包含頭文件fstream
D.以ios_base:0ut模式打開的文件不存在時,將自動建立一個新文件
參考答案:A
參考解析:本題考查c++流,想要輸出字符“A”,則應該是cout<<“A”,所以本題答案為A。
17耦合性和內(nèi)聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是( )。
A.提高耦合性降低內(nèi)聚性有利于提高模塊的獨立性
B.降低耦合性提高內(nèi)聚性有利于提高模塊的獨立性
C.耦合性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度
D.內(nèi)聚性是指模塊間互相連接的緊密程度
參考答案:B
參考解析:模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的'軟件設計,應盡量做到高內(nèi)聚、低耦合,即減弱模塊之間的耦合性和提高模塊內(nèi)的內(nèi)聚性,有利于提高模塊的獨立性,所以A錯誤,B正確。耦合性是模塊間互相連接的緊密程度的度量而內(nèi)聚性是指一個模塊內(nèi)部各個元素間彼此結(jié)合的緊密程度,所以C與D錯誤。
18若有如下類聲明:
Class MyClass{ publiC:
MyClass( ){Cout<<1;} };
執(zhí)行下列語句
MyClass a,b[2],*p[2]; 程序的輸出結(jié)果是( )。
A.11B.111C.1111D.11111
參考答案:B
參考解析:本題考查默認構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),題目中定義一一個對象a以及對象數(shù)組b[2],共執(zhí)行3次構(gòu)造函數(shù),對象指針不調(diào)用構(gòu)造函數(shù)。所以本題答案為B。
19下列函數(shù)模板的定義中,合法的是( )。
A.templateT abs(T X){return x<07-x:X;}
B.template ClassT abs(T x){return x<07-X:x;}
C.template Tabs(T X){return x<07-x:X;}
D.template T abs(T x){return X<0?-X:x;}
參考答案:A
參考解析:本題考查模板函數(shù)的基本概念.根據(jù)模板函數(shù)的定義,所以答案為A。
20有如下程序:
#include
using namespace std;
class Base{
int x:
public:
Base(int n=0):x(n){cout<
int getX()const{return x;}
};
cjass Derived:public Base{
int Y:.
J;;Iublic:
Derived(int m,int n):y(m),Base(n){cout<
Derived(int m):Y(m){cout<
};
int main()
{
Derived dl(3),d2(5,7);
retum 0;
}
執(zhí)行這個程序的輸出結(jié)果是( )。
A.375B.357C.0375D.0557
參考答案:C
參考解析:本題考查派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù),在定義一個派生類的對象時,先調(diào)用基類的構(gòu)造函數(shù),然后再執(zhí)行派生類的構(gòu)造函數(shù),對象釋放時,先執(zhí)行派生類的析構(gòu)函數(shù)。再執(zhí)行基類的析構(gòu)函數(shù)。本題中定義了一個對象d1,先執(zhí)行基類的構(gòu)造函數(shù)輸出0,再執(zhí)行派生類的構(gòu)造函數(shù)輸出3,然后定義了一個對象d2(5,7),其中需要調(diào)用基類的構(gòu)造函數(shù)輸出7.最后輸出5,所以答案為c。
二、簡單應用題(24分)
請使用VC6或使用【答題】菜單打開考生文件夾proj2下的工程proj2,該工程中包含一個程序文件main.cpp,其中有日期類Date、人員類Person及排序函數(shù)sortByName和主函數(shù)main的定義。請在程序中的橫線處填寫適當?shù)拇a并刪除橫線,以實現(xiàn)上述類定義和函數(shù)定義。此程序的正確輸出結(jié)果應為:
按姓名排序
排序前:
張三 男 出生日期:1978年4月20日
王五 女 出生日期:1965年8月3日
楊六 女 出生日期:1965年9月5日
李四 男 出生日期:1973年5月30日
排序后:
李四 男 出生日期:1973年5月30日
王五 女 出生日期:1965年8月3日
楊六 女 出生日期:1965年9月5日
張三 男 出生日期:1978年4月20日
注意:只能在橫線處填寫適當?shù)拇a,不要改動程序中的其他內(nèi)容,也不要刪除或移動“//****found****”。
#include
using namespace std;
class Date{//日期類
int year,month,day;//年、月、日
public:
Date(int year,int month,int day):year(year),month(month),day(day){}
int getYear()const{return year;}
int getMonth()const{return month;}
int getDay()const{return day;}
};
class Person{ //人員類
char name[14];//姓名
bool is—male;//性別,為true時表示男性
Date birth—date;//出生日期
public:
Person(char*name,bool is—male,Date birth_date)
//***************found***************
。骸
{
{
strcpy(this一>name,name);
}
const char * getName()const{return name;}
bool isMale()const{return is—male;}
Date getBirthdate()const{return birth—date;}
//利用strcmp()函數(shù)比較姓名,返回一個正數(shù)、0或負數(shù),分別表示大于、等于、小于
int compareName(const Person&p)const{
//***************found*****************
————}
void show(){
cout<
cout<
//**************found**************
__________________________//顯示出生月
<< “birth—date.getDay()<<”日”;//顯示出生日
}
};
void sortByName(Person ps[],int size){
//將人員數(shù)組按姓名排列為升序
for(int i=0;i
//采用選擇排序算法
int m=i;
for(int j=i+1;j
if(ps[j].eompareName(ps[m])<0)
m=j;
if(m>i){
Person P=ps[m];
ps[m]=ps[i];
ps[i]=p;
}
}
}
int main(){
Person staff[]={
Person(”張三”,true,Date(1978,4,20)),
Person(”王五”,false,Date(1965,8,3)),
Person(”楊六”,false,Date(1965,9,5)),
Person(”李四”,tme,Date(1973,5,30))
};
const int size=sizeof(staff)/sizeof(staff[0]);
int i;
eout<
cout<
for(i=0;i
sortByName(staff,size);
cout<
for(i_0;i
cout<
return 0;
{
計算機二級C++基礎練習題 2
一 選擇題(7分,每小題0.5分)
1.C語言源程序的基本單位是( )。
A 過程 B 函數(shù) C 子程序 D 標識符
2.下列程序的輸出結(jié)果是( )。
main( )
{ int a=7,b=5;
printf("%d ",b=b/a);
}
A 5 B 1 C 0 D不確定值
3.假設變量a,b均為整型,表達式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。
A 7 B 8 C 9 D 2
4.設a為int型變量,執(zhí)行下列賦值語句后,a的取值分別是( )。
a=125.534; a=(int)125.521%4; a=5<<2;
A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20
5.設有如下程序段,下面描述中正確的是 ( )。
int k=10; while(k=0) k=k-1;
A 循環(huán)執(zhí)行一次 B循環(huán)是無限循環(huán) C循環(huán)體語句一次也不執(zhí)行 D循環(huán)體語句執(zhí)行一次
6.以下程序的輸出結(jié)果為( )。
int i;
void prt( )
{ for(i=5;i<8;i++) printf("%c",*);
printf(" ");
}
main( )
{ for(i=5;i<=8;i++) prt( );
}
A *** B *** *** *** *** C *** *** D * * *
7.在C語言程序中,以下說法正確的是( )。
A函數(shù)的定義可以嵌套,但函數(shù)的調(diào)用不可以嵌套
B函數(shù)的定義不可以嵌套,但函數(shù)的調(diào)用可以嵌套
C函數(shù)的定義和函數(shù)的調(diào)用都不可以嵌套
D函數(shù)的定義和函數(shù)的調(diào)用都可以嵌套
8.以下函數(shù)調(diào)用語句中含有( )個實參。
func((e1,e2),(e3,e4,e5));
A 2 B 3 C 5 D 語法錯誤
9.以下程序的輸出結(jié)果為( )。
#define ADD(x) x*x
main( )
{ int a=4,b=6,c=7,d=ADD(a+b)*c;
printf("d=%d",d);
}
A d=70 B d=80 C d=140 D d=700
10.已知職工記錄描述如下,在Turbo C中,系統(tǒng)為變量w分配( )字節(jié)的空間。
struct worker
{ int no;
char name[20];
char sex;
union
{ int day; int month; int year;}birth;
} w;
A 29 B 20 C 25 D 6
11.設有以下定義,值為5的枚舉常量是( )。
enum week{sun,mon=4,tue,wed,thu,fri,sat} w;
A tue B sat C fri D thu
12.下面選項中正確的賦值語句是(設 char a[5],*p=a;)( )。
A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd";
13.設有以下程序段,則值為6的表達式是( )。
struct st { int n; struct st *next;};
static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p;
p=&a[0];
A p++->n B ++p->n C p->n++ D (*p).n++
14.C語言中的文件類型只有( )。
A 索引文件和文本文件兩種 B 文本文件一種
C 二進制文件一種 D ASCII碼文件和二進制文件兩種
二 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分)
1.在Turbo C中,整型數(shù)據(jù)在內(nèi)存中占2個字節(jié)。( )
2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的輸出結(jié)果為A。( )
3.break語句用在循環(huán)體中,可結(jié)束本層循環(huán),continue語句用在循環(huán)體中,可結(jié)束本次循環(huán)。( )
4.函數(shù)的遞歸調(diào)用不過是一個函數(shù)直接或間接地調(diào)用它自身。( )
5.函數(shù)strlen("ASDFG ")的值是7。( )
6.通過return語句,函數(shù)可以帶回一個或一個以上的返回值。( )
7.結(jié)構(gòu)體類型只有一種。 ( )
8.char *p="girl";的`含義是定義字符型指針變量p,p的值是字符串"girl"。( )
9.若有定義:char *p(char a[10]);則p是函數(shù)名。( )
10.用fopen("file","r+");打開的文件"file"可以進行修改。 ( )
三 寫出下列程序的運行結(jié)果(10分,每小題2分)
1.float average (float array[10])
{ int i;
float aver,sum=array[0];
for (i=1;i<10;i++)
sum=sum+array[i];
aver=sum/10;
return(aver);
}
main( )
{ float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver;
int i;
aver=average (score);
printf (“average score is %5.2f ”,aver);
}
2.main( )
{ char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa;
printf(“%2c”,*p);
printf(“ ”);
printf(“%2c ”,**(pa=&p));
}
3.main( )
{ int a,b,s=0;
for(a=1,b=1;a<=100;a++)
{ if(b>=20) break;
if(b%3==1)
{ b+=3; continue; }
b-=5;
}
printf(“a=%d b=%d ”,a,b);
}
4.main()
{ printf(“main( ) :%d ”,fact(5));
fact(-5);
}
fact(int value)
{ int f;
if(value<0)
{ printf(“Arg error ");
return(-1);
}
else if(value==1||value==0) f=1;
else f=value*fact(value-1)+1;
printf(“This called value=%d ”,f);
return f;
}
5.main( )
{ int a=012,b=0x12,k=12;
char c=‘102’,d=‘ ’;
printf(“a=%d b=%d k=%d ”,a,b,k);
printf(“c=%c,d=%c%o ”,c,d,a);
a=‘A’; c=49;
printf(“a=%d c=%c ”,a,c);
}
四 閱讀下列程序,在 處填入適當內(nèi)容,使程序完整(8分,每個空1分)
1.有一個3*4矩陣,求其中的最大元素。
max_value( (1) )
{ int i,j,max;
max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(array[i][j]>max)
max=array[i][j];
(2) ;
}
main( )
{ int a[3][4], i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
(3) ;
printf(“max value is %d ”,max_value(a));
}
2.輸入x、y兩個整數(shù),按先大后小的順序輸出x、y。
#include “stdio.h”
main( )
{ int x,y, *px,*py, (4) ;
scanf(“%d%d”,&x,&y);
(5) ; (6) ;
if(x
{ p=px; px=py; py=p; }
printf(“x=%d,y=%d ”,x,y);
printf(“MAX=%d,MIN=%d ”,*px,*py);
}
3.用選擇排序法對任意10個整數(shù)按照由小到大排序。
main()
{ int a[11],i,j,k,t;
printf("Please input 10 numbers: ");
for(i=1;i<11;i++) scanf("%d",&a[i]);
printf(" ");
for(i=1;i<=9;i++)
{ (7) ;
for(j=i+1; (8) ;j++)
if(a[j]>a[k]) k=j;
if(k!=i)
{ t=a[k]; a[k]=a[i]; a[i]=t;}
}
printf("The sorted numbers: ");
for(i=1;i<11;i++) printf("%d ",a[i]);
}
答案
一 選擇題(7分,每小題0.5分)
1. B 2. C 3. B 4. B 5. C
6. A 7. B 8. A 9. A 10. C
11. A 12. A 13. B 14. D
二 判斷對錯,對的劃“√”,錯的劃“×”(5分,每小題0.5分)
1.× 2.× 3.√ 4.√ 5.×
6.× 7.× 8.× 9.√ 10.√
三 寫出下列程序的運行結(jié)果(10分,每小題2分)
1. 2. 3.
4. 5.
四 閱讀下列程序,在 處填入適當內(nèi)容,使程序完整(8分,每個空1分)
1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j])
2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x)
3.(7) (8)
2003C語言試題3
一 選擇題(24分,每小題2分)
1.已知函數(shù)fread的調(diào)用形式為fread(buffer,size,count,fp),其中buffer代表的是( )。
A 存放讀入數(shù)據(jù)項的存儲區(qū) B 存放讀入數(shù)據(jù)的地址或指向此地址的指針
C 一個指向所讀文件的文件指針 D 一個整形變量,代表要讀入的數(shù)據(jù)項總數(shù)
2.以下程序的輸出結(jié)果為( )。
main( )
{ int i=010,j=10;
printf("%d,%d ",i++,j--);
}
A 11,9 B 9,10 C 8,10 D 9,9
3.設a為int型變量,執(zhí)行下列賦值語句后,a的取值分別是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;
A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20
4.設i和k都是int類型,則for循環(huán)語句( )。
for(i=0,k=-1;k=1;i++,k++) printf("****");
A 循環(huán)結(jié)束的條件不合法 B 循環(huán)體一次也不執(zhí)行 C 循環(huán)體只執(zhí)行一次 D 是無限循環(huán)
5.以下程序的輸出結(jié)果為( )。
main( )
{ char c;
int i;
for(i=65;i<68;i++)
{ c=i+32;
switch(c)
{ case a:case b:case c:printf("%c,",c);break; default:printf("end");}
}
}
A a,b,c,end B a,a,a,end C a,a,a, D a,b,c,
6.函數(shù)調(diào)用語句:fseek(fp,-10L,2);的含義是( )。
A 將文件位置指針從文件末尾處向文件頭的方向移動10個字節(jié)
B 將文件位置指針從當前位置向文件頭的方向移動10個字節(jié)
C 將文件位置指針從當前位置向文件末尾方向移動10個字節(jié)
D 將文件位置指針移到距離文件頭10個字節(jié)處
7.以下程序的輸出結(jié)果為( )。
main( )
{ char s1[40]="country",s2[20]="side";
int i=0,j=0;
while(s1[i]!=) i++;
while(s2[j]!=) s1[i++]=s2[j++];
s1[i]=0;
printf("%s ",s1);
}
A side B country C sidetry D countryside
8.下列說法不正確的是( )。
A 主函數(shù)main中定義的變量在整個文件或程序中有效
B 不同函數(shù)中,可以使用相同名字的變量
C 形式參數(shù)是局部變量
D 在一個函數(shù)內(nèi)部,可以在復合語句中定義變量,這些變量只在本復合語句中有效
9.在下列程序段中,枚舉變量 c1的值是( )。
enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white;
A 1 B 3 C 5 D 6
10.設有說明 int (*ptr)();其中標識符ptr是( )。
A 是一個指向整形變量的指針 B 是一個指針,它指向一個函數(shù)值是int的函數(shù)
C 是一個函數(shù)名 D定義不合法
11.定義由n個指向整形數(shù)據(jù)的指針組成的數(shù)組p,其正確的方式為( )。
A int p; B int (*p)[n]; C int *p[n]; D int (*p)( );
12.具有相同類型的指針類型變量p與數(shù)組a,不能進行的操作是( )。
A p=a; B *p=a[0]; C p=&a[0]; D p=&a;
二 判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分)
1.參加位運算的數(shù)據(jù)可以是任何類型的數(shù)據(jù)。( )
2.若有定義和語句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通過鍵盤輸入:10,A,12.5,則a=10,c=‘A’,f=12.5。( )
3.C語言把文件看作是一個字符(字節(jié))的序列。( )
4.若有宏定義:#define S(a,b) t=a;a=b;b=t由于變量t沒定義,所以此宏定義是錯誤的。( )
5.在Turbo C中,下面的定義和語句是合法的:file *fp;fp=fopen("a.txt","r");( )
6.若有定義:char s[ ]="china";則Turbo C系統(tǒng)為數(shù)組s開辟6個字節(jié)的內(nèi)存單元。( )
7.若有定義和語句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];則sum=21。( )
8.若有定義和語句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);輸出結(jié)果是1。( )
9.在程序中定義了一個結(jié)構(gòu)體類型后,可以多次用它來定義具有該類型的變量。( )
10.在Turbo C中,此定義和語句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( )
三 寫出下列程序的運行結(jié)果(36分,每小題6分)
1.main( )
{ int i=29,j=6,k=2,s;
s=i+i/j%k-9;
printf(“s=%d ”,s);
}
2.main( )
{ int x=31,y=2,s=0;
do
{ s-=x*y;
x+=2;
y-=3;} while( x%3==0);
printf(“x=%d y=%d s=%d ”,x,y,s);
}
3.main( )
{ int a[6]={10,20,30,40,50,60},i;
invert(a,0,5);
for(i=0;i<6;i++) printf(“%d,”,a[i]);
printf(“ ”);
}
invert(int s[ ],int i,int j)
{ int t;
if(i
{ invert(s,i+1j-1);
t=s[i];s[i]=s[j];s[j]=t;
}
}
4.#include
main()
{ char str[ ]=“The C program”,c;
int i;
for(i=2;(c=str[i])!=‘’;i++)
{ switch(c)
{ case ‘g’: ++i; break;
case ‘o’: continue;
default: printf(“%c”,c); continue;
}
printf(“*”);
}
printf(“ ”);
}
5.struct w
{ char low;
char high;
};
union u
{ struct w byte;
short word;
}uw;
main( )
{ int result;
uw.word=0x1234;
printf(“word value:%04x ”,uw.word);
printf(“high byte:%02x ”,uw.byte.high);
printf(“l(fā)ow byte:%02x ”,uw.byte.low);
uw.byte.low=0x74;
printf(“word value:%04x ”,uw.word);
result=uw.word+0x2a34;
printf(“the result:%04x ”,result);
}
6.main()
{ char *s2=“I love China!”,**s1=&s2;
char *s3,c,*s4=“w”;
s3=&c;
*s3=‘H’;
s2=s2+2;
printf(“%s %c %s %c ”,s2,*s3,s4,**s1);
}
四 閱讀下列程序,在 處填入適當內(nèi)容,使程序完整(20分,每個空2分)
1. 百馬百擔問題:有100匹馬,馱100擔貨,大馬馱3擔,中馬馱2擔,兩匹小馬馱1擔,問大、中、小馬各多少匹?
main( )
{ int hb,hm,hl,n=0;
for(hb=0;hb<=100;hb+= (1) )
for(hm=0;hm<=100-hb;hm+= (2) )
{ hl=100-hb- (3) ;
if(hb/3+hm/2+2* (3) ==100)
{ n++;
printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl);
}
}
printf("n=%d ",n);
}
2.用“起泡法”對輸入的10個字符排序后按從小到大的次序輸出。
#define N 10
char str[N];
main()
{ int i,flag;
for(flag=1;flag==1;)
{ scanf("%s",str);
flag=0;
printf(" ");
}
sort(___(4)___);
for(i=0;i
printf("%c",str[i]);
printf(" ");
}
sort(char str[N])
{ int i,j;
char t;
for(j=1;j
for(i=0;(i
if(str[i]>str[i+1])
{ t=str[i];
____(5)____;
____(6)____;
}
}
3.以下程序是一個函數(shù),功能是求二階矩陣(m行n列矩陣)的所有靠外側(cè)的各元素值之和。(本程序中二階矩陣用一維數(shù)組來表示。)
例如,矩陣為:
3 0 0 3
2 5 7 3
1 0 4 2
則所有靠外側(cè)的各元素值之和為3+0+0+3+2+3+1+0+4+2=18。
add(int m,int n,int arr[])
{ int i,j,sum=0;
for(i=0;i
for(j=0;j
sum=sum+ (7) ;
for(j=0;j
for(i=1; (8) ;i++)
sum=sum+arr[i*n+j];
return(sum);
}
4.用指針作函數(shù)參數(shù),編程序求一維數(shù)組中的最大和最小的元素值。
#define N 10
main()
{ void maxmin(int arr[],int *pt1,int *pt2,int n);
int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;
p1=&a; p2=&b;
maxmin(array,p1,p2,N);
printf("max=%d,min=%d",a,b);
}
void maxmin(int arr[],int *pt1,int *pt2,int n)
{ int i;
*pt1=*pt2=arr[0];
for(i=1;i
{ if(arr[i]>*pt1) (9) ;
if(arr[i]<*pt2) (10) ;
}
}
答案
一 選擇題(24分,每小題2分)
1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A )
7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D )
二 判斷對錯,對的劃“√”,錯的劃“×”(20分,每小題2分)
1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × )
6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ )
三 寫出下列程序的運行結(jié)果(36分,每小題6分)
1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10,
4.e C pr*am 5.word value:1234 6.love China! H w l
high byte:12
low byte:34
word value:1274
the result:3ca8
四 閱讀下列程序,在 處填入適當內(nèi)容,使程序完整(20分,每個空2分)
1.(1) 3 (2) 2 (3)hm hl
2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t
3.(7) arr[i*n+j](或者arr[i*10+j])
(8) i
4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]
【計算機二級C++基礎練習題】相關(guān)文章:
計算機二級考試之C++基礎知識點08-05
計算機二級考試C++試題06-10
2017年計算機二級基礎練習題及答案08-26
計算機二級公共基礎知識練習題及答案10-20
計算機二級考試C++試題及答案08-01
計算機二級考試C++試題及答案10-08
計算機二級C++常見考點分析08-17
2017年計算機二級基礎知識練習題07-27