算法训练 字符串变换
时间限制:1.0s 内存限制:256.0MB
问题描述
相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了。今天,徐老师想测试一下大家对于字符串操作的掌握情况。徐老师自己定义了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,则不需要转换为缩写形式。
徐老师指定的操作如下:
1 表示全部转化为大写字母输出,如abC 变成 ABC
2 表示全部转换为小写字母输出,如abC变成abc
3 表示将字符串整个逆序输出,如 abc 变成 cba
4 表示将字符串中对应的大写字母转换为小写字母,而将其中的小写字母转化为大写字母输出,如 abC变成ABc
5表示将全部转换为小写字母,并将其中所有的连续子串转换为对应的缩写形式输出,比如abcD 转换为a-d,其次,-至少代表1个字母,既如果是ab,则不需要转换为缩写形式。
输入格式
一共一行,分别是指代对应操作的数字和字符串,两者以空格分隔,字符串全部由英文字母组成
输出格式
输出根据上述规则转换后对应的字符串
样例输入
5 ABcdEE
样例输出
a-ee
数据规模和约定
输入字符串长度最长为200。
作者注释:学会了运用C中的大小写转换函数:toupper(转换成大写)、tolower(转换成小写),头文件:ctype.h。
代码如下:
1 #include<stdio.h> 2 #include<ctype.h> 3 #include<string.h> 4 void n1(char s[],int len){ 5 for(int i = 0; i < len; i++) { 6 s[i] = toupper(s[i]); 7 } 8 printf("%s",s); 9 } 10 void n2(char s[],int len){ 11 for(int i = 0; i < len; i++) { 12 s[i] = tolower(s[i]); 13 } 14 printf("%s",s); 15 } 16 void n3(char s[],int len){ 17 for(int i = len-1; i >= 0; i--) { 18 printf("%c",s[i]); 19 } 20 } 21 void n4(char s[],int len){ 22 for(int i = 0; i < len; i++) { 23 if(isupper(s[i])) 24 s[i] = tolower(s[i]); 25 else 26 s[i] = toupper(s[i]); 27 } 28 printf("%s",s); 29 } 30 void n5(char s[],int len) { 31 for(int i = 0; i < len; i++) { 32 s[i] = tolower(s[i]);//全部转换为小写字母 33 } 34 int i=0,j; 35 while(s[i]){ 36 printf("%c",s[i]); 37 if(s[i+1]==s[i]+1 && s[i+2]==s[i+1]+1){ 38 printf("-"); 39 for(i=i+3;;i++){ 40 if(s[i]!=s[i-1]+1){ 41 printf("%c",s[i-1]); 42 break; 43 } 44 } 45 i--; 46 } 47 i++; 48 } 49 printf(" "); 50 } 51 int main() { 52 int n; 53 scanf("%d",&n); 54 char s[200]; 55 gets(s); 56 int len = strlen(s); 57 switch(n) { 58 case 1://全部转化为大写字母 59 n1(s,len); 60 break; 61 case 2://全部转换为小写字母 62 n2(s,len); 63 break; 64 case 4: 65 n4(s,len); 66 break; 67 case 3: 68 n3(s,len); 69 break; 70 case 5: 71 n5(s,len); 72 break; 73 } 74 return 0; 75 }