c语言二维数组一维
Ⅰ 请问c语言中如何把一个二维数组用一维数组表示出来
定信迟岁义a[][4]为一个4列的二维数组后,a[2]是*(a+2),这里a是一个指向4个整型的数组指针;
a[2]也可以理解为&a[2][0],因为数组a其实只定义了一行,所以&a[2][0]已经越界了,不过在c语言中越界访问是不会报错的,所以a[2][0]的地址比a[0][0]的地址偏移了2行,也就是8个整型,也是32个字节。旦岁这样理解为滑睁&a[0][0]+32也可
Ⅱ C语言中二维数组的第一维长度是什么意思
二维数组,也就是一组数据,有两个维度行和列。比如
int
a[M][N];
定义了一个M行N列的数组,总元素个数为M*N。
其第一维长度,也就是总羡誉的行数州派大,在C语言中,就是定义中的M。册竖
类似的,第二维长度,也就是每行元素个数。在C语言中就是定义中的N。
Ⅲ c语言二维数组变成一维数组的通项公式
对二维数组拆羡吵用两次循环,将其赋值到一维数组就够了。
举个例子,二维数组a[N][M],一维数组b[]
编写主函数部分:
int i,j,k=0;
for(i=0;i<N;i++)
for(j=0;j<M;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;i<ROW;i++)
{
for(j=0;j<派饥2;j++)
{
arr2D[i][j]=arr1D[i*COL+j];
}
}
//二维整型数组打印显示
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
printf("%d ", arr2D[i][j]);
}
printf(" ");
}
system("pause");
return 0;
}
Ⅳ C语言设计程序二维数组变一维怎么变
提供一个最简单的办法:设原二维数组是int a[N][M];,再声明一个与a的元素类型兼容的指针,如int *p;,然后将a强制为(int *)型赋给p,即p=(int *)a;。这样操作后,用a仍然对原数组能进行二维数组操作,而用p就可按一维数组对原数组进行操作了(相当于将二维数组变成了一维数组p)。验证代码如下:
#include"stdio.h"
#defineN亩基裂3
#defineM4
intmain(intargc,char*argv[]){
inta[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;i<N;i++){
for(j=0;j<M;printf("%3d",a[i][j++]));//用数组名a仍然按二维数组操作
printf(" ");
}
printf(" ");
for(j=M*N,i=0;i<j;printf("%3d",p[i++]));//用p则按一迅闭维数组操作
printf(" ");
return0;
}
运行结果如下图:
Ⅳ c语言 二维数组,一维数组
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
inti,k,a[5][5],b[25],j=0;
doublec=0;
srand(time(NULL));
printf("产生的随机数组是: ");
for(i=0;i<唤行5;i++)
{
for(k=0;k<5;k++)
{
谈链源a[i][k]=rand()%90+10;
printf("%d",a[i][k]);
c+=a[i][k];
含态}
printf(" ");
}
c=c/25;
//printf("%lf ",c);
printf(" 新的数组为: ");
for(i=0;i<5;++i)
{
for(k=0;k<5;k++)
if(a[i][k]<c)
{
b[j]=a[i][k];
j++;
}
}
for(i=0;i<j;i++)
printf("%d",b[i]);
return0;
}
for (i = 0; i < 25; ++i) 这里循环错了 ,i<5
Ⅵ c语言中能把一个二维数组的值赋给一个一维数组吗
当然可以了。
例如:
#include<stdio.h>
voidmain()
{
inti,j,k=0,a[2][2]={1,2,3,4},b[4];
for(i=0;i<2;i++)
for(j=0;j<槐仿2;j++)
{b[k]=a[i][j];k++;}
for(k=0;k<4;k++)
printf("%d",b[k]);
}
运行结果:
就是将一个2×2的二维数组卖芦的值按顺序赋给中明带一个一维数组。
Ⅶ C语言如何将二维数组转化为一维数组
一维数组:
类型说明符
数组名[常量迅蠢表达式]
例如
int
a[10]它表示数组名为a,此数组有10个元素答昌稿
二维数组:
数组名[下标][下标]
如
a[2][3]
下标可以是清孝整形表达式如a[2-1][2*2-1]不能写成a[2,3]
a[2-1,2*2-1]
Ⅷ c语言怎么把二维数组的字符串给到一维数组
按元素赋值:
遍历一维数组,并将每个元素赋值到二维数组的对应元素上。
或者遍历二维数组,将每个元素赋值为一维数组对应值上。
优点为操作灵活,可以按照需要任意赋值。
2 当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用
memcpy(b,a,sizeof(TYPE)*n);
该方法有点为操作简单,执行效率高。
不过所需满足的前提条件多。在满足上述所有条件时,用memcpy的方式更为简单。
个就是apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表。
Ⅸ C语言一个二维数组如何转换成一个新的一维数组
当然可以了。
例如:
#include<stdio.h>voidmain(){inti,j,k=0,a[2][2]={1,2,3,4},b[4];for(i=0;i<2;i++)for(j=0;j<2;j++){b[k]=a[i][j];k++;}for(k=0;k<4;k++)printf("%d",b[k]);}
运行结果:
就是将一个2×2的二维数组的值按顺序赋给一个一维数组。
Ⅹ (c语言程序执行结果分析题)按行优先的方式把一个二维数组的元素存入一个一维数组中,并输出
#include <stdio.h>
#include <malloc.h>
int main()
{
//这是一个二维数组
int arr[2][3] = {
{1,2,3},
{4,5,6}
};
//获帆陵取数组的尺寸和行列数:
int len = sizeof(arr) / sizeof(arr[0][0]);
int row = sizeof(arr) / sizeof(arr[0]);
int column = len / row;
//知道了长度就可以使用calloc创建一个给定长度的数组(但用完记得要free)
int* new_arr = (int*)calloc(len, sizeof(int));
//将二维数组内的数值写入一维数组
for (int i = 0; i < len; i++)
{
//确定行号 用索引 i 除以(每行中有几列) 得到行数
int y = i / column; // 如 第5个数 / 每列有3个,则为 4/3= “1”(第二行)
坦轿亩 //确定列
int x = i % column; // 如 第5个数 % 每列有3个,则为 4/3= 1余 “1” (第二个)
//将该数值写入新数组
if (!new_arr) { free(new_arr); return 1; } //new_arr为空的验证,如果出现此错误则 return 1
else {
new_arr[i] = arr[y][x];
}
}
//输出新数组的数字
for (int i = 0; i < len; i++)
{
让森 if (!new_arr) { free(new_arr); return 1; }
else {
printf("%d ", new_arr[i]);
}
}
free(new_arr);
}