大写小写互换

#include <iostream>
#include <cstring>
using namespace std;
int main(){
    char str[81] = {};
    cin>>str;
    for(int i = 0;i < strlen(str);i++){
        if(str[i] >= 'A' && str[i] <= 'Z'){
            str[i] = str[i] + 32;
        }else if(str[i] >= 'a' && str[i] <= 'z'){
            str[i] = str[i] - 32;
        }
    }
    for(int i = 0;i < strlen(str);i++){
        cout<<str[i];
    }
    return 0;
}

### C语言中大小写字母的转换方法 在C语言中,可以通过多种方式实现字母的大写小写之间的相互转换。以下是几种常见的方法及其具体实现: #### 使用标准库函数 `toupper` 和 `tolower` C语言的标准库 `<ctype.h>` 提供了两个常用的函数用于字符的大小写转换:`toupper()` 和 `tolower()`。这两个函数分别可以将一个小写字母转换为大写字母或将一个大写字母转换为小写字母。 ```c #include <stdio.h> #include <ctype.h> int main() { char c = 'a'; if (islower(c)) { // 判断是否为小写字母 c = toupper(c); // 转换为大写字母 } printf("转换后的字符:%c\n", c); return 0; } ``` 这种方法简单易用,并且能够自动判断输入字符是否属于字母范围[^2]。 #### 手动计算 ASCII 值差异 除了使用标准库函数外,还可以通过手动调整字符的ASCII码值来进行大小写的转换。英文字母的小写形式与其对应的大写形式之间相差固定的32个单位(即 `'a' - 'A' = 32`)。因此可以直接利用这一特性完成转换。 对于从小写大写的转换: ```c if (ch >= 'a' && ch <= 'z') { ch -= 32; // 减去偏移量得到相应的大写字母 } ``` 而对于从大写小写的转换则相反: ```c else if (ch >= 'A' && ch <= 'Z') { ch += 32; // 加上偏移量获得相对应的小写字母 } ``` 此逻辑已在某些参考资料中有提及并给出了具体的例子程序[^3]。 #### 综合应用实例 当面对更复杂的场景比如整个字符串都需要做类似的变换时,则需遍历每一个字符逐一处理。下面展示了一个完整的案例,它接受用户输入的一串文本直到遇到特定终止符'#', 并按照题目描述的要求执行相应的大小写互换操作: ```c #include <stdio.h> #define MAX_LEN 50 void swapCase(char *str){ while(*str!='\0'){ if((*str>='a'&&*str<='z')){ *str=*str-('a'-'A'); } else if ((*str>='A')&&(*str<='Z')) { *str+=('a'-'A'); } str++; } } int main(){ char inputStr[MAX_LEN]; printf("Enter a string ending with '#': "); fgets(inputStr,sizeof(inputStr),stdin); int length=strlen(inputStr)-1; if(inputStr[length]=='#') inputStr[length]='\0'; swapCase(inputStr); puts(inputStr); return 0; } ``` 该段代码实现了基本功能的同时也考虑到了边界条件如字符串结尾标记等问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值