zoukankan      html  css  js  c++  java
  • C语言 · 字符串变换

    算法训练 字符串变换  
    时间限制: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,则不需要转换为缩写形式。
    输入格式
      一共一行,分别是指代对应操作的数字和字符串,两者以空格分隔,字符串全部由英文字母组成
    输出格式
      输出根据上述规则转换后对应的字符串
    样例输入
    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 }
  • 相关阅读:
    植物园偶遇一直喵
    植物园偶遇一直喵
    美食篇
    美食篇
    端午节路过南站
    端午节路过南站
    黄山云海
    黄山云海
    Android (1)
    树和树算法(1)
  • 原文地址:https://www.cnblogs.com/panweiwei/p/6550147.html
Copyright © 2011-2022 走看看