C++测试
<p>1.如果在一个函数中的复合语句中定义了一个变量,则该变量( )。</p><p>A 只在该复合语句中有效</p>
<p>B 在本程序范围内有效</p>
<p>C 在该函数中有效</p>
<p>D 为非法变量</p>
<hr>
<p>2.当函数的参数是普通变量时,关于函数的形参和形参,以下说法正确的是( )。\</p>
<p>A 实参和与其对应的形参共占用一个存储单元</p>
<p>B 只有当实参和与其对应的形参同名时才共占用相同的存储单元</p>
<p>C 实参和与其对应的形参各占用独立的存储单元</p>
<p>D 形参是虚拟的,不占用存储单元</p>
<hr>
<p>3.在以下各组标识符中,合法的标识符是()。</p>
<p>A <code>B01 table_1 0_t k%</code></p>
<p>B <code>sjsnt _xy w_y23</code></p>
<p>C <code>xy_ longdouble *p CHAR</code></p>
<p>D<code>Fastvoid pbl <book></code></p>
<hr>
<p>4.观察以下代码,关于对象成员访问的描述正确的是()。</p>
<pre><code class="language-c++">
class Point {
public:
int x, y;
void print() { cout << x << "," << y; }
};
int main() {
Point p1;
Point p2;
p1.x = 10;
p1.y = 20;
p2 = p1;
p2.x = 30;
p1.print();
p2.print();
}
</code></pre>
<p>A p1.print()和p2.print()调用的是同一个函数代码</p>
<p>B p1.x的值现在为30</p>
<p>C p2 = p1调用了复制构造函数</p>
<p>D p1和p2指向同一个内存地址</p>
<hr>
<p>5.以下数组声明中正确的是( )。</p>
<p>A <code>int y={0,1,3,5,7,9} ;</code></p>
<p>B <code>double x={2.0,4.0,6.0,8.0,10.0};</code></p>
<p>C <code>double []={1,2,3,4,5,6};</code></p>
<p>D <code>char s=”abcde”;</code></p>
<hr>
<p>6.已有定义int k=2,ptr1,ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( )。</p>
<p>A <code>k=*ptr1*(*ptr2)</code></p>
<p>B <code>ptr1=ptr2</code></p>
<p>C <code>ptr2=k</code></p>
<p>D <code>k=*ptr1+*ptr2</code></p>
<hr>
<p>7.能正确表示“当x的取值在<code></code>和<code></code>范围内为真,否则为假”的表达式是( ) 。</p>
<p>A <code>(x>=1) && (x<=10) | | (x>=200) && (x<=210)</code></p>
<p>B <code>(x>=1) && (x<=10) && (x>=200) && (x<=210)</code></p>
<p>C <code>(x>=1) | | (x<=10) && (x>=200) | | (x<=210)</code></p>
<p>D <code>(x>=1) | | (x<=10) | | (x>=200) | | (x<=210)</code></p>
<hr>
<p>8.若有定义:`int a,则对数组a元素的正确引用是()。</p>
<p>A <code>a(5)</code></p>
<p>B <code>a</code></p>
<p>C <code>a{3}</code></p>
<p>D <code>a</code></p>
<hr>
<p>9.下列关于类和对象的描述中,正确的是( )。</p>
<p>A 类的私有数据成员只能被类的成员函数访问</p>
<p>B 类是对一组具有相同属性和行为的对象的抽象</p>
<p>C 对象是类的模板,类通过对象来创建</p>
<p>D 一个类的不同对象拥有不同的成员函数实现</p>
<hr>
<p>10.关于构造函数,以下说法错误的是( )。</p>
<p>A 构造函数名与类名相同</p>
<p>B 构造函数在创建对象时自动调用</p>
<p>C 构造函数可以重载</p>
<p>D 构造函数可以有返回值</p>
<hr>
<p>11.该程序的功能是输出100-1000之间的所有素数以及素数的个数,请补全程序。</p>
<pre><code class="language-c++">
#include<iostream>
using namespace std;
int main()
{int i,s=0,j;
for(i=100;i<=1000;i++)
{ for(j=2;__4__;j++)
if(i%j==0)
___5____
if(__6____)
{cout<<i<<" ";
s++;}
}
cout<<endl;
cout<<s;
return 0;
}
</code></pre>
<hr>
<p>12.子函数factors(int x,int k)的功能是返回整数x中包含因子k的个数,如果没有该因子,则返回0,请补全程序。</p>
<pre><code class="language-c++">
#include<iostream>
using namespace std;
int factors(int x,int k)
{int i=0;
if(_1_) return 0;
while(_2__)
{
i++;
___3____ }
return i;
}
int main()
{
int x,k;
cin>>x>>k;
cout <<factors(x,k);
return 0;
}
</code></pre>
<hr>
<p>13.声明一个时间类(Time),用于记录警务活动的时间,包含私有数据成员:小时(hour)、分钟(minute)。设计以下函数:</p>
<p>(1)用于将数据成员初始化的成员函数;</p>
<p>(2)用于输出时间的成员函数;</p>
<p>(3)重载加法运算符“+”,实现两个时间对象的相加(例如,1小时20分钟+2小时30分钟=3小时50分钟)。注意分钟超过60要进位。</p>
<p>编写主函数测试以上函数。</p>
<hr>
<p>14.已知分数序列:1/2,2/3,3/5,5/8,8/13,…,编写程序完成:<br>
(1)该序列的累加和首次大于7.0时停止计算;<br>
(2)以逗号分隔输出从首项到该满足条件项的所有项;<br>
(3)输出该满足条件项的位置序号和该项的数值;<br>
(4)输出上述所有项的累加和</p>
<hr>
<p>15.某市某区公安分局下辖6个派出所,每个派出所每季度处理治安案件数量不同,编写程序输入该分局每个派出所各季度的案件数量(4个季度),并计算每个派出所全年案件总量,将案件总量添加到二维数组的最后一列,输出完整的二维数组。</p>
<hr>
<p>16.在一次警务技能比武中,有12名选手参加了射击比赛,成绩即射击环数(比如10.2环,9.8环),编写函数将成绩按降序排序,主函数用户输入环数,调用函数,输出排序后的成绩。要求自己实现排序算法,不能直接调用系统函数。</p>
<hr>
<p>17.某市公安局为表彰先进,需要从各警种中找出累计立功次数最多的警员。每个警员有姓名、警号、年龄、从警年限、所属警种(刑侦、治安、交警等)和立功次数等信息。</p>
<p>要求:</p>
<p>(1)设计PoliceOfficer类,包含上述私有数据成员;</p>
<p>(2)实现带参数构造函数、复制构造函数、析构函数(输出“信息已销毁”);</p>
<p>(3)实现显示警员完整信息的成员函数;</p>
<p>(4)编写普通函数:<code>int findMostMeritorious(PoliceOfficer arr[],int n)</code>,参数n为数组元素个数,查找立功次数最多的警员并返回该对象的序号(需要访问对象的私有成员,可使用友元函数);</p>
<p>(5)主函数中创建5个警员对象数组,调用函数找出立功最多者并输出其信息,并测试以上所有函数。</p>
<p>输入示例:</p>
<p>张伟,1001,35,10,刑侦,5</p>
<p>李娜,1002,28,5,治安,3</p>
<p>王刚,1003,42,18,交警,7</p>
<p>刘静,1004,38,12,经侦,7</p>
<p>陈明,1005,45,20,刑侦,9</p>
<hr>
<p>18.编写程序对字符串完成以下操作:</p>
<p>(1)编写子函数,统计a字符串中字母字符的个数。</p>
<p>函数原型:<code>int mystrlen(const char a[]);</code></p>
<p>如a字符串"aB56cd8_7",则函数返回值为4。</p>
<p>(2)编写子函数,将a字符串中的数字字符拷贝到字符串b中。</p>
<p>函数原型:<code>void extract_digits(const char a[], char b)</code></p>
<p>如a字符串"aB56cd8_7",则b串为:“5687”。</p>
<p>(3)编写子函数,将a字符串加密,存到字符串c中,加密规则为:如果是字母字符,则大小写转换,如果是数字字符,将数字乘以2,超出9则只保留个位,其他字符不变。</p>
<p>函数原型: <code>void myEncipher(const char a[], char c[]);</code></p>
<p>如a字符串为: "aB56cd8_7",加密后的结果为:"Ab02CD6_4"。</p>
<p>编写主函数测试以上函数。</p><br><br>
来源:https://www.cnblogs.com/c1zastar/p/19502095
頁:
[1]