为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PIPIONE 2021-12-08 11:07:17
源代码://用指针变量输出二维数组的值#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;}但结果显示为:
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

程序没有错,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;
}



查看完整回答
反对 回复 2021-12-12
  • 1 回答
  • 0 关注
  • 330 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信