使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序的执行结果为: 1 2 3 4 5 4 3 2 1 1 2 3 4 3 2 1

admin2018-10-23  9

问题 使用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--)。
转载请注明原文地址:https://kaotiyun.com/show/qwAp777K
0

最新回复(0)