鱼C论坛

 找回密码
 立即注册
查看: 416|回复: 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永远都是满足的,也就是说,无论你输入什么,永远执行这两条语句
  1. p = i+( 32);
  2.                 printf("输出结果:%c\n", p);
复制代码

所以只有大写字母才能转换成小写字母,输入其他的的字符就输出对应字符在ascii表中位置往后增加32位对应的字符
以下是正确的代码
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char c;
  5.         printf("请输入一个字符:");
  6.         scanf("%c",&c);
  7.         if(c>=65&&c<=90)
  8.         {

  9.                 printf("%c\n",c+32);
  10.         }
  11.         else if(c>=97&&c<=122)
  12.         {
  13.                 printf("%c\n",c-32);
  14.         }
  15.         else
  16.         {
  17.                 printf("%c\n",c);
  18.         }
  19.         return 0;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     char i;

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

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

  12.     return 0;
  13. }
复制代码


这里我们使用了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 | 显示全部楼层
  1.     printf("请输入一个字符:\n");
  2.     scanf_s("%c", &i);
  3.     if (65 <= i && i <= 90)
  4.     {
  5.         j = i + 32;
  6.         printf("输出结果:%c\n", j);
  7.     }
  8.     else if (97 <= i && i <= 122)
  9.     {
  10.         p = i - 32;
  11.         printf("输出结果:%c\n", p);
  12.     }
  13.     else
  14.     {
  15.         printf("%c\n", i);
  16.     }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2024-1-30 20:49:48 | 显示全部楼层    本楼为最佳答案   
首先是if的判断条件错了,'i'代表的是一个字符,不是你定义的变量i,在ascii表中i对应的10进制是105,所以97 <= 'i' <= 122永远都是满足的,也就是说,无论你输入什么,永远执行这两条语句
  1. p = i+( 32);
  2.                 printf("输出结果:%c\n", p);
复制代码

所以只有大写字母才能转换成小写字母,输入其他的的字符就输出对应字符在ascii表中位置往后增加32位对应的字符
以下是正确的代码
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char c;
  5.         printf("请输入一个字符:");
  6.         scanf("%c",&c);
  7.         if(c>=65&&c<=90)
  8.         {

  9.                 printf("%c\n",c+32);
  10.         }
  11.         else if(c>=97&&c<=122)
  12.         {
  13.                 printf("%c\n",c-32);
  14.         }
  15.         else
  16.         {
  17.                 printf("%c\n",c);
  18.         }
  19.         return 0;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> 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


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

  1. #include <stdio.h>

  2. int main() {
  3.     char i;
  4.     printf("请输入一个字符:\n");
  5.     scanf("%c", &i);
  6.     if (i >= 'A' && i <= 'Z') {
  7.         printf("是大写字母\n");
  8.     } else {
  9.         printf("不是大写字母\n");
  10.     }
  11.    
  12.     return 0;
  13. }
复制代码


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

以上回复来自 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-4-27 22:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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