各位大大,我是个新手,这个问题我无法表达清楚,所以只能把代码发出来了,请哪位大大帮忙指正一下,多谢了!
我想要实现的是,输入一个控制范围内的整数,例如2025,输出x=20,y=25
1 由于只能在偶位整数上计算,所有需要判断位数,若为奇数位例如123,则发出警告无法通过
2 若算出a数为K位,则用a/10的(k/2)次获得小数点在中间的数,例如
       输入2025,算出该数是4位数,则2025/10^(4/2) = 20.25
3 然后将20.25分开,.左边的赋值给x,右边的赋值给y下面是部分代码,大大们看一下,唉,非常幼稚的代码,希望大大们别笑话 努力学习!
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;namespace _025
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("输入一个数:");   
            int a = int.Parse(Console.ReadLine());
            Ck(a);     
        }
        static void Ck(int v)
        {
            ArrayList num = new ArrayList(); //定义动态数组用来保存20.25
            int a = v;
            for (int i = 0; ; i++)
            {
                int k = a / (int)Math.Pow(10, i);  // 10的i次
                //Console.WriteLine(k); // 检查k的值
                if (k < 10)
                {
                    if ((i + 1) % 2 == 0)
                    {
                        Console.WriteLine("{0}是{1}位数!", v, i + 1);
                        Console.WriteLine(v / Math.Pow(10, (i+1) / 2)); // 2025 / 100 = 20.25
                        num.Add(v / Math.Pow(10, (i+1) / 2));
                        //Console.WriteLine(num[0]);//检查动态数组中数据是否正确
                    }
                else
                Console.WriteLine("{0}是奇位数,请输入偶位数!", v);
                break;
                }
                
                Console.WriteLine("动态数组中有{0}条数据:{1}", num.Count, num[0]);
                /*
                OOXX OOXX OOXX OOXX OOXX OOXX OOXX 华丽的分界线 OOXX OOXX OOXX OOXX OOXX OOXX
                 */
               
            } 
            
            Console.WriteLine("动态数组中有{0}条数据:{1}",num.Count,num[0]);
            double[] Array = new double[num.Count]; //定义一个普通数组
            num.CopyTo(Array);  //将动态数组num中的数据 转移给 普通数组 array ,为了将object类型转换成string类型
            Console.WriteLine("新数组中有{0}条数据:{1}",Array.Length,Array[0]); //检查新数组中数据是否正确转移
             
        }
    }
}由于输入的整数是未知位,即可能2位,4位,6位(int类型有范围暂不考虑哈),所以20.25也有可能是201.325,于是我特地用动态数组来保存他们。后来由于动态数组中的数据是Object类型的,于是又拷贝到double数组中。
问题来了~~
NO.1  动态数组num在if语句内就已经自增,但是为什么无法再for循环内查看它?实例:Console.WriteLine("动态数组中有{0}条数据:{1}",num.Count,num[0]);这条语句无法在华丽的分界线中执行。难道是因为num是定义在for循环外面的?求解~
NO.2  要将20.25分割成20和25,如何实现?Substring只能在string类型的数据中使用,Split?问题可能很笨。。各位别笑话

解决方案 »

  1.   

    try
    {
    int num = Convert.ToInt32(textBox1.Text);
    int k = 0;
    int temp = num;
    while (temp > 0)
    {
    temp = temp / 10;
    k++;
    }
    if (k % 2 == 1)
    {
    this.Text = "k为奇数";
    }
    else if (k == 0)
    {
    this.Text = "num小于等于0";
    }
    else
    {
    int a, b;
    a = num / (int)Math.Pow(10,k/2);
    b = num % (int)Math.Pow(10, k / 2);
    this.Text = a.ToString() + "," + b.ToString();
    }
    }
    catch (Exception E)
    { }
    没怎么看你哪错的  直接写了个  已测
    需要稍改  成命令行的
    K为位数  a b为结果
      

  2.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Collections;
    namespace _025
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Write("输入一个数:");
                int a = int.Parse(Console.ReadLine());
                string m_str = a.ToString();            int i = m_str.Length;
                if (i % 2 != 0)
                {
                    Console.WriteLine("{0}是奇位数,请输入偶位数!", m_str);
                    return;
                }            int x = Convert.ToInt32(m_str.Substring(0, i / 2));
                int y = Convert.ToInt32(m_str.Substring(i / 2, i / 2));
            }
            
        }
    }先转化成字符串好操作
      

  3.   


            static void Main(string[] args)
            {
                Console.Write("输入一个数:");
                Ck(Console.ReadLine());
            }        private static void Ck(string input)
            {
                int n = 0;
                if (!int.TryParse(input, out n))
                {
                    Console.Write("请输入整数:");
                    Ck(Console.ReadLine());
                    return;
                }
                int length = n.ToString().Length;
                if (length % 2 != 0)
                {
                    Console.Write("请输入偶位数:");
                    Ck(Console.ReadLine());
                    return;
                }
                double result = (double)(n / Math.Pow(10, length / 2));
                int x = int.Parse(result.ToString().Split('.')[0]);
                int y = int.Parse(result.ToString().Split('.')[1]);
                Console.WriteLine("x={0},y={1}", x, y);
            }