帮我看看这段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是代表行,我想程序应该读不明它才对. 展开
#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是代表行,我想程序应该读不明它才对. 展开
4个回答
2010-03-07
展开全部
没有错误.
+2是因为还有两个空格和空格前(后)的一个星号
cout<<endl;的作用就是换行
+2是因为还有两个空格和空格前(后)的一个星号
cout<<endl;的作用就是换行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-03-07
展开全部
楼上的,你说cout<<endl;是换行,程序中只有两个,那么框架怎么会有四行?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询