nyyybccxbdxx 2022-12-01 17:15 采纳率: 33.3%
浏览 34

不知道怎么做?没思路。

以下编程用c#来回答。
输入一个小数,输出每一个小数的从左至右的个位数,并且在小数点位置声明该小数的整数部分和小数部分分别是多少?并且求出你输入的整数部分和小数部分最大的数,并且一并回答是哪个位置的,在小数部分最大的数之前的部分保留,如果小数部分有相同的最大数,从最左边的位置舍弃,并按照四折五入的程序进行运行。
比如,你用Console.Readline输入:290.23491
整数部分:290
个位数:0
十位数:9
百位数:2

位数:3
最大的数:9
位置:百位
小数部分:23491
个分位数:2
十分位数:3
百分位数:4

位数:5
最大的数:9
位置:千分位
舍弃小数部位最大的数后,该小数为:290.235

  • 写回答

2条回答 默认 最新

  • LighT.InEyE 2022-12-02 13:34
    关注

    img

    
     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];
            }
    
    评论

报告相同问题?

问题事件

  • 修改了问题 12月1日
  • 修改了问题 12月1日
  • 修改了问题 12月1日
  • 创建了问题 12月1日

悬赏问题

  • ¥15 VB6可以成功读取的文件,用C#读不了
  • ¥15 如何使用micpyhon解析Modbus RTU返回指定站号的湿度值,并确保正确?
  • ¥15 C++ 句柄后台鼠标拖动如何实现
  • ¥15 有人会SIRIUS 5.8.0这个软件吗
  • ¥30 comsol仿真等离激元
  • ¥15 静电纺丝煅烧后如何得到柔性纤维
  • ¥15 (标签-react native|关键词-镜像源)
  • ¥100 照片生成3D人脸视频
  • ¥15 伪装视频时长问题修改MP4的时长问题,
  • ¥15 JETSON NANO