黑马程序员技术交流社区

标题: 二维数组的问题 [打印本页]

作者: wangtianqi    时间: 2016-8-24 20:16
标题: 二维数组的问题
        定义一个3行3列的二维int数组,从控制台输入前三个元素的值,要求第一行的元素是1,3,5.剩下的元素分别是该元素所在这一列的正上方的元素的3倍.打印这个二维数组从左上角到右下角这条对角线上元素的和。这个题怎么做  谢谢;{:2_30:}
作者: wjk930726    时间: 2016-8-24 20:27
本帖最后由 wjk930726 于 2016-8-24 21:10 编辑

int arr[3][3] = {{1,3,5},0,0};
for(int i =1; i<=2; ++i)
        for(int j = 0; j < 3; ++j)
                arr[j] = arr[i-1][j] * 3;
for(int i = 0; I < 3; ++i)
        printf("%d",arr);
作者: hbpiaoyi    时间: 2016-8-24 21:38
本帖最后由 hbpiaoyi 于 2016-8-24 21:44 编辑

int a[3][3] = {1, 3, 5}, sum =0;
for (int i=1; i<3; i++)
      for (int j=0; j<3; j++)
            a[j] = a[i-1][j] * 3;
for (int i=0; i<3; i++)
      sum += a;
printf("%d", sum);


作者: 赵延达    时间: 2016-8-24 23:18
不错不错,学习了
作者: 1358840521    时间: 2016-8-25 00:30
来来,凑个热闹
#include <stdio.h>

int main()
{
    //声明1个int类型3行3列的二维数组,第一行元素是1,3,5
    int arr[3][3] = {1,3,5};
    //实现剩下的元素分别是该元素所在这一列的正上方的元素的3倍
    for(int i = 1;i < 3;i++)
    {
        for(int j = 0;j < 3;j++)
        {
            arr[i][j] = 3 * arr[i-1][j];
        }
    }
    //声明和并赋初值0
    int sum = 0;
    //遍历这个二维数组
    for(int k = 0;k < 3;k++)
    {
        for(int h = 0;h < 3;h++)
        {
            printf("%d\t",arr[k][h]);
            if(k == h)
            {
                sum += arr[k][h];
            }
        }
        printf("\n");
    }
    printf("和为%d\n",sum);
    return 0;
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2