国家二级C++机试(操作题)模拟试卷533
基本操作题
1.使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序的执行结果为:
1 2 3 4 5 4 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
注意:错误的语句在//******error******的下面,修改该语句即可。
1 #include<iostream.h>
2 #include<iomanip.h>
3 void main()
4 {
5 int i,j,k;
6 for(i=5;i>=1;i–)
7 {
8 //******error******
9 for(j=1;j<=i;j++)
10 cout<<’’ ’’;
11 //******error******
12 for(k=1;k>=i;k++)
13 cout<<setw(3)<<k;
14 //******error******
15 for(k=i-1; k>0; k++)
16 cout<<setw(3)<<k;
17 cout<<end1;
18 }
19 }
(1)for(j=1;j<=5-i;j++)
(2)for(k=1;k<=i;k++)
(3)for(k=i-1;k>0;k–)
解析:本题属于绘制图形题,观察可知输出图形左右对称,从上至下有规律变化,因此可采用循环输出的方式得到该图形。输出图形呈倒金字塔型,即开始输出的空格逐步增多:由于图形左右对称,从左边到中间数值逐渐增大,到最大值后逐渐减小,因此可以分两次输出数值,一个循环负责输出左半部分,另一个输出右半部分数值。
(1)分析可知,两个循环负责输出两半数值,刚开始还有空格,而且空格书逐行增加,因此也必须用循环来实现输出空格,即内层第一个小循环负责输出空格,因此forq[j=1.j<i;j++)应改为for(j=1.j<=5-i;j++)。
(2)第二个小循环负责输出左半部分数值,外层大循环i从5变到1,而每行前半部分数值的最大值在减小,因此第二个循环的循环变量j与i之和满足一定关系,即j<=i,第2个标识处for(k=1;k>=i;k++)应改为for(1(=1;k<=i;k++)。
(3)第三个小循环负责输出右半部分数值,数值从大变到小,因此循环变量k的初值为i-1,k逐次变小,即第3标识处for(k=i-1;k>0;k++)应改为for(k=l;k>0;k–)。
简单应用题
2.使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数convert(char*strOct)的功能是将八进制转换为十进制。
提示:要每一位转换,然后把转换后得到的数累加起来即可。
注意:不能修改其他部分的代码。
1 #include<iostream.h>
2 #include<cmath>
3 int convert(char* strOct)
4 {
5
6 }
7 int main()
8 {
9 cout<<convert(’’7’’)<<end1;
10 cout<<convert(’’10’’)<<end1;
11 cout<<convert(’’1234’’)<<end1;
12 return 0;
13 }
1 int re=0;
2 while (*strOct)
3 {
4 re = re*8 +(*strOct) – ’0’;
5 strOct++;
6 }
7 return re;
解析:函数convert(char*strOct)的功能是将八进制转换为十进制,将八进制转换成十进制的方法是按权展开,即八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方,依次将各位数乘上其权值,然后求和即得到相应的十进制数。
(1)定义整型变量re,re记录求得的10进制数。
(2)convert(char*strOct)的输入参数为字符指针,而不是整形数据指针,因此需要将ASCII码转换成相应的数字量,即(*strOct)-’0’。
(3)按权展开可采用循环迭代的方法,如:(123)8=((1×8)+2)×8+3,即迭代过程为上一次运算得到的结果再乘以8加现在的元素值,即re=re*8+(*strOct)-’0’。
综合应用题
3.使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)完成类Rect的构造函数,实现对变量left、right、top、boRom的初始化,缺省值都为0,请在注释//********1********后添加适当的语句。
(2)完成类Rectangle的构造函数,请在注释//********2********后添加适当的语句。
(3)完成计算矩形对角线长度函数Diagonal(),请在注释//********3********后添加适当的语句。
(4)完成计算周长函数Girth(),请在注释//********4********后添加适当的语句。
程序输出:
50
140
注意:增加代码,或者修改代码的位置已经用符:号表示出来。请不要修改其他的程序代码。
1 #include<iostream.h>
2 #include<cmath>
3 class Rectangle
4 {
5 public:
6 int left,right,top,bottom;
7 //********1********
8
9 {
10 left=1;
11 right=r;
12 top=t;
13 bottom=b ;
14 }
15 //********2********
16 {
17 left=rc.left;
18 right=rc.right;
19 top =rc.top;
20 bottom=rc.bottom;
21 }
22 float Diagonal()
23 {
24 //********3********
25 return
26 }
本文档预览:3600字符,共4920字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载