降头2007下载:C++编程的问题,哪位高手给解答一下。

来源:百度文库 编辑:高考问答 时间:2024/05/03 04:09:02
// 打印9*9乘法表(3)

#include <iostream.h>
#include <iomanip.h>

void myPrint();

void main()
{
myPrint();
int i, j;
for (i=1; i<=9; i++)
{
cout<<setw(5)<<i<<setw(5*i);
for (j=i; j<=9; j++)
cout<<setw(5)<<i*j;
cout<<endl;

}

}

void myPrint()
{
cout<<setw(5)<<"*"<<setw(5)<<1<<setw(5)<<2<<setw(5)<<3<<setw(5)<<4<<setw(5)<<5
<<setw(5)<<6<<setw(5)<<7<<setw(5)<<8<<setw(5)<<9<<endl;
cout<<"......................................................"<<endl;
return;
}

上面cout<<setw(5)<<i<<setw(5*i);一句中setw(5*i)为什么不起作用呢?

setw(n)表示对后面要输出的字符(串)的格式约束
你这里cout<<setw(5)<<i<<setw(5*i);要输出什么呢?

你的意思应该是cout<<setw(5)<<i<<setw(5*i)<<' ';吧

/*这样改就好了*/
void main()
{
myPrint();
int i, j;
for (i=1; i<=9; i++)
{
cout<<setw(5)<<i<<setw(5*i-5)<<"";//宽度设错了,而且后面要跟个"",每次cout<<的时候设置都回到默认了。
for (j=i; j<=9; j++)
cout<<setw(5)<<i*j;
cout<<endl;

}
}

setw()是设置其后所要显示的字符或数据的域宽(即长度) 不够长度会自动在其前面加上相应数目的空格
你这里设置了域宽却没给出被设置域宽的输出对象

起了作用的。