zzk5015377 发表于 2022-1-24 15:38:41

二维数组问题 没思路呀

9、编程题:编写函数fun,将二维数组下半三角元素值(不含对角线)加4,上半三角(不含对角线)元素值*2。sample9.c
#define N 4
void fun(int a[])
{

}
void main()
{
int a[]={{-2,0,-1,3},{3,-2,0,-1},{0,-1,2,5},{5,0,0,-2}};
int i,j;
fun(a);
for(i=0;i<4;i++)
{
    for(j=0;j<4;j++)
      printf("%d ",a);
    printf("\n");
}   
}

basketmn 发表于 2022-1-24 16:03:25

本帖最后由 basketmn 于 2022-1-24 16:23 编辑

#include<stdio.h>
#define N 4
void fun(int a[])
{
        int i,j;
        for(i=0;i<3;i++)
                for(j=0;j<3-i;j++)a*=2;
        for(i=1;i<4;i++)
                for(j=4-i;j<4;j++)a+=4;
}
int main()
{
int a[]={{-2,0,-1,3},{3,-2,0,-1},{0,-1,2,5},{5,0,0,-2}};
int i,j;
fun(a);
for(i=0;i<4;i++)
{
    for(j=0;j<4;j++)
      printf("%d ",a);
    printf("\n");
}   
}
好长时间不研究对角线了,把主对角线搞错了,搞成从右至左了!!!
代码仅供参考

傻眼貓咪 发表于 2022-1-24 16:15:15

#include <stdio.h>
#define N 4

void fun(int arr[]){
   
    for(int i = 0; i < N; i++)
    for(int j = i + 1; j < N; j++)
    arr *= 2;
   
    for(int i = N-1; i >= 0; i--)
    for(int j = 0; j < i; j++)
    arr += 4;
}

int main()
{
    int arr[] = {
      {-2, 0,-1, 3},
      { 3,-2, 0,-1},
      { 0,-1, 2, 5},
      { 5, 0, 0,-2}
    };
   
    fun(arr);
   
    for(int i = 0; i < N; i++){
      for(int j = 0; j < N; j++) printf("%2d ", arr);
      printf("\n");
    }

    return 0;
}-20 -26
7 -20 -2
432 10
944 -2

zzk5015377 发表于 2022-1-24 19:21:50

basketmn 发表于 2022-1-24 16:03
好长时间不研究对角线了,把主对角线搞错了,搞成从右至左了!!!
代码仅供参考

好的~谢谢

zzk5015377 发表于 2022-1-24 19:22:22

傻眼貓咪 发表于 2022-1-24 16:15


好的~谢谢
页: [1]
查看完整版本: 二维数组问题 没思路呀