关于数组的问题,谢谢

kesaihao862 2008-03-09 04:20:40
char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };

for(int i=0;i<12;i++)
cout<< ;

cout<<后面添什么,要求一重循环打印,谁能解释解释,谢谢·
...全文
73 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeloas 2008-03-09
  • 打赏
  • 举报
回复
cout<< *((int *)a+i);
lz看不到诸如163...的输出适应为ascii码是1,6,3的部分有可能是不可见的。
Mnky 2008-03-09
  • 打赏
  • 举报
回复
刚才写的有点问题,应该是:
cout<<a[i/6][(i/3)%2][i%3]
Mnky 2008-03-09
  • 打赏
  • 举报
回复
cout<<a[i/6][i/3][i%3]
其实就是将12转换为一个特殊的进制数
HengStar 2008-03-09
  • 打赏
  • 举报
回复
我刚已经试过了,可以用的,
char a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };
你这里声明的是char类型,输出的结果可能有点怪异
把char改成int再输出看看,是不是你想要的结果

int a[2][2][3]={{{1,6,3},{5,4,15}},{{3,5,33},{23,12,7}} };

int k = 2, m = 3, j = 2;
for(int i=0;i <12;i++)
{
cout << a[i / (k * m)][i / m % k][i % m] << endl;
}

kesaihao862 2008-03-09
  • 打赏
  • 举报
回复
楼上两位的方法,我在VC6下试了,都不能用。。不信自己去试!!
HengStar 2008-03-09
  • 打赏
  • 举报
回复
要解释这个似乎不太好解释,找到规律
第一维数组j的值必须要在后两维数都加满后才能加1,所以是i / (k*m)
第二维数组k的值跟第三维有关系,第三维加满的时候k才能+1,而且不能超过本身的最大下标2,所以i / m % k
最后一维比较简单,它的取值只会在0和它本身的最大值-1之间,所以用 i % m
可能解释的不是很合理...将就着看看吧,呵呵
HengStar 2008-03-09
  • 打赏
  • 举报
回复
我在这把[2][2][3]分别用j,k,m表示便于理解(j=2,k=2,m=3)
cout << a[i / (k * m)][i / m % k][i % m] << endl;
  • 打赏
  • 举报
回复
char a[0][0][i];

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧