zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    (水题)洛谷
    (水题)洛谷
    洛谷
    (水题)洛谷
    POJ
    poj 3061(二分 or 尺取法)
    poj 2456(二分)
    poj 1064(二分答案)
    POJ 2559(单调栈)
    STL
  • 原文地址:https://www.cnblogs.com/wu199723/p/11536958.html
Copyright © 2011-2022 走看看