使用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 注意:错误的语句在//

admin2016-10-28  20

问题 使用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******的下面,修改该语句即可。
#include<iostream.h>
#include<iomanip.h>
void main()
{
int i,j,k;
for(i=5;i>=1;i--)
{
//********error********
for(j=1;j<=i;j++)
cout<<" ";
//********error********
for(k=1;k>=i;k++)
cout<<setw(3)<<k;
//********error********
for(k=i-1;k>0;k++)
cout<<setw(3)<<k;
cout<<endl;
}
}

选项

答案(1)for(j=1;j<=5-i;j++) (2)for(k=i;k<=i;k++) (3)for(k=i-1;k>0;k--)

解析 (1)分析可知,两个循环负责输出两半数值,刚开始还有空格,而且空格书逐行增加,因此也必须用循环来实现输出空格,即内层第一个小循环负责输出空格,因此for(j=1,j<=i;j++)应改为for(j=1.j<=5-i.j++)。
(2)第二个小循环负责输出左半部分数值,外层大循环i从5变到1,而每行前半部分数值的最大值在减小,因此第二个循环的循环变量j与i之和满足一定关系,即i<=i,第2个标识处for(k=1;k>=i;k++)应改为for(k=1;k<=i;k++)。
(3)第三个小循环负责输出右半部分数值,数值从大变到小,因此循环变量k的初值为i-1,k逐次变小,即第3标识处for(k=i-1;k>0;k++)应改为for(k=i=1;k>0;k--)。
转载请注明原文地址:https://jikaoti.com/ti/iYE0FFFM
0

最新回复(0)