帮我看看这段C++程序有什么错误?

#include<iostream>#include<string>usingstd::cin;usingstd::endl;usingstd::cout;usingst... #include <iostream>
#include <string>
using std::cin; using std::endl;
using std::cout; using std::string;
int main()
{cout<<"please enter your first name:";
string name;
cin>>name;
const string greeting="HeLLo,"+name+"!";
const int pad=1;
const int rows=pad*2+3;
const string::size_type cols=greeting.size()+pad*2+2;
cout<<endl;
for(int r=0; r!=rows; ++r){
string::size_type c=0;
while(c!=cols){
if (r==pad+1 && c==pad+1){
cout<<greeting;
c+=greeting.size();
}
else {
if (r==0||r==rows-1||c==0||c==cols-1)
cout<<"*";
else
cout<<" ";
++c;
}
}
cout<<endl;
}
return 0;}

效果:
***********************
* *
*Hello,(要输入有名字)!*
* *
***********************
*****************************
* *
*Hello,(要输入的名字)!*
* *
*****************************
其实这段代码是我从参考书中搬过来的,我说它有问题,只是我对其中的代码有疑问.那就是greeting.size()+pad*2+2,为什么不是greeting.size()+pad*2呢?(这个框架应该只有greeting.size()+pad*2列才对啊)还有的是为什么运行出来的结果会分行?其中r是代表行,我想程序应该读不明它才对.
展开
 我来答
百度网友c59e743
2010-03-07 · TA获得超过348个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:162万
展开全部
gcc环境可以
MinGW环境可以
Visual studio 2008可以

+2列的原因是,hello前面和*有一个空格,后面的同理
匿名用户
2010-03-07
展开全部
没有错误.

+2是因为还有两个空格和空格前(后)的一个星号

cout<<endl;的作用就是换行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
__________鄭晟
2010-03-07 · TA获得超过2216个赞
知道小有建树答主
回答量:281
采纳率:100%
帮助的人:0
展开全部

运行环境:Microsoft Visual C++ 6.0

运行结果:如下图:

结论:该程序无错误。

如果楼主运行这段代码有问题,请把问题补充下。关注中......

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-03-07
展开全部
楼上的,你说cout<<endl;是换行,程序中只有两个,那么框架怎么会有四行?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式