C#练习题——Dictionary
一、任务一:使用字典存储0~9的数字对应的大写文字
(1)提示用户输入一个不超过三位的数,提供一个方法,
(2)返回数的大写。例如:306,返回 叁零陆
二、代码解析
1. 字典初始化
Dictionary<int, string> dic = new Dictionary<int, string>();
dic.Add(0, "零");
dic.Add(1, "壹");
// ... 其他数字映射
(1)使用Dictionary
建立阿拉伯数字到中文大写的映射关系
(2)键值对形式存储,便于快速查找
2. 数字位数分离算法
int bai = num / 100; // 获取百位数
int shi = num % 100 / 10; // 获取十位数
int ge = num % 10; // 获取个位数
(1)百位:通过整除100获得
(2)十位:先取模100得到后两位数,再整除10
(3)个位:直接取模10获得
3. 条件分支处理
if (bai != 0) // 处理三位数
else if (shi != 0) // 处理两位数
else // 处理一位数
(1)根据数字的位数选择不同的处理逻辑
(2)确保各种位数情况都能正确处理
三、完整代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Xml.Linq;namespace 进阶测试
{class Program{public static string GetType(int num){Dictionary<int,string> dic = new Dictionary<int,string>();dic.Add(0, "零");dic.Add(1, "壹");dic.Add(2, "贰");dic.Add(3, "叁");dic.Add(4, "肆");dic.Add(5, "伍");dic.Add(6, "陆");dic.Add(7, "柒");dic.Add(8, "捌");dic.Add(9, "玖");string value;int bai = num / 100;int shi = num % 100 / 10;int ge = num % 10;if (bai!=0)//三位数{value = "" + dic[bai] + dic[shi] + dic[ge];}else if(shi!=0)//两位数{value = "" + dic[shi] + dic[ge];}else//一位数{value = "" + dic[ge];}return value;}static void Main(string[] args){Console.WriteLine("请输入一个不超过三位的数:");Console.WriteLine("您输入的值为:"+GetType(int.Parse(Console.ReadLine())));}}
}
四、任务二:计算每个字母出现的次数
(1)使用字典存储
(2)最后遍历整个字典,不区分大小写
五、代码分析
1. 核心方法:DealWithString
public static void DealWithString(string str)
{str = str.ToLower(); // 统一转换为小写,不区分大小写Dictionary<char, int> dic = new Dictionary<char, int>();// 遍历字符串的每个字符for (int i = 0; i < str.Length; i++){if (dic.ContainsKey(str[i])){dic[str[i]]++; // 已存在字符,计数+1}else{dic.Add(str[i], 1); // 新字符,初始化为1}}
}
2. 字典操作详解
字典的初始化:
Dictionary<char, int> dic = new Dictionary<char, int>();
(1)键(Key): char
类型,存储字符
(2)值(Value): int
类型,存储该字符出现的次数
字符统计逻辑:
if (dic.ContainsKey(str[i])) // 检查字符是否已存在
{dic[str[i]]++; // 存在则计数增加
}
else
{dic.Add(str[i], 1); // 不存在则添加新条目
}
3. 结果输出
foreach (char c in dic.Keys)
{Console.WriteLine("{0}:{1}个", c, dic[c]);
}
(1)遍历字典中的所有键(字符)
(2)输出每个字符及其出现次数
六、完整代码
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Xml.Linq;namespace 进阶测试
{class Program{public static void DealWithString(string str){str=str.ToLower();Dictionary<char,int> dic = new Dictionary<char,int>();for (int i = 0; i < str.Length; i++){if (dic.ContainsKey(str[i])){dic[str[i]]++;}else{dic.Add(str[i], 1);}}Console.WriteLine("您输入的字符串识别字符以及相应的数量为:");foreach (char c in dic.Keys){{Console.WriteLine("{0}:{1}个", c, dic[c]);}}}static void Main(string[] args){Console.Write("请输入需要检查的字符串:");string str = Console.ReadLine();Console.WriteLine("您输入的字符串为:{0}",str);DealWithString(str);}}
}