PAT (Basic Level) 1002 写出这个数 (20 分)
发布日期:2021-05-04 01:05:19 浏览次数:31 分类:技术文章

本文共 1606 字,大约阅读时间需要 5 分钟。

1.题目描述

读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。
输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。

输入样例: 1234567890987654321123456789

输出样例: yi san wu

2.思路解析

  1. 首先用户键入的整数会以字符串的形式保存;
  2. 遍历字符串,让各个位置上的元素相加,此处注意用下标访问字符串元素返回值为char,所以相加时要让元素先减去 ‘0’,最后将得到的结果转为string类型;
  3. 将“ling”~“jiu“保存到一维数组中,结果字符串中的各元素,即为其汉语拼音在数组中的下标。

3.代码

public static string WriteNum1(string str)        {
string s = ""; int sum = 0; // 求出各位之和 for (int i = 0; i < str.Length; i++) {
sum += (str[i] - '0'); } string[] PinYin = {
"ling", "yi","er","san","si","wu","liu","qi","ba","jiu" }; #region 方法1:求出每一位数字 // list集合用于存放和的每一位数字 //List
list = new List
(); //while (sum != 0) //{
// list.Add(sum % 10); // sum /= 10; //} //for (int i = list.Count -1 ; i > 0 ; i--) //{
// s += PinYin[list[i]]+" "; //} //s += PinYin[list[0]]; #endregion #region 方法2:将和直接转为字符串,遍历各个元素 str = sum.ToString(); for (int i = 0; i < str.Length - 1; i++) {
s += PinYin[str[i] - '0'] + " "; } s += PinYin[str[str.Length - 1] - '0']; #endregion return s; }

4. 总结

对于求一个整数的各个位置上数字的两种思路:

  • 用%/来求,将结果保存在数组中;
  • 也可以直接将其转换成字符串,字符串相当于一个只读char数组,又因为char和int可以隐式转换,所以用字符串数组中的元素减去‘0’即为其元素值

对于与整数存在一一对应的关系,可以将其用数组存储起来利用下标进行访问;也可以采用流程控制语句进行判断。

转载地址:https://blog.csdn.net/weixin_45027619/article/details/116149052 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:算法题收获汇总
下一篇:C#多维数组De遍历

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月18日 00时57分54秒