C++ | 大小写字母转换

1.题目描述

实现字母的大小写转换。多组输入输出。

输入描述:

多组输入,每一行输入大写字母。

输出描述:

针对每组输入输出对应的小写字母。

在这里插入图片描述

  • 答案如下:
#include<iostream>
using namespace std;

int main(){
//---------------------------------------
//第一种方法:使用ascii码,大小写差值求解
    /*char ch;
    while(scanf("%c",&ch)==1){
        getchar();
        printf("%c\n",ch+32);
    }
//---------------------------------------
//第二种方法:
    char ch;
    while(scanf("%c\n",&ch)!=EOF){
        printf("%c\n",ch+32);
    }*/
//---------------------------------------
//第三种方法:getchar(),如果拿到的是回车,就进入下一次循环,如果是结尾,就推出循环,否则一直转换为小写
    char ch;
    while(1){
        ch=getchar();
        if(ch=='\n')
            continue;
        else if(ch==EOF)
            break;
        else 
            printf("%C\n",ch+32);
    }
    return 0;
}

2.题目描述

实现字母的大小写转换。多组输入输出。

输入描述:

多组输入,每一行输入大写或小写字母。

输出描述:

针对每组输入输出对应的小写或大写字母。

#include<iostream>
using namespace std;

int main(){
    //--------------------------------------------------------
    //----------------法1-------------------------------------
    //---------------------------------------------------------
    char a;
    while(1){
        a=getchar();
        if(a=='\n')
            continue;
        else if(a==EOF)
            break;
       else if(a>='A'&&a<='Z')
           printf("%C\n",a+32);
        else if(a>='a'&&a<='z')
             printf("%C\n",a-32);
    }
    //----------------------------------------------------------------------
    //---------------------法2---------------------------------------------
    //----------------------------------------------------------------------
    char a;
    while(scanf("%c",&a)!=EOF){
        if(a=='\n')
            continue;
        else if(a>='A'&&a<='Z')
           printf("%c\n",a+32);
        else if(a>='a'&&a<='z')
             printf("%c\n",a-32);
        else
            printf("%c\n",a);
    }
    //----------------------------------------------------------------------
    //---------------------法3---------------------------------------------
    //----------------------------------------------------------------------
    char a;
    while(scanf("%c",&a)!=EOF){
        if(a=='\n')
            continue;
        else if(a>='A'&&a<='Z')
           printf("%c\n", tolower(a));
        else if(a>='a'&&a<='z')
             printf("%c\n",toupper(a));
        else
            printf("%c\n",a);
    }
     return 0;
}

大小写字母转换总结:

1. 用大小写字母的ASSIC码的差值32来求解

ASCII码表格:

ASCII控制字符ASCII字符ASCII字符ASCII字符
0NUT32(space)64@96
1SOH33!65A97a
2STX34"66B98b
3ETX35#67C99c
4EOT36$68D100d
5ENQ37%69E101e
6ACK38&70F102f
7BEL39,71G103g
8BS40(72H104h
9HT41)73I105i
10LF42*74J106j
11VT43+75K107k
12FF44,76L108l
13CR45-77M109m
14SO46.78N110n
15SI47/79O111o
16DLE48080P112p
17DCI49181Q113q
18DC250282R114r
19DC351383S115s
20DC452484T116t
21NAK53585U117u
22SYN54686V118v
23TB55787W119w
24CAN56888X120x
25EM57989Y121y
26SUB58:90Z122z
27ESC59;91[123{
28FS60<92/124|
29GS61=93]125}
30RS62>94^126`
31US63?95_127DEL

ASCII 码大致由以下两部分组成:

  • ASCII 非打印控制字符: ASCII 表上的数字 0-31 分配给了控制字符,用于控制像打印机等一些外围设备。
  • ASCII 打印字符:数字 32-126 分配给了能在键盘上找到的字符,当查看或打印文档时就会出现。
#include <iostream>
 
using namespace std;
 
int main()
{
	char a[20];
	cout<<"请输入一串字符:\n";
	cin>>a;
	for(int i = 0;a[i];i++)
	{
		if(a[i] >= 'a'&&a[i] <= 'z')
            a[i] -= 32;
		else if(a[i] >= 'A'&&a[i] <= 'Z')
            a[i] += 32;
	}
	for(int i = 0;a[i];i++)
		cout<<a[i];
	cout<<endl;
 
	system("pause");
	return 0;
}

2. 大小写字母转换函数

简单

#include <iostream>
 
using namespace std;
 
int main()
{
    cout<<(char)toupper(97)<<'\n';
    cout<<(char)toupper('a')<<'\n';
    cout<<(char)tolower(66)<<'\n';
    cout<<(char)tolower('B')<<'\n';
 
    return 0;
}

看看

  • 头文件:#include <string.h>
  • strlwr()用于将字符串中的字符转换为小写,其原型为:char *strlwr(char *str);
  • 注意:strlwr()和strupr()不是标准库函数,只能在windows下(VC、MinGW等)使用,Linux GCC中需要自己定义。
#include<iostream>
#include<string.h>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    //声明字符数组
    char str[80],*p;
    int i;
 
    //转换字符串中的小写为大写
    cout<<"将字符串中的小写字母转换为大写"<<endl;
    cout<<"请输入原字符串:"<<endl;
    cin>>str;
    p=strupr(str);
    cout<<"p:"<<p<<endl;
    cout<<"string:"<<str<<endl;
    cout<<"___________________"<<endl;
 
    //转换字符串中的大写为小写
    cout<<"将字符串中的大写字母转换为小写"<<endl;
    cout<<"请输入原字符串:"<<endl;
    cin>>str;
    p=strlwr(str);
    cout<<"p:"<<p<<endl;
    cout<<"string:"<<str<<endl;
    cout<<"___________________"<<endl;
 
	system("pause");
	return 0;
}

后记

参考文章

  • 9
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰之行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值