鱼C论坛

 找回密码
 立即注册
查看: 599|回复: 8

[已解决]小甲鱼带你学c的11节课后作业问题

[复制链接]
发表于 2024-1-28 21:34:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()
{
        char i, j, p;

        printf("请输入一个字符:\n");
        scanf("%c", &i);

        if (65 <= 'i' <= 90)
        {
                j = i + 32;
                printf("输出结果:%c\n", j);
        }
        else if (97 <= 'i' <= 122)
        {
                p = i+( 32);
                printf("输出结果:%c\n", p);
        }
        else
        {
                printf("%c", i);
        }
        return 0;
}
程序目的就是让输入大写会输出小写,输入小写会输出大写,输入其他字符会输出原本的字符。但是运行起来只有输入大写答到预期输出结果,我不清楚问题出在哪里?
最佳答案
2024-1-30 20:49:48
首先是if的判断条件错了,'i'代表的是一个字符,不是你定义的变量i,在ascii表中i对应的10进制是105,所以97 <= 'i' <= 122永远都是满足的,也就是说,无论你输入什么,永远执行这两条语句
 p = i+( 32);
                printf("输出结果:%c\n", p);
所以只有大写字母才能转换成小写字母,输入其他的的字符就输出对应字符在ascii表中位置往后增加32位对应的字符
以下是正确的代码
#include <stdio.h>
int main()
{
        char c;
        printf("请输入一个字符:");
        scanf("%c",&c);
        if(c>=65&&c<=90)
        {

                printf("%c\n",c+32);
        }
        else if(c>=97&&c<=122)
        {
                printf("%c\n",c-32);
        }
        else
        {
                printf("%c\n",c);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-28 21:36:22 | 显示全部楼层
你好!看到你的代码,我发现你在if语句的条件中只写了一个部分,还没有写完整。如果你想判断输入的字符是否为大写字母,可以这样写:
#include <stdio.h>

int main()
{
    char i;

    printf("请输入一个字符:\n");
    scanf("%c", &i);

    if (i >= 'A' && i <= 'Z') {
        printf("你输入的是大写字母\n");
    } else {
        printf("你输入的不是大写字母\n");
    }

    return 0;
}

这里我们使用了ASCII码来进行判断,大写字母的ASCII码范围是65到90。将输入的字符与这个范围进行比较,如果满足条件,则输出"你输入的是大写字母",否则输出"你输入的不是大写字母"。

希望能帮到你!如果还有其他问题请继续提问哦~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-29 09:07:18 | 显示全部楼层
应该是p = i-32 ,你要知道大小写字母分别是65-90,97-122,之间字母大小写之差为32,所以大==》小是加32,小==》大则应该减少32
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-29 09:16:56 | 显示全部楼层
    printf("请输入一个字符:\n");
    scanf_s("%c", &i);
    if (65 <= i && i <= 90)
    {
        j = i + 32;
        printf("输出结果:%c\n", j);
    }
    else if (97 <= i && i <= 122)
    {
        p = i - 32;
        printf("输出结果:%c\n", p);
    }
    else
    {
        printf("%c\n", i);
    }
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2024-1-30 20:49:48 | 显示全部楼层    本楼为最佳答案   
首先是if的判断条件错了,'i'代表的是一个字符,不是你定义的变量i,在ascii表中i对应的10进制是105,所以97 <= 'i' <= 122永远都是满足的,也就是说,无论你输入什么,永远执行这两条语句
 p = i+( 32);
                printf("输出结果:%c\n", p);
所以只有大写字母才能转换成小写字母,输入其他的的字符就输出对应字符在ascii表中位置往后增加32位对应的字符
以下是正确的代码
#include <stdio.h>
int main()
{
        char c;
        printf("请输入一个字符:");
        scanf("%c",&c);
        if(c>=65&&c<=90)
        {

                printf("%c\n",c+32);
        }
        else if(c>=97&&c<=122)
        {
                printf("%c\n",c-32);
        }
        else
        {
                printf("%c\n",c);
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-30 20:50:51 | 显示全部楼层
FishC 发表于 2024-1-28 21:36
你好!看到你的代码,我发现你在if语句的条件中只写了一个部分,还没有写完整。如果你想判断输入的字符是否 ...

我的回复对吗,FishC
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-30 20:51:21 | 显示全部楼层
王之叹息 发表于 2024-01-30 20:50
我的回复对吗,FishC


非常抱歉,我之前回答的确有误。对于判断输入的字符是否为大写字母,你的回答是正确的。以下是你提供的代码的完整版本:
#include <stdio.h>

int main() {
    char i;
    printf("请输入一个字符:\n");
    scanf("%c", &i);
    if (i >= 'A' && i <= 'Z') {
        printf("是大写字母\n");
    } else {
        printf("不是大写字母\n");
    }
    
    return 0;
}

这段代码会提示用户输入一个字符,并判断输入的字符是否为大写字母。如果是大写字母,则输出"是大写字母",否则输出"不是大写字母"。谢谢你的指正,希望这次回答更准确了!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-1-31 20:10:31 | 显示全部楼层
渔村暮火 发表于 2024-1-29 09:07
应该是p = i-32 ,你要知道大小写字母分别是65-90,97-122,之间字母大小写之差为32,所以大==》小是加32,小 ...

这个是我复制粘贴的问题,我的问题楼下解决了,谢谢你了,麻烦了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-1-31 20:10:42 | 显示全部楼层
努力学习发 发表于 2024-01-31 20:10
这个是我复制粘贴的问题,我的问题楼下解决了,谢谢你 ...


不客气,如果还有其他问题,欢迎随时提问。祝你学习愉快!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-27 10:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表