[Error] invalid operands to binary * (have 'int' and 'int *')
使用void convert(int *pt)实现矩阵的转置
#include<stdio.h>
void convert(int *pt);
void main(){
int a[4][4],*p,i,j;
printf("请输入4*4矩阵元素的值:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
p=&a[0][0];
printf("转置后的矩阵为:\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
void convert(int *pt){
int i,j,t;
for(i=0;i<4;i++)
for(j=0;j<4;j++){
t=*((pt+4*i)+j)
*((pt+4*i)+j)=*((pt+4*j)+i);
*((pt+4*j)+i)=t;
}
}
怎么修正这个错误呢
代码共有三处问题,见注释“修改”,供参考:
#include<stdio.h>
void convert(int* pt);
void main() {
int a[4][4], * p, i, j;
printf("请输入4*4矩阵元素的值:\n");
for (i = 0; i < 4; i++)
for (j = 0; j < 4; j++)
scanf("%d", &a[i][j]);
p = &a[0][0];
convert(p); // 函数调用 修改
printf("转置后的矩阵为:\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
void convert(int* pt) {
int i, j, t;
for (i = 0; i < 4; i++)
for (j = i; j < 4; j++) { //for (j = 0; j < 4; j++) 修改
t = *((pt + 4 * i) + j); // 这行末尾缺了分号';' 修改
*((pt + 4 * i) + j) = *((pt + 4 * j) + i);
*((pt + 4 * j) + i) = t;
}
}
#include<stdio.h>
void convert(int *pt);
int main(){
int a[4][4],*p,i,j;
printf("请输入4*4矩阵元素的值:\n");
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
p = &a[0][0];
printf("转置前的矩阵为:\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%d ",a[i][j]);
printf("\n");
}
// 调用矩阵转置函数
convert(p);
printf("转置后的矩阵为:\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
void convert(int *pt){
int i,j,t;
for(i=0;i<4;i++)
for(j=0;j<4;j++){
t=*((pt+4*i)+j);
*((pt+4*i)+j)=*((pt+4*j)+i);
*((pt+4*j)+i)=t;
}
}