多组输入的大坑以及vs的小bug

目录

前言

题目描述

输入描述:

输出描述:

第一版

开始调试和小bug


前言

在五一期间,我又又又被百度给坑了,这是一道关于字母大小写转换的题,总体没什么难点,但还是缺少经验啊,卡在了多组输入这一关,随后又被劣质回答踹坑里了,调试了好久才发现问题所在,接下来分享一下我的惨痛经验,希望能把大伙从坑里挖出来.

题目描述

完成字母大小写转换,有一个字符,判断它是否为大写字母,如果是,将它转换成小写字母;反之则转换为大写字母。

输入描述:

多组输入,每一行输入一个字母。

输出描述:

针对每组输入,输出单独占一行,输出字母的对应形式。

第一版

百度出来的内容如下,什么都没说,就一行代码,你气不气。

接下来是我查询了百度之后写出的第一版内容:


#include<stdio.h>

int  main()
{
	char ch = ' ';
    while (scanf("%c",&ch) != EOF)
    {
        if (islower(ch))//判断是否为小写字母
        {
            printf("%c\n", toupper(ch));//转换为大写
        }
        else
        {
            printf("%c\n", tolower(ch));//转换为小写
        }
    }
	return 0;
}

 

功能大体可以实现,但是中间空出来一大段,这就不正常了,应该是接下去的呀!

开始调试和小bug

调试之后发现,原来scanf在接收字符时,是会接收回车的,所以我们要在后面加入一个scanf或者getchar吸收回车。完善后的代码如下:
 

#include<stdio.h>

int  main()
{
	char ch = ' ';
    int  supervision = 0;
    while ((supervision = scanf("%c", &ch))!=EOF)
    {
        if (islower(ch))//判断是否为小写字母
        {
            printf("%c\n", toupper(ch));//转换为大写
        }
        else
        {
            printf("%c\n", tolower(ch));//转换为小写
        }
        getchar();
    }
	return 0;
}

并且VS编译器还有一个bug,结束程序时要输入^Z结束程序,也算是一个小坑了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JDSZGLLL

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

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

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

打赏作者

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

抵扣说明:

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

余额充值