本文目录一览:
c语言程序,将二维数组转化为一维数组,然后文件输出,求救。。。。。原题为第11题。
提供一个最简单的办法:设原二维数组是int a[N][M];,再声明一个与a的元素类型兼容的指针,如int *p;,然后将a强制为(int *)型赋给p,即p=(int *)a;。这样操作后,用a仍然对原数组能进行二维数组操作,而用p就可按一维数组对原数组进行操作了(相当于将二维数组变成了一维数组p)。验证代码如下:
#include "stdio.h"
#define N 3
#define M 4
int main(int argc,char *argv[]){
int a[N][M]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},i,j,*p;
p=(int *)a;//将二维数组a变成一维数组p
for(i=0;iN;i++){
for(j=0;jM;printf("%3d",a[i][j++]));//用数组名a仍然按二维数组操作
printf("\n");
}
printf("\n");
for(j=M*N,i=0;ij;printf("%3d",p[i++]));//用p则按一维数组操作
printf("\n");
return 0;
}
c语言二维数组变成一维数组的通项公式
对二维数组用两次循环,将其赋值到一维数组就够了。
举个例子,二维数组a[N][M],一维数组b[]
编写主函数部分:
int i,j,k=0;
for(i=0;iN;i++)
for(j=0;jM;j++)
b[k++]=a[i][j];
扩展资料:
反之一维转二维
#include stdio.h
#include stdlib.h
#define ROW 3
#define COL 2
int main(int argc, char *argv[])
{
int arr1D[] = {1,2,3,4,5,6};
int arr2D[ROW][COL];
int i,j;
//一维维整型数组转换为二维整型数组
for(i=0;iROW;i++)
{
for(j=0;j2;j++)
{
arr2D[i][j]=arr1D[i*COL+j];
}
}
//二维整型数组打印显示
for(i=0;iROW;i++)
{
for(j=0;jCOL;j++)
{
printf("%d ", arr2D[i][j]);
}
printf("\n");
}
system("pause");
return 0;
}
C语言一个二维数组如何转换成一个新的一维数组?
当然可以了。
例如:
#include stdio.hvoid main(){int i,j,k=0,a[2][2]={1,2,3,4},b[4];for(i=0;i2;i++)for(j=0;j2;j++){b[k]=a[i][j];k++;}for(k=0;k4;k++)printf("%d ",b[k]);}
运行结果:
就是将一个2×2的二维数组的值按顺序赋给一个一维数组。