鱼C论坛

 找回密码
 立即注册
查看: 3132|回复: 4

[已解决]新数组中找出所有的奇数元素并求和

[复制链接]
发表于 2022-3-11 19:23:28 | 显示全部楼层 |阅读模式
5鱼币
int []arr={12,0,45,0,3,0,23,8,45,8};

去除arr数组中的0元素,并生成一个新数组,并在新数组中找出所有的奇数元素并求和
最佳答案
2022-3-11 19:23:29
  1. class Solution {
  2.     public static void sumOddElements(int[] arr){
  3.             List<Integer> newList = new ArrayList<>();
  4.             int sum = 0;
  5.             for(int idx = 0; idx < arr.length; idx++){
  6.                     int num = arr[idx];
  7.                     if(num != 0){
  8.                             if(num % 2 == 1) sum += num;
  9.                             newList.add(num);
  10.                     }
  11.             }
  12.             System.out.println("new list: " + newList);
  13.             System.out.println("sum of odd elements: " + sum);
  14.     }
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 19:23:29 | 显示全部楼层    本楼为最佳答案   
  1. class Solution {
  2.     public static void sumOddElements(int[] arr){
  3.             List<Integer> newList = new ArrayList<>();
  4.             int sum = 0;
  5.             for(int idx = 0; idx < arr.length; idx++){
  6.                     int num = arr[idx];
  7.                     if(num != 0){
  8.                             if(num % 2 == 1) sum += num;
  9.                             newList.add(num);
  10.                     }
  11.             }
  12.             System.out.println("new list: " + newList);
  13.             System.out.println("sum of odd elements: " + sum);
  14.     }
  15. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-11 20:12:54 | 显示全部楼层
import java.util.Scanner;

public class deom1 {
    public static void main(String[]args){
        //接收数组的长度
        int []arr={12,0,45,0,3,0,23,8,45,8};
        int count=0;
        for (int i=0;i<arr.length;i++){
            if (arr[i]!=0){
                count++;
            }
        }
        //创建数组,新数组的长度就是非元素的个数
        int[]newArr =new int[count];
        //把arr数组中的非元素给newArr数组进行赋值
        //给newArr数组声明一个新下标求进行赋值
        int index=0;
        for (int i=0;i<arr.length;i++) {
            if (arr[i] != 0) {
                newArr[index] = arr[i];
                //newArr[i]=arr[i];    ArrayIndexOutOfBoundException :下标越界
                newArr[index] = arr[i];
                /**
                 * index          i
                 * 0              0    12
                 * 1              2    45
                 */
                index++;
            }
        }
          //在newArr数组中找出奇数元素
        //声明一个变量来表示奇数和
                int sum=0;
                for (int i=0;i<newArr.length;i++){
                    if (newArr[i]%2!=0){
                        sum+=newArr[i];
                    }
                }
                System.out.println("当前arr数组中的奇数和为:"+sum);
            }
        }
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 21:23:06 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>
#define length(arr) (sizeof(arr)/sizeof(arr[0]))
int main()
{
        int arr[]= { 12,0,45,0,3,0,23,8,45,8 };
        int len = length(arr);
        for (int i = 0; i < len; i++)
        {
                if (arr[i] == 0)
                {
                        for (int j = i; j < len; j++)
                        {
                                arr[j] = arr[j+1];
                        }
                        len--;
                }
        }
        int num = len;
        int *new_arr;
        new_arr = (int*)malloc(len * sizeof(int));
        int sum = 0;
        printf("新数组为: ");
        for (int i = 0; i < len; i++)
        {       
                new_arr[i] = arr[i];
                if (new_arr[i] % 2 != 0)
                {
                        sum += new_arr[i];
                }
                printf("%d ", new_arr[i]);
        }
        printf("\n奇数和为: %d \n", sum);
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 23:30:56 | 显示全部楼层
  1.         public static int[] deleElement(int arr[], int ele){
  2.                 int newArr[]=new int[arr.length];
  3.                 int j=0, zero=0;
  4.                
  5.                 for(int i=0; i<arr.length; i++){
  6.                         if(arr[i]==ele) {
  7.                                 zero++;
  8.                                 continue;
  9.                         }
  10.                         newArr[j++]=arr[i];
  11.                 }
  12.                                
  13.                 int newLen = newArr.length-zero;
  14.                 int resArr[] = new int[newLen];
  15.                 System.arraycopy(newArr, 0, resArr, 0, newLen);
  16.                
  17.                 return resArr;               
  18.         }
  19.        
  20.         public static int sumOdd(int arr[]) {
  21.                
  22.                 int sum=0;
  23.                 for(int i=0; i<arr.length; i++) {
  24.                         if (arr[i]%2!=0) {
  25.                                 sum+=arr[i];
  26.                         }
  27.                 }
  28.                 return sum;
  29.                
  30.         }
复制代码

  1.                 int arr[]={12,0,45,0,3,0,23,8,45,8};
  2.                 int newArr[] = deleElement(arr, 0);
  3.                 int sum = sumOdd(newArr);
  4.                
  5.                 System.out.println(sum);
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-15 06:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表