首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个小的有关问题,求教

2012-04-05 
一个小的问题,求教各位高手//写一个函数,将一个3*3的整型矩阵转置(先用数组写,然后用引用写)#includeiost

一个小的问题,求教各位高手
//写一个函数,将一个3*3的整型矩阵转置(先用数组写,然后用引用写)
#include<iostream>
using namespace std;
int main()
{
void change(int *k);
int a[3][3];
int m,n;
for(m=0;m<=2;m++)
{
for(n=0;n<=2;n++)
{
cin>>a[m][n];
}
}
int *p;
p=&a[0][0];
change(p);
for(m=0;m<=2;m++)
{
for(n=0;n<=2;n++)
{
cout<<a[m][n];
}
}
return 0;
}
void change(int *k)
{
int m,n;
int temp;
for(m=0;m<=2;m++)
{
for(n=0;n<=2;n++)
{
temp=*(*(k+m)+n);
*(*(k+m)+n)=*(*(k+n)+m);
*(*(k+n)+m)=temp;
}
}
}



最后的这个地方temp=*(*(k+m)+n);
*(*(k+m)+n)=*(*(k+n)+m);
*(*(k+n)+m)=temp;
怎么是错的呢,要怎么样改呢????

[解决办法]
int *p;
p=&a[0][0];//这样定义指针的话,不能像你那样用···

C/C++ code
int main(){    void change(int (*k)[3]);    int a[3][3];    int m,n;    for(m=0;m<=2;m++)    {        for(n=0;n<=2;n++)        {            cin>>a[m][n];        }    }    int (*p)[3] = a;    change(p);    for(m=0;m<=2;m++)    {        for(n=0;n<=2;n++)        {            cout<<a[m][n];        }    }    return 0;}void change(int (*k)[3]){    int m,n;    int temp;    for(m=0;m<=2;m++)    {        for(n=0;n<=2;n++)        {            temp=*(*(k+m)+n);            *(*(k+m)+n)=*(*(k+n)+m);            *(*(k+n)+m)=temp;        }    }}
[解决办法]
你那是指向下一级数组元素的指针要这样写才行!
#include<iostream>
using namespace std;
int main()
{
 void change(int *k);
 int a[3][3];
 int m,n;
 for(m=0;m<=2;m++)
 {
 for(n=0;n<=2;n++)
 {
 cin>>a[m][n];
 }
 }
for(m=0;m<=2;m++)
 {
 for(n=0;n<=2;n++)
 {
 cout<<a[m][n]<<" ";
 }
 cout<<endl;
 }
 int *p;
 p=&a[0][0];
 change(p);
 for(m=0;m<=2;m++)
 {
 for(n=0;n<=2;n++)
 {
 cout<<a[m][n]<<" ";
 }
 cout<<endl;
 }
 return 0;
}
void change(int *k)
{
 int m,n;
 int temp;
 for(m=0;m<3;m++)
 {
for(n=m;n<3;n++)
{
temp=*(k+m*3+n);
*(k+m*3+n)=*(k+n*3+m);
*(k+n*3+m)=temp;
}
 }
}

热点排行