为一个4行4列的二维数组输入整数,分别输出值为奇数、偶数的元素之和

为一个4行4列的二维数组输入整数,分别输出值为奇数、偶数的元素之和

#include <stdio.h>

int main() {
    int array[4][4];
    int i, j;
    int sum_even = 0;
    int sum_odd = 0;

    // 输入数组元素
    printf("请输入4行4列的整数数组:\n");
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            scanf("%d", &array[i][j]);
        }
    }

    // 计算奇数和偶数元素的和
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            if (array[i][j] % 2 == 0) {
                sum_even += array[i][j];
            } else {
                sum_odd += array[i][j];
            }
        }
    }

    // 输出结果
    printf("奇数元素的和为:%d\n", sum_odd);
    printf("偶数元素的和为:%d\n", sum_even);

    return 0;
}

运行效果如下:
请输入4行4列的整数数组:
1 2 3 4
5 6 7 8
1 2 3 4
5 6 7 8
奇数元素的和为:32
偶数元素的和为:40

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7456784
  • 你也可以参考下这篇文章:创建二维数组并求不靠边元素及对角线元素之和
  • 除此之外, 这篇博客: 冒泡排序、选择和插入排序、二分法查找中的 选择排序 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    这是最近看到的一种排序方法,我觉得有必要了解下原理。

    public static void selectSort(int [] arr){
            int length = arr.length;
            for(int i=0;i<length - 1; i++){
                int min = i;
                for(int j=i+1; j<length; j++){
                    if(arr[min] > arr[j]){
    // 当前最小的数a[min]如果大于arr[j],就换位置并且将最小数变为arr[j]
                        min = j;
                    }
                }
                printArray(arr);
                if(min != i){
                    swap(arr,i,min);// 换位置
                }
            }
        }

    还是在main方法里面执行

    int ff []={2,5,2,4,7,3,1};
    selectSort(ff);

    执行过程:

    //  这是升序排序
    //         2,5,2,4,7,3,1  原始数据   
    
    // 第一次循环 最小值为原始数据第一位数2,从第一位开始比较
    //2>1(第一位后最小值)  所以就第一个2与最后的1换位置,最小值变为1,其他不变
    1 5 2 4 7 3 2  
    // 第二次循环 最小值为上排序第一位数1,从第二位开始比较
    //5>2  所以5与2换位置,最小值变为2,其他不变
    1 2 5 4 7 3 2 
    // 第三次循环 最小值为上排序第二位数2,从第三位开始比较
    //5>2  所以5与2换位置,最小值变为2,其他不变
    1 2 2 4 7 3 5 
    // 第四次循环 最小值为上排序第三位数2,从第四位开始比较
    //4>3  所以4与3换位置,最小值变为3,其他不变
    1 2 2 3 7 4 5 
    //  依次。。
    1 2 2 3 4 7 5 
    
    1 2 2 3 4 5 7 

    选择排序的过程就是上面情况,看出原理了么!

  • 您还可以看一下 张长志老师的大白话学懂机器学习与推荐系统实战课程中的 016_机器学习模型和算法_线性回归(下)小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以给出解决问题的具体步骤:

    1.定义一个4行4列的二维数组,int Array[4][4],并赋初值为0。

    2.使用for循环读取用户输入的整数,并将其放入数组中。

    3.使用for循环遍历数组,判断每个元素的奇偶性,将奇数和偶数的元素之和分别累加。

    4.输出奇数和偶数的元素之和。

    以下是代码实现:

    #include <stdio.h>
    
    int main() {
        int Array[4][4] = {0}; // 定义4行4列的二维数组并赋初值为0
        int oddSum = 0, evenSum = 0; // 奇数和偶数的元素之和
    
        // 读取用户输入的整数,并将其放入数组中
        printf("请输入16个整数,以空格或回车分隔:\n");
        for(int i=0; i<4; i++) {
            for(int j=0; j<4; j++) {
                scanf("%d", &Array[i][j]); // 读取整数
            }
        }
    
        // 遍历数组,计算奇数和偶数的元素之和
        for(int i=0; i<4; i++) {
            for(int j=0; j<4; j++) {
                if(Array[i][j] % 2 == 0) { // 如果元素为偶数
                    evenSum += Array[i][j]; // 累加到偶数的元素之和中
                }
                else { // 如果元素为奇数
                    oddSum += Array[i][j]; // 累加到奇数的元素之和中
                }
            }
        }
    
        // 输出奇数和偶数的元素之和
        printf("奇数的元素之和为:%d\n", oddSum);
        printf("偶数的元素之和为:%d\n", evenSum);
    
        return 0;
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^