計算機等級考試二級C++模擬題及解析4上機部分
一、改錯題
使用VC6打開考生文件夾下的工程kt9_1,此工程包含一個源程序文件kt9_1.cpp,但該程序運行有問題,請改正程序中的錯誤,使程序的輸出結(jié)果如下:
4,5
20
源程序文件清單如下:
#include<iostream.h>
classA
{ protected:
intn,m;
public:
voidset(inta,intb){m=a;n=b;}
voidshow(){cout<<m<<","<<n<<endl;}
/**********found**********/ }
classB:publicA
{ ints;
public:
voidset(){s=m*n;}
voidshows(){cout<<s<<endl;} };
voidmain()
{
Bb;
/**********found**********/
b.set();
b.show();
b.set();
/**********found**********/
b.show();
}
【參考答案】
。1)在“}”后添加分號
(2)將b.set();改為:b.A::set(4,5);
。3)將b.show();改為:b.shows();
【試題解析】
(1)主要考查對類定義格式的掌握,類的結(jié)尾應(yīng)該使用";";
。2)主要考查對基類與派生類函數(shù)調(diào)用關(guān)系的掌握,根據(jù)所要求的輸出結(jié)果,應(yīng)該調(diào)用的函數(shù)為類A的set,而不是類B自身的set函數(shù),應(yīng)該避免調(diào)用的二義性;
(3)主要考查對繼承與派生的理解,由所要求輸出結(jié)果可知正確:b.shows()。
二、簡單應(yīng)用題
請編寫一個函數(shù)intCalcDigital(char*str),該函數(shù)可返回字符串str中數(shù)字字符(即“0”-“9”這10個數(shù)字)的個數(shù),如字符串"olympic2008"中數(shù)字字符的個數(shù)為4。請用if條件判斷語句與for循環(huán)語句來實現(xiàn)該函數(shù)。
注意:部分源程序已存在文件中。
請勿修改主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)find的花括號中填寫若干語句。
文件kt9_2.cpp的內(nèi)容如下:
#include<iostream.h>
#include<string.h>
intCalcDigital(char*str);
voidmain()
{ char*str;
str=newchar[255];
cout<<"輸入字符串:";
cin>>str;
intnum=CalcDigital(str);
cout<<str<<":"<<num<<endl; }
intCalcDigital(char*str)
{
}
【參考答案】
int CalcDigital(char *str)
{ if(str==NULL) return 0;
int num_of_digital=0;
int len=strlen(str);
for(int i=0;i<len;i++)
if(str[i]<='9' && str[i]>='0')
num_of_digital++;
return num_of_digital; }
【試題解析】
本題考查對于if條件判斷語句與for循環(huán)語句的熟練使用程度。注意判斷條件(判斷是否是數(shù)字是直接比較ASCII碼)的使用。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |