A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭小伟 中级黑马   /  2012-12-26 16:26  /  6529 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一个数组里的奇数读出来放到另一个数组里返回,main函数里调用返回的值输出,怎么重新弄一个数组,况且新数组长度不确定

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

9 个回复

倒序浏览
你说的奇数是指数组中的元素,还是个数或者是下标啊?
要指的是个数或者下标的话方法都一样,直接判断赋值(除2取余什么的都行);
要是需要判断里面的元素,就for循环,然后在赋给链表(ListAdd);
这是我的思路,仅供参考

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
  1. int[] number = { 23, 4, 5, 42, 21, 33, 50, 5, 64, 2, 3 }; //定义一个数组
  2. string best = "";
  3. for (int i = 0; i < number.Length; i++)//遍历数组找出奇数
  4. {
  5. if (number[i] % 2 != 0)
  6. {
  7. best = best + number[i] + ",";//将奇数放入best字符变量
  8. }
  9. }
  10. string[] bestArr = best.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);//按','分割best.将结果放入bestArr字符串数组
  11. int[] oddNum = new int[bestArr.Length];//定义存放奇数的数组,长度为bestArr的长度
  12. for (int i = 0; i < oddNum.Length; i++)
  13. {
  14. oddNum[i] = Convert.ToInt32(bestArr[i]);//将bestArr数组中的每个元素转换为INT类型放入定义的奇数数组中
  15. }

  16. foreach (int a in oddNum)//输入结果奇数数组的结果
  17. { Console.WriteLine(a); }
  18. Console.Read();
复制代码
基础学习视频里好像没介绍链表,于是我用的这个办法.

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
我是用集合的方法
1.首先定义一个数组
2.创建一个集合List<int> li =new List<int>();
3.使用foreach遍历集合中的每一个元素
4.在foreach中判断不能被2整除的数添加到集合中li.add();
5.获取集合中元素的个数(这个个数就是接下来定义奇数数组的长度)li.Count();可以获取到
6.根据获取到集合中元素的个数创建奇数数组 oddNumber[]
7.再用for循环把集合中每一个元素的值添加到数组中
for (int i = 0; i < 集合元素个数; i++)
{
    oddNumber[i] = li[i]
}
8.最后再循环打印oddNumber数组就行了

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
不确定的数组,一般用LIST来做
list<int> js=new list<int>();
for(int i=0;i<你的数组.length;i++)
{
if (你的数组%2=0)
js.add(你的数组);
}
return js
返回的是个泛型的数组,这样就可以了

如果你要数组,那么可以把泛型在转换为数组

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
在个数不确定的情况下,个人觉得还是用集合List<T>,方法上面已经讲得很清楚了,因为就算是以后数组有改动,其它代码也可以不动,数组就不行了。当然你一定要个数组,please 使用.ToArry();

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
意思差不多:
  1. #include<stdio.h>
  2. void odds(int *a,int an,int *b,int *bn);
  3. void arrout(int w[],int m);
  4. #define n 10
  5. main()
  6. {
  7.         int a[n]={15,96,54,76,25,64,31,21,35,91};
  8.         int b[n],m=0;
  9.         arrout(a,n);
  10.         odds(a,n,b,&m);   
  11.         arrout(b,m);
  12. }
  13. void arrout(int w[],int m)
  14. {
  15.         for(int i=0;i<m;i++)
  16.                 printf("%4d",w[i]);
  17.        printf("\n");
  18. }
  19. void odds(int *a,int an,int *b,int *bn)
  20. {
  21.         int i,j;
  22.         for(j=0,i=0;i<n;i++)
  23.                  if(a[i]%2!=0)
  24.                  {
  25.                         b[j]=a[i];
  26.                          j++;
  27.                 }
  28.         *bn=j;
  29. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
ykrh 中级黑马 2013-1-14 23:42:09
8#
class Program
    {
        //将int数组中的奇数放到一个新的int数组中返回
        static void Main(string[] args)
        {
            //定义一个整型数组
            int[] numArr = { 23,14,22,57,43,86,69,34};
            //定义一个整数泛型
            List<int> numlist=new List<int>();
            for (int i = 0; i < numArr.Length; i++)
            {
                //判断是否为奇数,是则添加到整数泛型中
                if (numArr[i] % 2 == 1)
                {
                    numlist.Add(numArr[i]);
                }
            }
            //将泛型转换为整型数组
            int[] newArr = numlist.ToArray<int>();
            //遍历输出
            for (int i = 0; i < newArr.Length; i++)
            {
                Console.WriteLine(newArr[i]);
            }
            Console.ReadKey();
        }
    }
回复 使用道具 举报
这里的奇数是指数组中的元素,还是个数或者是下标呢
如果指的是个数或者下标方法都一样,直接判断然后赋值
需要判断里面的元素的话,用for,然后在赋给链表

评分

参与人数 1技术分 +6 收起 理由
张文 + 6

查看全部评分

回复 使用道具 举报
这里的奇数是指数组中的元素,还是个数或者是下标呢
如果指的是个数或者下标方法都一样,直接判断然后赋值
需要判断里面的元素的话,用for,然后在赋给链表
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马