C语言编程 二维数组

C语言编程 二维数组,第1张

1 方法:通过嵌套的两个for循环来遍历二维数组

2 代码

#include<stdioh>

void Find(int num, int arr[3][2], int row, int col){

for (int i = 0; i < row; i++){

for (int j = 0; j < col; j++){

if (arr[i][j] == num){

printf("找到了,行列下标为(%d,%d)\n", i, j);

return;

}

}

}

puts("没找到");

}

int main(){

int arr[3][2] = { { 1, 2 }, { 3, 4 }, { 5, 6 } };

int num;

scanf("%d", &num);

Find(num, arr, 3, 2);

getchar();

getchar();

return 0;

}

#include <stdioh>

int main()

{

int score[5][3];

float ave_score_1[5];

float ave_score_2[3];

int i,j;

int sum_score;

printf("Please input the score:\n");

for(i=0;i<5;i++)

{

scanf("%d %d %d",&score[i][0],&score[i][1],&score[i][2]);

}

for(i=0;i<5;i++)

{

sum_score = 0;

for(j=0;j<3;j++)

{

sum_score += score[i][j];

}

ave_score_1[i] = sum_score / 30;

}

for(j=0;j<3;j++)

{

sum_score = 0;

for(i=0;i<5;i++)

{

sum_score += score[i][j];

}

ave_score_2[j] = sum_score / 50;

}

for(i=0;i<5;i++)

{

printf("%f ",ave_score_1[i]);

}

printf("\n");

for(j=0;j<3;j++)

{

printf("%f ",ave_score_2[j]);

}

return 0;

}

二维数组可以理解为“元素是数组的数组”,或者说“一维数组的一维数组”。比如

char a[2][3],可以看成是一个一维数组,这个一维数组有2个元素,这2个元素分别是a[0]和

a[1]。其中a[0]和a[1]实际上是两个数组的首地址(即一维指针),而这两个一维数组是字符数组,也就是说它们的元素是字符。a[0]和a[1]是这两个字符数组的数组名,如果要引用其中的字符元素,要在后面用“[下标]”的形式,例如a[0][2]。

C语言中,如何手动输入二维数组?c语言的数组是非常重要的内容,特别是二维数组的内容,所以今天就由小编来为大家介绍c语言怎么创建一个二维数组。

工具原料c语言电脑

方法/步骤分步阅读

1

/6

第一首先在电脑上打开c语言编程软件。

然后创建项目。

2

/6

第二然后导入stdioh和stdlib包。

再加入malloc包。

3

/6

第三然后定义五个参数。

再创建其中两个参数的空间。

4

/6

第四然后用for语句进行循环。

再用scanf语句进行接收输入到二维数组。。

5

/6

第五然后用两个for语言循环。

再输出二维数组的数值。

6

/6

第六然后用printf语句进行数据输出分格。

这样一个二维数组就创建成功了。

注意事项

个人经验,仅供参考。

内容仅供参考并受版权保护

扩展内容:

二维数组:

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符 数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。

二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) n + (j − q)) t,按“列优先顺序”存储时,地址计算为:LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) m + (i − p)) t,存放该数组至少需要的单元数为(m-p+1) (n-q+1) t 个字节。

#include <stdioh>

#define ROW 5

#define COL 5

int main()

{

int array[ROW][COL];

int i, j, sum = 0, count = 0;

float average = 00;

// 初始化二维数组

for (i = 0; i < ROW; i++)

{

for (j = 0; j < COL; j++)

{

array[i][j] = i + j;

}

}

// 计算二维数组的和

for (i = 0; i < ROW; i++)

{

for (j = 0; j < COL; j++)

{

sum += array[i][j];

}

}

// 计算周围元素的平均值

for (i = 0; i < ROW; i++)

{

for (j = 0; j < COL; j++)

{

if (i > 0 && j > 0 && i < ROW - 1 && j < COL - 1)

{

count++;

average += (array[i-1][j-1] + array[i-1][j] + array[i-1][j+1] + array[i][j-1] + array[i][j+1] + array[i+1][j-1] + array[i+1][j] + array[i+1][j+1]) / 80;

}

}

}

// 打印结果

printf("The sum of the array is %d\n", sum);

printf("The average of the surrounding elements is %2f\n", average / count);

return 0;

}

该代码使用两个嵌套循环遍历整个二维数组,第一个循环用于计算数组的和,第二个循环用于计算周围元素的平均值。除了数组的边界元素外,所有元素的周围元素都将被计算入平均值。

请注意,代码中使用了 ROW 和 COL 宏定义,这些定义用于指定数组的行数和列数,因此,如果您希望使用其他数组大小,只需修改这些定义即可。

最后,代码使用 printf 函数打印结果,并使用了格式字符串(2f)以保留两位小数。

这是我的代码,自己改改

#include<stdioh>

#define MAX 10

void matrixMultipy(int A[][MAX],int B[][MAX],int C[][MAX],int n,int m,int s);

void main()

{

int n,m,s,i,j,A[MAX][MAX]={0},B[MAX][MAX]={0},C[MAX][MAX]={0};

printf("Please input row and column of the two matrix:");

scanf("%d%d%d",&n,&m,&s);

printf("Please input the elements of the two matrix:\n");

printf("The first one:\n");

for(i=0;i<n;i++)

{

for(j=0;j<m;j++)

{

scanf("%d",&A[i][j]);//A[n][m]

}

   }

printf("The next one:\n");

for(i=0;i<m;i++)

{

for(j=0;j<s;j++)

{

scanf("%d",&B[i][j]);//B[m][s]

}

}

matrixMultipy(A,B,C,n,m,s);//注意二维数组做实参的形式

printf("The result is:\n");

for(i=0;i<n;i++)

{

for(j=0;j<s;j++)

{

  printf("%-5d ",C[i][j]);//C[n][s]

}

printf("\n");

}

}

void matrixMultipy(int A[][MAX],int B[][MAX],int C[][MAX],int n,int m,int s)

{

int i,j,k;

for(i=0;i<n;i++)

{

for(j=0;j<s;j++)//i和j控制C[][]的行与列

{

for(k=0;k<m;k++)//控制行与列相乘时往下走

{

  C[i][j]+=A[i][k]B[k][i];

}

}

}

}

注:此解法如果个子最高的人不止一个,那么只会输出第一个个子最高的人的站位坐标。可以稍作修改,即找到最大值后,遍历数组每个元素,只要是等于最大值的就将其站位坐标输出(数组下标从0开始,实际站位坐标要加1)

修改后代码如下:

1、首先是定义一个二级指针和行列变量int array,row,column;。

2、然后编写输入行列的语句,代码如图。

3、接下来就可以为其开辟一个一个一维装着一维数组的数组。

4、接下来使用array[i]=(int )malloc(sizeof(int)column);,为数组再次产生一个新的装着数组的数组。

5、然后就可以为其赋值并输出代码如图,就完成了。

以上就是关于C语言编程 二维数组全部的内容,包括:C语言编程 二维数组、C语言二维数组、c语言 二维数组等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9271292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存