首页 > 试题广场 >

大小写转换

[编程题]大小写转换
  • 热度指数:99240 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
实现字母的大小写转换。多组输入输出。

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


输出描述:
针对每组输入输出对应的小写字母。
示例1

输入

A
B

输出

a
b

备注:
多组输入过程中要注意“回车”也是字母,所以要“吸收”(getchar())掉该字母。
#include <stdio.h>
int main()
{
    char ch;
    while((ch=getchar())!=EOF){
        if(ch>='A'&&ch<='Z'){
            ch+=32;
        }
        putchar(ch);
    }
}

发表于 2020-04-10 11:36:42 回复(3)
C语言,使用scanf最简单,也可以用getchar,都写了一下
用scanf
#include <stdio.h>

int main(void){
    int diff = 0X61 - 0X41;  //在下对ascii码表还算熟悉,承让了
    char ch;
    while(scanf("%c\n",&ch)!=EOF){
        printf("%c\n",ch+diff);
    }
}

或者用getchar
#include <stdio.h>
 
int main(void){
    int diff = 0X61 - 0X41;  //在下对ascii码表还算熟悉,承让了
    char ch;
    while(1){
        ch = getchar();
        if(ch=='\n')
            continue;
        else if(ch==EOF)
            break;
        else
            printf("%c\n",ch+diff);
    }
}


编辑于 2020-03-21 17:07:44 回复(3)
#include<stdio.h>
int main(void){
    char c;  // 用来存储从键盘输入的字符
    while(scanf("%c", &c) != EOF){  // 循环从键盘中读取输入的字符,直到最后一个字符输入
        getchar();  // 此题在输入了字符后还有空格还是啥的,所以用getchar()来处理多余且没必要的字符输入
        printf("%c\n", c + 32);  // 将大写变成小写,只需要将它们的ASCII加32即可,然后输出
    }
    
    return 0;
}
如何连续从键盘获取输入,如果输入中有多余字符如何处理
发表于 2022-01-29 11:24:15 回复(0)
计算机术语,缩写通常为EOF(End Of File),在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。在C语言中,或更精确地说成C标准函式库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束。
#include<stdio.h>
int main(void)
{
    char ch = 0;
    while(scanf("%c",&ch)!=EOF)
    {
        getchar();
        printf("%c\n",ch+32);
    }
    return 0;
}

发表于 2022-03-02 15:58:11 回复(2)
#include<stdio.h>
int main()
{
    char ch;
    while(scanf("%c",&ch)!=EOF)
    {
        getchar();
        printf("%c\n",ch+32);
    }
    return 0;
}
发表于 2021-10-29 21:44:03 回复(0)
#include<iostream>
using namespace std;
int main(void)
{
	char a;
	while(cin>>a)
	{
		char c=a+32;
		 
		
		cout<<c<<endl;
	}
}
有种方法叫秒杀


发表于 2020-05-03 10:36:52 回复(4)
我想请问一下各位大佬,假如我设的是ch,可char ch;那ch不是一个字符嘛!为什么能直接加减32
发表于 2022-02-21 18:42:48 回复(1)
#include<stdio.h>
int main(){
    int ch;
    while((ch = getchar()) != EOF)
    {
        //消耗换行
        getchar();
        //判断大小写
        if(ch > 96)
            putchar(ch - 32);
        else
            putchar(ch + 32);
        printf("\n");
    }
    return 0;
}

大小写转换怎么能只有大写转小写没有小写转大写呢🤪
发表于 2022-08-13 19:40:22 回复(1)
while True:
    try:
        ch = input()
        print(ch.lower())
    except EOFError:
        break
发表于 2022-01-19 14:27:08 回复(0)
#include<stdio.h>
int main() {
    char c;
    while(scanf("%c",&c)!=EOF) {
        printf("%c\n",c+32);
        getchar();
    }
}

发表于 2021-08-31 23:20:36 回复(2)
在c语言中getchar只能获取一个字符,所以在循环中,需要多加一个getchar吸收多余的字符和空格。
发表于 2021-01-14 15:02:57 回复(0)
#include<stdio.h>
int main()
{
    char ch;
    while((ch = getchar())!=EOF){
        getchar();
        putchar(ch+32);
        printf("\n");
    }
    return 0;
}
发表于 2023-11-01 20:39:22 回复(0)
import sys

for line in sys.stdin:
    lst = line.split('\n')
    for ch in lst:
        if ch != '':
            print(ch.lower())

发表于 2022-03-25 17:16:10 回复(0)
#include<stdio.h>
int main()
{
	int ch = 0;
	while ((ch=getchar ()) != EOF)
	{
		putchar(ch + 32);
		getchar();
		printf("\n");		
	}
	return 0;
}
getchar 和putchar的使用
发表于 2022-02-27 17:05:47 回复(0)
import java.util.*;
public class Main
{
    public static void main(String [] args)
    {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext())
        {
            String s=sc.next();
            System.out.println(s.toLowerCase());
        }
    }
}
发表于 2020-03-25 22:08:42 回复(0)
#include<iostream>
(720)#include<string>
using namespace std;
int main(){
    string ch;
    while(getline(cin,ch)){
        if("a"<=ch&&ch<="z"){
            cout<<char(ch[0]-32)<<endl;
        }else{
            cout<<char(ch[0]+32)<<endl;
        }
    }
    return 0;
}
// c++ 的多行读取

发表于 2020-03-15 12:04:08 回复(0)
#include<stdio.h>
int main()
{
    char A=0;
    while((A=getchar())!=EOF)
    {
        getchar();
        if(A>='A'&& A<='Z')
        {
            putchar(A+32);
            printf("\n");
        }
        else
        {
            putchar(A-32);
            printf("\n");
        }
    }
    return 0;
}
发表于 2024-03-05 20:13:23 回复(4)
#include <stdio.h>

int main() {
    char a;
    while (scanf("%c\n", &a) != EOF) {
        printf("%c\n", a + 32);
    }
    return 0;
}


编辑于 2024-01-09 09:46:07 回复(0)
#include <stdio.h>
#include <ctype.h>

int main()
{
    char ch = 0;
    while (scanf("%c", &ch); != EOF)
    {
        (getchar());
        putchar(tolower(ch));
        putchar('\n');
    }
    return 0;
}
发表于 2023-12-15 22:42:26 回复(0)
#include <stdio.h> int main() { char letter; while (scanf("%c", &letter) != EOF) {
        getchar(); // 吸收回车符 if (letter >= 'A' && letter <= 'Z') { // 判断是否为大写字母 letter = letter + ('a' - 'A'); // 大写字母转换为小写字母 } printf("%c\n", letter);
    } return 0;
}

解释: 上述代码使用了一个无限循环来接收多组输入,直到遇到文件末尾(EOF)时退出循环。每次循环中,通过scanf()函数获取一个字符,并使用getchar()函数吸收掉回车符。然后,判断输入的字符是否为大写字母,如果是,则将其转换为小写字母。最后,使用printf()函数输出结果。

注意:在C语言中,字符类型使用单引号表示,例如'A'、'B'等。对于大写字母和小写字母之间的转换,可以利用ASCII码表中大小写字母的编码差值来实现,即大写字母加上'a' - 'A'的差值得到对应的小写字母。输出时使用%c格式控制符打印字符,并在结尾添加换行符\n。

编辑于 2023-12-13 22:35:56 回复(0)