各位大大,我是个新手,这个问题我无法表达清楚,所以只能把代码发出来了,请哪位大大帮忙指正一下,多谢了!
我想要实现的是,输入一个控制范围内的整数,例如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?问题可能很笨。。各位别笑话
我想要实现的是,输入一个控制范围内的整数,例如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?问题可能很笨。。各位别笑话
解决方案 »
- 串口类 SerialPort 断开后重新打开的问题?
- 如何运用Microsoft.Office.Core获取ECXEL表格中记录的条数
- 提个问题不容易啊
- 同步调用WEB SERVICE方法
- C#中向Graphics输出String的问题。
- 调用方法从数据中查询DataTable,然后排序合并没问题,可返回到界面却没有排序和合并,这是为什么呢
- C#怎样打开关闭CDROM?
- WPF,访问资源字典为什么报错呢?
- 关于多线程中变量的改变问题
- 类的实例与XML如何实时转换?请高手作答,一定给分!不够再加。
- 声明一个oledbconnect dbconnect1,在代码中dbconnect1.open(),但没有提供.close(),也没有用using
- 字符串赋值
{
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为结果
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));
}
}
}先转化成字符串好操作
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);
}