一:编写程序,将一个键盘出输入的正整数中的奇,偶数分别找出来,组成两个最大的数,一个由正整数的各位奇数组成,一个数由正整数的个位偶数组成。例如:839261克组成两个最大的数为931和862。二:编写程序,用一张100元钞票换成面值分别为20元,10元,5元,1元的四种钞票共10张,每种钞票至少一张,输出有哪几种可能的兑换方案?每种面值的钞各多少张?望高手能给我答案,谢谢!
要用c#来编啊!

解决方案 »

  1.   

    第一个,冒泡+判断奇偶数
    第二个  int i,j,p,q;
    int count=0;
    for(i=1;i<=4;i++)
    {   
        for(j=1;j<=7;j++)
        {
            for(p=1;p<=13;p++)
            {
                for(q=1;q<=65;q++)
                {
                    if(20*i+10*j+5*p+1*q==100)
                    {
                       count++;
                       Console.Writeline("20有{0},10有{1},5有{2},1有{3}",i,j,p,q);
                       Console.writeline("总共有{0}",count);
                    }
                }
            }
        }    
    }这方法挺烦的,等高人有更简单的……
      

  2.   

    呃,小改下
                
                int i,j,p,q;
                int count=0;
                for(i=1;i<=4;i++)
                {   
                    for(j=1;j<=7;j++)
                    {
                        for(p=1;p<=13;p++)
                        {
                            for(q=1;q<=65;q++)
                            {
                                if(20*i+10*j+5*p+1*q==100)
                                {
                                   count++;
                                   Console.WriteLine("20有{0},10有{1},5有{2},1有{3}", i, j, p, q);
                                }
                            }
                        }
                    }    
                }
                Console.WriteLine("总共有{0}", count);
                Console.ReadLine();
      

  3.   

    这位老兄啊,你这方法执行起来速度该多低啊
    4个for循环,你想卡死啊
      

  4.   

    第二题有答案了
    给第一题一个
    static void Main(string[] args)
            {
                Console.WriteLine("请输入一组数据,并回车确认:");
                string strData = Console.ReadLine();            List<int> lodd = new List<int>();
                List<int> leven = new List<int>();
                foreach (char c in strData)
                {
                    if (char.IsDigit(c))
                    {
                        int n =c-48;
                        if (n % 2 == 1)
                        {
                            lodd.Add(n);
                        }
                        else
                        {
                            leven.Add(n);
                        }
                    }
                }
                lodd.Sort();
                leven.Sort();            int odd = 0;
                int even = 0;
                for (int i = 0; i < lodd.Count; i++)
                {
                    odd += lodd[i] *(int) Math.Pow( 10 , i);
                }
                for (int i = 0; i < leven.Count; i++)
                {
                    even += leven[i] * (int)Math.Pow(10, i);
                }            Console.WriteLine("最大奇数是{0},最大偶数是{1}", odd, even);
                Console.ReadLine();            
            }
      

  5.   

    说思路不上代码了
    1.把取得的数分割转换,放入list<int> list
    2.排序.sort()
    3.遍历list
    if(list/2==0)
    os+=list.tostring();
    else
    js+=list.tostring();os,与JS转换为int
      

  6.   


    有个条件你是不是忽略了,就是i+j+p+q=10
      

  7.   

    20*i+10*j+5*p+q=100
    i+j+p+q=10由此可知q一定能被5整除,进一步推出q只能是0,5
    所以q的循环可以精简掉,i,j,p不可能超过10
     
      

  8.   


    每种至少一张,可见q只能是5了
    20*i+10*j+5*p=95
    i+j+p=5
    ->
    4*j+2*j+p=19
    i+j+p=5
    ->
    3*i+j=14
    i+j<5
    ->
    无解,哈哈
      

  9.   

    这是第一题的,我用linq写的static void fun()
            {
                string i = Console.ReadLine();            var intEven =  from a in i orderby a descending where a % 2 == 0 select a;
                var intOdd = from a in i orderby a descending where a % 2 != 0 select a;            StringBuilder strEven = new StringBuilder();
                foreach (var ss in intEven)
                {
                    strEven.Append(ss);
                }
                Console.WriteLine(strEven);
                StringBuilder strOdd = new StringBuilder();
                foreach (var ss in intOdd)
                {
                    strOdd.Append(ss);
                }
                Console.WriteLine(strOdd);        }