C#习题二

题目2:对任意一个字符串进行加1运算,逢10到A,逢Z到0进1, 例:9+1=A;19+1=1A,1A+1=1B,1Z+1=20

反思:未能一次性做出,出现了输入1位字符、输入“ZZZ”数组越界的问题,后续增增删删将原本清晰的代码结构打乱,虽然最终解决,但是程序也臃肿凌乱了。造成这种结果的原因是:我对于程序的考虑不周密,对特殊情况不敏感,没有在头脑中设计出严密程序就开始敲代码,今后要切记,写代码只是将解决方案用计算机语言翻译出来的过程,真正要花功夫的是在敲代码之前对程序的构建!

涉及到的语法知识:

1、 将字符串string转化为字符数组的方法:

a)   变量.ToCharArray();  返回值为字符数组即char[] cStr = str.ToCharArray();

2、 改变string的方法:

a)   str = new string(cStr); 将 System.String 类的新实例初始化为由 Unicode 字符数组指示的值。

b)   Replace(s1,s2):对字串中的s1用s2进行替换。

 

 1 static void PrintTowSolution()
 2         {
 3             string str = Console.ReadLine();
 4             int last = str.Length - 1;
 5             char end = str[last];
 6             char[] cStr = str.ToCharArray();
 7             bool flag = true, over=false;
 8             if (last == 0)
 9             {
10                 if (end ==Z)
11                 {
12                     string a = "10";
13                     cStr = a.ToCharArray();
14                 }
15                 else if(end==9)
16                 {
17                     cStr[0] = A;
18                 }
19                 else
20                 {
21                     cStr[0]++;
22                 }
23             }
24             while (flag && last!=0)
25             {
26                 flag = false;
27                 if (end == 9) //如果最后一个字符是9 逢9变A
28                 {
29                     cStr[last] = A;
30                 }
31                 else if (end == Z) //如果最后一个字符是Z 逢Z变0进1,分两种情况讨论
32                 {
33                    
34                     cStr[last] = 0;  //变0
35                     if (last == 1 && cStr[last - 1] == Z)
36                     {
37                         cStr[last-1] = 0;
38                         over = true;
39                         break;
40                     }
41                     if (cStr[last-1]==Z) //如果前一位是Z的话 ,前一位也要变0进1,则启动下次循环,再作处理
42                     {
43                         flag = true;
44                
45                     }
46                     else if(cStr[last - 1] == 9)//如果前一位是9的话则变A
47                     {
48                         cStr[last - 1] = A;
49                     }
50                     else //如果前一位不是Z在进1
51                     {
52                         cStr[last - 1]++;
53                     }
54                 }
55                 else
56                 {
57                     cStr[last]++;
58                 }
59                 last--;
60                 end = str[last];
61             }
62             if(over==false)
63             {
64                 str = new string(cStr);
65                 Console.WriteLine(str);
66             }
67             else
68             {
69                 str = new string(cStr);
70                 Console.WriteLine("1"+str);
71             }
72         }
73 }

 

C#习题二

上一篇:OSI与TCP/IP各层的结构与功能,都有哪些协议?


下一篇:数论函数