以下编程用c#来回答。
输入一个小数,输出每一个小数的从左至右的个位数,并且在小数点位置声明该小数的整数部分和小数部分分别是多少?并且求出你输入的整数部分和小数部分最大的数,并且一并回答是哪个位置的,在小数部分最大的数之前的部分保留,如果小数部分有相同的最大数,从最左边的位置舍弃,并按照四折五入的程序进行运行。
比如,你用Console.Readline输入:290.23491
整数部分:290
个位数:0
十位数:9
百位数:2
位数:3
最大的数:9
位置:百位
小数部分:23491
个分位数:2
十分位数:3
百分位数:4
位数:5
最大的数:9
位置:千分位
舍弃小数部位最大的数后,该小数为:290.235
static void Main(string[] args)
{
Console.WriteLine("请输入整数或浮点数");
string content = Console.ReadLine();
decimal dt = 0;
try
{
var bbts = true;
dt = decimal.Parse(content);
if (dt >100000000)
{
Console.WriteLine("请输入小于1亿的数");
bbts = false;
}
if (bbts)
{
string[] str = new string[] { "个", "十", "百", "千", "万", "十万", "百万", "千万", "亿" };
var bbt = dt.ToString().Split('.');
Console.WriteLine(GetRead(str, bbt));
}
}
catch (Exception ex)
{
Console.WriteLine("输入错误,请输入整数或浮点数");
}
}
public static string GetRead(string[] str, string[] num)
{
string content = "";
for (int i = 0; i < num.Length; i++)
{
content+= i == 0 ? "整数部分:" + num[i] + "\n" : "小数部分:" + num[i]+"\n";
var num2 = num[i].ToCharArray();
var count = 0;
for (int a = 0; a < num2.Length; a++)
{
if (int.Parse(num2[a].ToString()) == OrderByMax(num2))
{
count = a;
}
content += i == 0 ? (str[num2.Length-a-1] + "位:" + num2[a] + "\n") : (str[a]+"分位:" + num2[a] + "\n");
}
content += i == 0 ? "最大数:" + OrderByMax(num2) + "\n" : "最大数:" + OrderByMax(num2) + "\n";
content += i == 0 ? "位置:" + str[num2.Length - count - 1] + "\n" : "位置:" + str[count] + "分位\n";
content += i == 0 ? "" : "舍弃小数部位最大的数后,该小数为" + num[0] + "." + num[1].Split(char.Parse(OrderByMax(num2).ToString()))[0] + "\n";
}
return content;
}
public static int OrderByMax(char[] intArrays)
{
int [] intArray =new int [intArrays.Length] ;
for (int c = 0; c < intArrays.Length; c++)
{
intArray[c] =int.Parse(intArrays[c].ToString());
}
int temp = 0;
for (int i = 0; i < intArray.Length; i++)
{
for (int j = 0; j < intArray.Length - 1 - i; j++)
if (intArray[j] > intArray[j + 1])
{
temp = intArray[j];
intArray[j] = intArray[j + 1];
intArray[j + 1] = temp;
}
}
return intArray[intArray.Length - 1];
}
你这题目描述和实际的输出完全不符,搞不清什么逻辑