C++: 在主函数中输入一个3×4的整型矩阵,调用一个函数对其进行转置并将结果存放在另一个二维数组中。最后

#include<iostream.h>
#include<iomanip.h>
#include<stdlib.h>
void change(int *p,int m,int n)
{
int i,j,temp;
for(i=0,j=0; i<=m-1; i++)
for(; j<=n-1; j++)
{
temp=*(*(p+i)+j));
*(*(p+i)+j))=*(*(p+j)+i);
*(*(p+j)+i)=temp;
}
}

void main()
{
int a[3][4]={0};
int i,j;
for(i=0,j=0; i<=2; i++)
{
for(; j<=3; j++)
a[i][j]=rand()%10;
}
change(a,3,4);
cout<<a<<endl;

}

结果C:\Documents and Settings\user\桌面\19.cpp(10) : error C2059: syntax error : ')'
C:\Documents and Settings\user\桌面\19.cpp(10) : error C2100: illegal indirection
C:\Documents and Settings\user\桌面\19.cpp(11) : error C2059: syntax error : ')'
C:\Documents and Settings\user\桌面\19.cpp(11) : error C2100: illegal indirection
C:\Documents and Settings\user\桌面\19.cpp(11) : error C2100: illegal indirection
C:\Documents and Settings\user\桌面\19.cpp(11) : error C2106: '=' : left operand must be l-value
C:\Documents and Settings\user\桌面\19.cpp(12) : error C2100: illegal indirection
C:\Documents and Settings\user\桌面\19.cpp(12) : error C2106: '=' : left operand must be l-value
C:\Documents and Settings\user\桌面\19.cpp(26) : error C2664: 'change' : cannot convert parameter 1 from 'int [3][4]' to 'int *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
是怎么回事?

【最佳答案】
①语法错误,多了个')'
②非法指针,你传的参数是int *,但却将它当做int **类型的值使用了。
③同①,多了个')'。
④⑤同②。
⑥误将右值当左值使用了。其中,左值表示一个变量的地址,右值表示变量的值
⑦同②
⑧同⑥
⑨不能将int **型的参数隐式地转换为int *。这种类型的转换必须是强制转换才可以。

【补充】
即便楼主将错误都改正了程序也不能达到目的,因为change()函数的设计本身就不正确。
楼主试图将下面的矩阵转成什么呢?
1 2 3
4 5 6
转置后
1 4
2 5
3 6
试想一个是2x3的矩阵,一个是3x2的矩阵。又能存放于同一个数组中呢?

【提示】
声明两个数组,A[m][n],AT[n][m],分别存放原矩阵和转置矩阵

【认真回答,呈请采纳】
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-25
#include<iostream>
#include<string>
using namespace std;
void find(char* s)
{
int i,j,len=strlen(s),max=0;
char temp[1001],longs[1001];
for(i=j=0;i<=len;i++)
{
temp[j++]=s[i];
if(s[i]==' '||s[i]==0)
{
temp[j]=0;
if(j>max)
{
strcpy(longs,temp);
max=strlen(temp);
}
j=0;
}
}
cout<<longs<<endl;
}
int main()
{
char s[1001];
gets(s);
find(s);
}
如果还没解决你的问题,可以加我百度HI账号。

C++: 在主函数中输入一个3×4的整型矩阵,调用一个函数对其进行转置并...
①语法错误,多了个')'②非法指针,你传的参数是int *,但却将它当做int **类型的值使用了。③同①,多了个')'。④⑤同②。⑥误将右值当左值使用了。其中,左值表示一个变量的地址,右值表示变量的值 ⑦同② ⑧同⑥ ⑨不能将int **型的参数隐式地转换为int *。这种类型的转换必须是强制转...

C++题目: 写一个函数将一个3*3的整型矩阵转置。
1、首先在编辑器中准备好一个空白的c语言文件,引入C语言标准库,在main函数中定义一个3x3阶矩阵以及循环体中要用的变量i和j,以及一个用来交换数据的临时变量tmp,然后下一步就可以开始编写处理转置的部分了:2、二维数组需要用两层循环输出,而算法是将一个3x3阶矩阵转置时,只需将主对角线右上方的...

...写一子函数transpose(),将一个3*3的整型矩阵转置。
include<stdio.h>void transpose(int *a){int i,j,t; for(i=0;i<2;i++) {t=*(a+i); *(a+i)=*(a+3*i+2); *(a+3*i+2)=*(a+2*3+2-i); *(a+2*3+2-i)=*(a+3*(2-i)); *(a+3*(2-i))=t; }}int main(){ int i,j,a[3][3]; for(i=0...

...写一函数,将一个3×3的整型矩阵转置。必须使用宏定义#defin_百度知 ...
include <stdio.h> define N 3 int main (void){ int ar[N][N],arr[N][N];int i,m;printf("输入九个数.\\n");for(i=0;i<N;i++)for(m=0;m<N;m++)scanf("%d",*(ar+i)+m);\/*输出数组*\/ for(i=0;i<N;i++){ for(m=0;m<N;m++)printf("%d ",*(*(ar+i)+...

编写程序,输入一个4*4的整型矩阵,输出该矩阵并求次对角线上元素之和...
import numpy as np 定义输入矩阵 matrix = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])对输入矩阵进行转置 transposed_matrix = np.transpose(matrix)计算次对角线上元素之和 diagonal_sum = np.einsum('ij,ji->i', matrix, transposed_...

...编写一个函数实现n*n矩阵转置。在主函数中用scanf输入矩阵元素;将数 ...
C语言(指针): 编写一个函数实现n*n矩阵转置。在主函数中用scanf输入矩阵元素;将数组名作为函数实参。 lincoln1355 | 浏览1390 次 |举报 我有更好的答案推荐于2017-12-16 18:15:18 最佳答案 好吧,简单说下:void fun( float a[][]){ int i,j,float t;for(i=0;a[i][0];i++) for(j=i;a[...

写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换
方法一、include<stdio.h> void main(){ void switchArray(int[3][3]);int array[][3]={{1,2,3},{4,5,6},{7,8,9}};int i,j;switchArray(array);return 0;} void switchArray(int array[][3]){ int newArray[3][3];int i,j;for(i=0;i<3;i++){ for(j=0;j<3;j...

c语言程序设计,先从键盘上输入一个3行3列数组的各元素的值,然后按主
j<N;j++)a[i][j]=i+j;mPrint(a);for(i=0,m=N-1;i<N;i++,m--)for(j=0,k=N-1;i<k;j++,k--){ temp=a[i][j];a[i][j]=a[k][m];a[k][m]=temp;} mPrint(a);} main(){ mArray();} 输入的那个函数你自己写。我懒得输入... N=3,N=5的两张结果图 ...

求C++高手!!!
6.请编写一个函数void fun(char a[],char b[],int n),其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。 例如,输入一个字符串World,然后输入3,则调用该函数后的结果为Word。***7.请编写一个函数int fun(int*s,int t,int *k)...

跪求!一C语言答案!急需!输入一个一维整型数组,并找出数组元素中最大值...
3.编程实现:首先任意输入一个大于2且小于10的整数n,再输入一个由n决定的二维整型数组(n ╳ n),形成n ╳ n阶矩阵,将矩阵中最大元素所在的行和最小元素所在的行对调后,再输出该矩阵(注意:数组不允许动态定义)。例如: 原始数据: n=4 结果数据:1 2 3 4 8 11 14 16 3 5 9 10...

相似回答