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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xt654005440 中级黑马   /  2013-7-27 10:14  /  2036 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 xt654005440 于 2013-7-27 15:35 编辑

//题目——将int数组中的奇数放到一个新的int数组中返回
            int[] arr = { 1,3,4,7,8,10,11,13,17,18,19,21,23};
            ArrayList list = new ArrayList();
            //判定数组中的奇数偶数
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr % 2 == 0)
                    continue;
                else
                    list.Add(arr);
            }
            Console.WriteLine("所得的奇数数组为:\n");
            //遍历所有的奇数
            foreach(int a in list)
            {
                Console.WriteLine(a+" ");

            }
            Console.ReadKey();

初看C#书籍然后做了这道测试题,这其中我首先定义了一个已知的数组,然后使用集合的方法将数组中的元素逐一判定并且用Add方法加入到集合中;
但是做完后,我对这的解决方式还是不满意啊。其一,最初我是想为什么我就一定的线定义一个已知的数组呢,而我想要输入数的时候随机输入如何实现
其二,对于使用集合有点无奈,其实开始是想也用数组着个数据类型却没有成,那么使用数组该怎么做呢。请有经验的马友教教我。

评分

参与人数 1技术分 +1 收起 理由
zhangcheng5468 + 1 赞一个!

查看全部评分

7 个回复

正序浏览
本帖最后由 gb2312_8 于 2013-7-29 11:26 编辑

上面都解决了lz提的第二个问题,第一个问题我认为ilz是想自己输入一个数组,,我把第一问给写出来了:这样虽然有点走弯路了,但是实现功能了
  1. class Program
  2.     {
  3.         //将int数组中的奇数放到一个新的int数组中返回
  4.         static void Main(string[] args)
  5.         {
  6.             List<int> list = new List<int>();//定义泛型接收用户输入的数(数组的长度不固定,选用泛型接收)
  7.             int s = 0;
  8.             do
  9.             {
  10.                 Console.WriteLine("请输入一个数字:(输q结束)");
  11.                 string str = Console.ReadLine();
  12.                 if (str == "q")
  13.                 {
  14.                     if (s == 0)
  15.                     {
  16.                         Console.WriteLine("请至少输入一个数字,然后按q结束:");
  17.                         continue;
  18.                     }
  19.                     else
  20.                     {
  21.                         break;
  22.                     }
  23.                 }
  24.                 if (int.TryParse(str, out s))
  25.                 {
  26.                     list.Add(s);
  27.                 }
  28.                 else
  29.                 {
  30.                     Console.WriteLine("你输入的数字有误");
  31.                     continue;
  32.                 }
  33.             } while (true);
  34.             //题目让用数组,定义数组然后循环赋值
  35.             int[] shuZu = new int[list.Count()];
  36.             for (int i = 0; i < list.Count(); i++)
  37.             {
  38.                 shuZu[i] = list[i];
  39.             }
  40.             //判断数组中奇数个数,定义奇数数组
  41.             int j = 0;
  42.             for (int i = 0; i < shuZu.Length; i++)
  43.             {
  44.                 if (shuZu[i] % 2 != 0)
  45.                 {
  46.                     j++;
  47.                 }
  48.             }
  49.             int[] jishuShuzu = new int[j];//定义奇数数组
  50.             j = 0;
  51.             for (int i = 0; i < shuZu.Length; i++)//给奇数数组赋值
  52.             {
  53.                 if (shuZu[i] % 2 != 0)
  54.                 {
  55.                     jishuShuzu[j++] = shuZu[i];
  56.                 }
  57.             }

  58.             foreach (int item in jishuShuzu)//循环打印输出
  59.             {
  60.                 Console.WriteLine(item);
  61.             }
  62.             Console.ReadKey();
  63.         }
  64.     }
复制代码
回复 使用道具 举报
孔健 中级黑马 2013-7-27 22:38:14
7#
我的基础测试里刚做完这道题。我的做法可能稍微有些麻烦,不过也一块贴上来吧,共同学习嘛。
有不合理的地方请大家指出,谢谢!
namespace test6
{
    class Program
    {   // 将int数组中的奇数放到一个新的int数组中返回。
        static void Main(string[] args)
        {   
            int[] num = { 1, 36, 17, 8, 29, 46, 23, 101, 88, 66 };//定义一个int类型数组并初始化
            //由于新数组的长度可能不是确定的,普通数组的长度不能动态增减而ArrayList可以动态改变数组的长度,所以选用可变长数组ArrayList来暂时存放奇数
            ArrayList js = new ArrayList();
            
            for (int i = 0;i < num.Length;i++)//遍历num数组中的每一个元素
            {
                if (num[i] % 2 == 1)//判断某个数是否是奇数
                {
                    js.Add(num[i]);//如果某个数是奇数就使用ArrayList的Add方法将该数添加到ArrayList对象中
                }
            }

            //使用ArrayList.ToArray()方法将ArrayList强制转换成一个新的int型数组(因为题目要求放到一个新的int数组中嘛)
            int[] jishu = (int[])js.ToArray(typeof(int));

            Console.WriteLine("数组中的奇数有:");
            for (int i = 0; i < jishu.Length; i++)//遍历jishu数组
            {
                Console.Write(js+" ");//打印数组中的每一个元素,元素之间用空格隔开
            }

            Console.ReadKey();
        }
    }
}
回复 使用道具 举报
也可以用构造方法实现 不过这道题没有给数组长度,还是要自己定义
回复 使用道具 举报
呵呵,感谢以上朋友,你们的方法我都试验过了,又有新的收获!
回复 使用道具 举报
            //将int数组中的奇数放到一个新的int数组中返回
            int[] arr = { 1, 3, 4, 7, 8, 10, 11, 13, 17, 18, 19, 21, 23 };
            int j = 0;//判断新数组长度的变量
            //首先判断奇数数组的长度
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] % 2 != 0)
                {
                    j++;
                }
            }
            int []number=new int[j];//定义一个新的数组
            j = 0;
            //将符合条件的变量插入到新的数组中
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] % 2 != 0)
                {
                    number[j]=arr[i];
                    j++;
                }
            }
            //打印出新的数组
            for (int i = 0; i< number.Length; i++)
            {
                Console.WriteLine(number[i]);
            }
            Console.ReadKey();
我觉得这道题首先要考虑的是新数组的长度,然后往新数组中插入符合条件的值。
回复 使用道具 举报
楼上好强,注释写得非常好,{:soso_e179:}
回复 使用道具 举报
  1. static void Main(string[] args)
  2.         {
  3.             int[] Num = new int[10];          //定义随机数组
  4.             int[] oddNum = new int[10];       //定义奇数数组

  5.             Console.WriteLine("随机数组:");
  6.             Random random = new Random();      //利用随机数给数组赋值
  7.             for (int i = 0; i < Num.Length; i++)
  8.             {
  9.                 Num[i] = random.Next(1, 100);
  10.                 Console.Write(Num[i] + "\t");   //输出随机数组
  11.             }

  12.             int j=0;        //奇数数组的下标
  13.             for (int i = 0; i < Num.Length; i++)
  14.             {
  15.                 if (Num[i] % 2 == 0)       //如果是偶数,就不执行后面的代码
  16.                 {
  17.                     continue;
  18.                 }
  19.                 oddNum[j] = Num[i];    //将奇数存入奇数数组中,注意这里一定不要用oddNum[i]=Num[i];
  20.                 j++;
  21.             }

  22.             Console.WriteLine("奇数数组:");
  23.             for (int i = 0; i < oddNum.Length; i++)     //输出奇数数组的值
  24.             {               
  25.                 if (oddNum[i] != 0)  //这里要做一个限制,如果奇数数组里面的值有0,说明这个数组里面的奇数已经输出完毕
  26.                 {
  27.                     Console.Write(oddNum[i] + "\t");
  28.                 }               
  29.             }

  30.             Console.ReadKey();

  31.         }
复制代码
随机数组里面可能会有相同的值,加个条件判断就OK了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马