您好,关于C++cout.width()函数使用后无法实现预期效果,该怎么解决?

源代码:
//用指针变量输出二维数组的值
#include<iostream>
using namespace std;
int main()
{
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i,j,*p;
p=&a[0][0];
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
cout.width(4);
cout<<*(*(a+i)+j);
cout<<endl; //预期输出3*4的整齐数组
}
for(i=0;i<3;i++) //输出指针地址
{
for(j=0;j<4;j++)
cout<<*(a+i)+j<<" ";
cout<<endl;
}
cout<<endl;
return 0;
}
但结果显示为:



PIPIONE
浏览 331回答 1
1回答

跃然一笑

程序没有错,for循环中要做的事必须放在大括号中,否则只执行后面一句,像你的程序中for(j=0;j<4;j++)cout.width(4);cout<<*(*(a+i)+j); 实际上这个for循环只执行cout.width(4);而不执行后面一句,改成下面这样:#include<iostream>using namespace std;int main(){int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i,j,*p;p=&a[0][0];for(i=0;i<3;i++){for(j=0;j<4;j++){cout.width(4);cout<<*(*(a+i)+j);}cout<<endl; //预期输出3*4的整齐数组}for(i=0;i<3;i++) //输出指针地址{for(j=0;j<4;j++){cout<<*(a+i)+j<<" ";}cout<<endl;}cout<<endl;return 0;}
打开App,查看更多内容
随时随地看视频慕课网APP