PTA ”写出这个数“

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp5
{
    class Program
    {
         int Main(string[] args)
        {
            //定义一个较大的数组接受输入的数字
            Char[] ch = new char[100];
            string str;
            int sum = 0;
            //定义一个数组用来存放输入数字各位相加后的数字的各个位的数字
            int[] sum0 = new int[999];
            int i = 0;
            //a后面用来记录 i的值
            int a = 0;
            //接受输入的数字并转化为数组存入ch[]中
            str = Console.ReadLine();
            ch = str.ToCharArray();
            //将对应的拼音存入string类型数组中
            string[] str1 = new string[10] {"yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu", "shi"};
            //输入字符串末尾自动会添加一个'\0',所以以此作为判断结束的标志
            for (i = 0; str[i] != '\0'; i++)
            {

                sum += str[i] - '0';
                //不加上这一步最后一次循坏后i+1然后进入判定str[i]索引越界
                //所有在最后一部的时候提前break不让i再加1
                if (i == str.Length - 1)
                {
                    break;
                }
            }
            //将i初始化
            i = 0;
            //将输入数字各位加起来的数字再求其各个位的数字
            //注意这是倒序存放在sum0[]数组中
            while (sum != 0)
            {
                sum0[i] = sum % 10;
                sum = sum / 10;
                i++;
            }
            //最后一步操作i自增1,数组中从下标0开始,所有i要减去1
            //比如一个sum是123,有3个位,i为3也就是3次循环但是数组0,1,2就够了
            i--;
            //记录i的值在下面从i开始输出,因为在sum数组中是倒序记录的
            a = i;
            for (int j = 0; j <= a; j++, i--)
            {
                //str1数组下标从0开始所以(sum0[i]) - 1]
                Console.Write(str1[(sum0[i]) - 1]);
                //最后一个数不带" "
                if (j != a)
                {
                    Console.Write(" ");
                }
            }
            return 0;

        }
     }
}

猜你喜欢

转载自www.cnblogs.com/jcahsy/p/11961727.html