ALGO-143_蓝桥杯_算法训练_字符串变换

问题描述
  相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了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。

 

 

AC代码:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #define MAX 200
 4 
 5 int main(void)
 6 {
 7     int i;
 8     int n;
 9     char arr[MAX+1];
10     scanf("%d %s",&n,&arr);
11     switch(n)
12     {
13         /*全部转化为大写字母输出*/
14         case 1:
15             for (i = 0 ; i < strlen(arr) ; i ++)
16             {
17                 if (arr[i] >= 'a' && arr[i] <= 'z')
18                 {
19                     arr[i] -= 32;
20                 }
21             }
22             printf("%s",arr);
23             break;
24         /*全部转换为小写字母输出*/
25         case 2:
26             for (i = 0 ; i < strlen(arr) ; i ++)
27             {
28                 if (arr[i] >= 'A' && arr[i] <= 'Z')
29                 {
30                     arr[i] += 32;
31                 }
32             }
33             printf("%s",arr);
34             break;
35         /*将字符串整个逆序输出*/
36         case 3:
37             for (i = strlen(arr)-1 ; i >= 0 ; i --)
38             {
39                 printf("%c",arr[i]);
40             }
41             break;
42         /*将字符串中对应的大写字母转换为小写字母,小写变大写*/
43         case 4:
44             for (i = 0 ; i < strlen(arr) ; i ++)
45             {
46                 if (arr[i] >= 'A' && arr[i] <= 'Z')
47                 {
48                     arr[i] += 32;
49                 }
50                 else if (arr[i] >= 'a' && arr[i] <= 'z')
51                 {
52                     arr[i] -= 32;
53                 }
54             }
55             printf("%s",arr);
56             break;
57         /*将全部转换为小写字母,
58         并将其中所有的连续字串转换为对应的缩写形式输出*/
59         case 5:
60             for (i = 0 ; i < strlen(arr) ; i ++)
61             {
62                 if (arr[i] >= 'A' && arr[i] <= 'Z')
63                 {
64                     arr[i] += 32;
65                 }
66             }
67             printf("%c",arr[0]);
68             n = 0;
69             for (i = 1 ; i < strlen(arr) ; i ++) 
70             {
71                 if (arr[i]-arr[i-1] == 1 && arr[i+1]-arr[i] == 1)
72                 {
73                     n ++;
74                     continue;
75                 }
76                 if (n)
77                 {
78                     printf("-");
79                 }
80                 printf("%c",arr[i]);
81                 n = 0;
82             }            
83             break;
84         default:
85             break;
86     }
87     
88     return 0;
89 }

 

转载于:https://www.cnblogs.com/mind000761/p/8876001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值