dogo_d 2022-01-26 22:22 采纳率: 100%
浏览 182
已结题

输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是则不转换 可是输出始终是“?”(语言-c语言)

问题遇到的现象和发生背景

输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是不转换
可是输出始终是“?”

问题相关代码,请勿粘贴截图
include<stdio.h>
int main()
{
    char ch;
    scanf_s("%c", &ch);
    if (ch >= 'A' && ch <= 'Z') {
        ch = ch + 32;
        printf("%d", ch);
    }
    else 
    { printf("%c\n", ch); }
    return 0;
}
运行结果及报错内容

img

img

我的解答思路和尝试过的方法

使用了新的算法,结果却相同

int main() {
    char ch, b;
    scanf_s("%c", &ch);
    b = (ch > 'A' && ch < 'Z') ? (ch + 32) : ch;//warning!!!!!//
    printf("%c", b);
    return 0;

我想要达到的结果

可以正常转换

  • 写回答

3条回答 默认 最新

  • 关注
        printf("%d", ch);
    

    改成

        printf("%c", ch);
    

    scanf_s函数字符变量后面要加字符长度1。scanf_s函数为了确保字符串安全,要求参数指定字符串的最大长度,避免溢出
    scanf_s("%c", &ch);改成 scanf_s("%c", &ch, 1);
    你题目的解答代码如下:

    #include<stdio.h>
    int main()
    {
        char ch;
        scanf_s("%c", &ch, 1);
        if (ch >= 'A' && ch <= 'Z') {
            ch = ch + 32;
            printf("%c", ch);
        }
        else
        { printf("%c\n", ch); }
        return 0;
    }
    

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月3日
  • 已采纳回答 1月26日
  • 创建了问题 1月26日

悬赏问题

  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛