函数 二维数组 指针
1、将一个3X3的矩阵转置,用一个自定义函数实现矩阵的转置过程。在主函数中用scanf函数输入以下矩阵元素:
1 3 5
7 9 11
1315 17
将数组名作为函数实参,在执行函数的过程中实现矩阵转置,函数调用结束后在主函数中输出已转置的矩阵。
预取输出的结果:
1 713
3 915
5 1117
楼主刚学C不久,对这种地址有关的问题困惑比较大,麻烦注释一下一些赋址或传递地址的关键语句让我看看到底是怎么理解的,谢谢啦。 本帖最后由 jhq999 于 2022-12-19 18:30 编辑
int zz(int *a,int N)
{
int (*b)=(int(*))a;
for(int i=0;i<N-1;i+=1)
{
for(int j=i+1;j<N;j+=1)
{
int tmp=b;//让矩阵的位置对角线(i,j)(j,i)调换
b=b;
b=tmp;
}
}
return 0;
}
int main()
{
int i,j,N;
scanf("%d",&N);
int a;
for(i=0;i<N;i+=1)
{
for(j=0;j<N;j+=1)
{
scanf("%d",&a);
}
}
zz(a,N);
for(i=0;i<N;i+=1)
{
for(j=0;j<N;j+=1)
{
printf("%4d",a);
}
printf("\n");
}
return 0;
}
#include <stdio.h>
void foo(int arr[]) {
for (int r = 0; r < 3; ++r) {
for (int c = 0, temp; c < r; ++c) {
temp = arr;
arr = arr;
arr = temp;
}
}
}
int main(void) {
int arr = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
foo(arr);
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
printf("%d ", arr);
}
printf("\n");
}
return 0;
}
页:
[1]