btcq.net
当前位置:首页 >> C语言一维数组的转置 >>

C语言一维数组的转置

两个错:1、主函数中对子函数的调用参数格式错误: 应该使用数组名作实际参数:exchange(a);2、依据你的想法:在子函数中需要先把a转置的结果放置在b中,再按行输出b. 否则,在你的函数里尽管b中的数据是a转置的结果,但本质上还是按a数组中数据行的次序输出了数据,所以显示的结果是错误的.int exchange(int a[3][3]) { int i,j,b[3][3]; for(i=0;i for(j=0;j b[j][i]=a[i][j]; for(i=0;i { for(j=0;j printf("%5d ",b[i][j]); printf("\n"); } }

设数组是MxNint transpos(const int from[M*N], int to[M*N]){ for (int i=0;i to[j*N+i]=from[i*N+j]; return 1;}

//try it 试试看#include <stdio.h> void transpose( int a[6][6],int n) { int i,j,temp; for(i=0;i<n;i++) for (j=0;j<i;j++) {temp=a[i][j];a[i][j]=a[j][i];a[j][i]=temp;} } void main() { int i,j,a[6][6],n; printf("please input the 维度<1-6>:"); scanf("%d",&n); printf("请输

举个例子吧1 2 34 1 56 7 1其中2是和4换了位置,所以当算第二行的时候,从j=i开始算就行了,因为4已经转置过了,如果又重0开始算,就又换回来了,于是就输出原数组了

1、初始化时进行赋值. int a[2] = {1,2}; char str[20] = "hello world"; 2、逐个赋值 int a[4]; a[0] = 1,a[1]=2, a[2] = 3, a[4]=4; 等同于. for (int inx=0; inx!=4; ++inx) a[inx]=inx+1; 3、通过函数复制数据以实现赋值 比如下面的代码,通过memcpy

数组长度加1,把数组的最后一位向后移以为,倒数第二位移到原先数组的最后一位,以此方法移动,知道移动到你查找到数组的那个元素.

矩阵的输入,输出#include"stdio.h"#include"conio.h"main(){ int i,n,j,a[1000]; printf("你要输入几阶矩阵?"); scanf("%d",&n); j=n*n; for(i=0;i<j;i++) scanf("%d",&a[i]); printf("矩阵为如下:\n"); for(i=0;i<j;i++) printf((i+1)%n==0?"%d\n":"%d ",a[i]);getch();}

有两种方法可以实现.1 逐个赋值法.采用循环,逐项赋值.以整型为例,int a[10], b[10]; 要把a的值赋值给b,可以写作 int i; for(i = 0; i < 10; i ++) b[i] = a[i];2 整体复制法.利用C语言库函数memcpy可以整体复制.memcpy声明与string.h中,形式为 void * memcpy(void *dst, void *src, int length); 其功能为将src地址上长度为length字节的数据,复制到dst上.于是上一个方法中的例子,可以用 memcpy(b,a,sizeof(a)); 来实现相同效果.代码量较前一个方法更少,同时效率也更高.

首先你应该让电脑知道M是位于数组的哪个元素.你应该先找到他.然后你用K赋值给他就可以替换了……语句应该是这样的fot(i=0;i 评论0 0 0

思路:定了两个二维数组分别存储转置前后的矩阵,接着for循环依次转置即可.//参考代码#include int main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},b[3][3]; int i,j; for(i=0;i 评论0 0 0

网站首页 | 网站地图
All rights reserved Powered by www.btcq.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com