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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

昨天在做入学测试的时候,我采用的方式是,三个for循环嵌套,然后再做下判断。我认为这种方式很容易理解,不知道各位前辈除了用for循环的这种方式外,还有其他方法吗?

9 个回复

正序浏览
//1、2、3、4这个四个数能组成多少个不同的三位数
     static void Main(string[] args)
        {

            //1、2、3、4这个四个数能组成多少个不同的三位数
            int a = 0;//接收百位上的数
            int b = 0;//接收十位上的数
            int c = 0;//接收个位上的数


            for (int i = 1; i <= 4; i++)//遍历百位上的数
            {
                a = i;
                for (int j = 1; j <= 4; j++)//遍历十位上的数
                {
                    if (i == j)//阻止百位与十位相同,
                    {
                        continue;
                    }
                    b=j;
                    for (int k = 1; k <= 4; k++)//遍历个位上的数
                    {
                        if (i == k || j == k)//阻止百位与个位相同,和十位与个位相同
                        {
                            continue;
                        }
                        c=k;
                        Console.WriteLine("{0}{1}{2}",a,b,c);
                    }
                  
                }
               
            }
            
            Console.ReadKey();
        }

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
class Program
    {
        static void Main(string[] args)
        {
            int i, j, k;
            for (i = 1; i < 5; i++)
            {
                for (j = 1; j < 5; j++)
                {
                    for (k = 1; k < 5; k++)
                    {
                        if (i != j && i != k && j != k)
                        {
                            Console.WriteLine(i.ToString() + j.ToString() + k.ToString());
                           
                        }
                        
                    }
                }
            }
            Console.ReadKey();
        }
    }
回复 使用道具 举报
小天 中级黑马 2013-8-28 10:51:20
8#
心动行动 发表于 2013-8-27 23:44
你看下我的好不好理解

值得学习
回复 使用道具 举报
你看下我的好不好理解
回复 使用道具 举报
研究了一下,这样可以
int[] nums = { 1, 2, 3, 4 };
            List<int> list = new List<int>();
            for (int i = 100; i < 1000; i++)//三位数 100到999
            {
                int ge = i % 10;
                int shi = i % 100 / 10;
                int bai = i / 100;
                //如果个十百位等不相等并且都在1到4的范围内,添加到集合
                if (ge != shi && ge != bai && shi != bai&&ge>=1&&shi>=1&&bai>=1&&ge<=4&&shi<=4&&bai<=4)
                {
                    list.Add(i);
                }
            }
            for (int i = 0; i < list.Count; i++)
            {
                Console.Write(list[i]+" ");
            }
            Console.ReadKey();

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
我感觉for循环更简单一些
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace test6
  6. {
  7.     class Program
  8.     {
  9.         public static int[] yue = new int[13];
  10.         static void Main(string[] args)
  11.         {
  12.             //1、2、3、4这个四个数能组成多少个不同的三位数
  13.             int[] nums = { 1, 2, 3, 4 };
  14.             for (int i = 0; i < nums.Length; i++)
  15.             {
  16.                 for (int j = 0; j < nums.Length; j++)
  17.                 {
  18.                     if (nums[i] == nums[j])
  19.                     {
  20.                         continue;
  21.                     }
  22.                     for (int m = 0; m < nums.Length; m++)
  23.                     {
  24.                         if (nums[i] == nums[m]||nums[j]==nums[m])
  25.                         {
  26.                             continue;
  27.                         }
  28.                         Console.WriteLine(nums[i] + "" + nums[j]+""+nums[m]);
  29.                     }
  30.                 }
  31.             }
  32.                 Console.ReadKey();
  33.         }
  34.     }
  35. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
赵宗荣 + 1

查看全部评分

回复 使用道具 举报
好吧,还是要谢谢你,这种方法应该是最普遍的吧!!
回复 使用道具 举报
三重for循环,暂时没有想到其他的。
回复 使用道具 举报
三重for循环,暂时没有想到其他的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马