zoukankan      html  css  js  c++  java
  • 字符串的操作:字符串变换(蓝桥杯训练系统)

    问题描述
      相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了1,2,3,4,5这5个参数分别指代不同的5种字符串操作,你需要根据传入的参数,按照徐老师的规定,对输入字符串进行格式转化。
      徐老师指定的操作如下:
      1 表示全部转化为大写字母输出,如abC 变成 ABC
      2 表示全部转换为小写字母输出,如abC变成abc
      3 表示将字符串整个逆序输出,如 abc 变成 cba
      4 表示将字符串中对应的大写字母转换为小写字母,而将其中的小写字母转化为大写字母输出,如 abC变成ABc
      5表示将全部转换为小写字母,并将其中所有的连续子串转换为对应的缩写形式输出,比如abcD 转换为a-d,其次,-至少代表1个字母,既如果是ab,则不需要转换为缩写形式。
    输入格式
      一共一行,分别是指代对应操作的数字和字符串,两者以空格分隔,字符串全部由英文字母组成
    输出格式
      输出根据上述规则转换后对应的字符串
    样例输入
    5 ABcdEE
    样例输出
    a-ee
    数据规模和约定
      输入字符串长度最长为200。
    思路:1-4的操作不用说,简单,关键在于第五个,首先要明白加‘-’的地方不止一处,所以就需要遍历字符串才行,定义一个tem[]数组来读取,遇到连续就赋值‘-’,否则就赋值是s[i]即可,同时还不能连续赋值‘-’,这就需要一个if判断tem[t.length - 1]是否为‘-’,判断是否连续还需要一个条件i是否等于s.length-1,如果等于,就直接赋值即可,否则就进入判断是否连续,判断前值后值用 || 来判断,最终最重要的还是数组初始化,,太重要了,,,不然真的会出现一堆莫名其妙的东西。
    代码:
     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 int main(void)
     5 {
     6     int NumOperation;
     7     char s[200];
     8     char tem[400];
     9     int i, j = -1;
    10     int k;
    11     memset(tem, 0, 400);
    12     scanf("%d", &NumOperation);
    13     getchar();
    14     gets(s);
    15 
    16     switch (NumOperation)
    17     {
    18         case 1:
    19             for (i = 0; s[i]; i++)
    20             {
    21                 if (s[i] >= 'a' && s[i] <= 'z')
    22                 {
    23                      printf("%c", s[i] - 32);
    24                 }
    25                 else
    26                 {
    27                      printf("%c", s[i]);
    28                 }
    29             }
    30             break;
    31         case 2:
    32             for (i = 0; s[i]; i++)
    33             {
    34                 if (s[i] >= 'A' && s[i] <= 'Z')
    35                 {
    36                     printf("%c", s[i] + 32);
    37                 }
    38                 else
    39                 {
    40                     printf("%c", s[i]);
    41                 }
    42             }
    43             break;
    44         case 3:
    45             for (i = strlen(s) - 1; i >= 0; i--)
    46             {
    47                 printf("%c", s[i]);
    48             }
    49             break;
    50         case 4:
    51             for (i = 0; s[i]; i++)
    52             {
    53                 if (s[i] >= 'A' && s[i] <= 'Z')
    54                 {
    55                     printf("%c", s[i] + 32);
    56                 }
    57                 else if (s[i] >= 'a' && s[i] <= 'z')
    58                 {
    59                     printf("%c", s[i] - 32);
    60                 }
    61             }
    62             break;
    63         case 5:
    64             for (i = 0; s[i]; i++)
    65             {
    66                 if (s[i] >= 'A' && s[i] <= 'Z')
    67                 {
    68                     s[i] += 32;
    69                 }
    70             }
    71             int len = strlen(s);
    72             for (i = 0; i < len; i++)
    73             {
    74                 if (i == 0)
    75                 {
    76                     tem[++j] = s[0];
    77                 }
    78                 else if (i != len - 1)
    79                 {
    80                     if (s[i] != s[i - 1] + 1 || s[i] != s[i + 1] - 1)
    81                         tem[++j] = s[i];
    82                     else if (tem[strlen(tem)-1] != '-')
    83                         tem[++j] = '-';
    84                 }
    85                 else
    86                     tem[++j] = s[i];
    87             }
    88             tem[++j] = '';
    89             for (i = 0; tem[i]; i++)
    90             {
    91                 printf("%c", tem[i]);
    92             }
    93 
    94     }
    95     return 0;
    96 }
  • 相关阅读:
    适配器
    适配器
    哈希容器
    迭代器
    redis介绍
    9内核同步介绍
    Redis基础数据结构
    springCloud-Eureka源码分析
    zookeeper伪分布式集群环境搭建
    消息队列核心-如何保证消息不丢失
  • 原文地址:https://www.cnblogs.com/ZhengLijie/p/12511219.html
Copyright © 2011-2022 走看看