鱼C论坛

 找回密码
 立即注册
查看: 1966|回复: 12

字符的输入输出问题

[复制链接]
发表于 2022-12-30 19:11:35 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
int main()
{
        char da,xiao;//定义大小写的变量
        scanf("%c\n",&da);//输入一个大写字符
        xiao=da+32;//大写与小写的关系
        printf("%c\n",xiao);//输出小写字符
        return 0;
}




上面的程序编译和链接都没有问题,但我输入'A'却输出是G或?,是我字符输入错误还是什么原因
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-30 19:30:30 | 显示全部楼层
你编译这个试试
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char da,xiao;//定义大小写的变量
  5.         scanf("%c",&da);//输入一个大写字符
  6.         xiao=da+32;//大写与小写的关系
  7.         printf("%c\n",xiao);//输出小写字符
  8.         return 0;
  9. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 19:31:55 | 显示全部楼层

发错了

本帖最后由 额外减小 于 2022-12-31 09:58 编辑

  。对不起,发错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-30 19:41:22 | 显示全部楼层
一般不在scanf后面加”\n“吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-31 08:56:23 | 显示全部楼层
scanf 不加\n
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-31 18:01:48 | 显示全部楼层
我输入的是'A'  ,按确定键后就是G,\n删除后还是没变,还是变成G,但我一开始是变成?,提示da没有初始化(但没错误和警告),然后我把第五行与第六行互换了,就一直是G
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-4 15:01:46 | 显示全部楼层
本帖最后由 两手空空儿 于 2023-1-4 15:04 编辑

程序没有问题,我的输出正常
你要输入A,而不是'A'     'G'-32 = ' ' '  

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
额外减小 + 1 + 1 鱼C有你更精彩^_^

查看全部评分

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

使用道具 举报

发表于 2023-1-4 15:30:36 | 显示全部楼层
两手空空儿 发表于 2023-1-4 15:01
程序没有问题,我的输出正常
你要输入A,而不是'A'     'G'-32 = ' ' '

极度支持
哇,真的是茅塞顿开 Ding164.jpg
楼主输入'A'的话,它第一个读到的是  '  这个字符,ASCII加32就是G
哈哈,厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-1-4 20:56:53 | 显示全部楼层

scanf可以加\n,但是在scanf中随意使用\n,表示忽略一切空白符直至下一个非空白符出现,所以要输入两次

                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-1-6 19:43:03 | 显示全部楼层
谢谢大神们的解答,真是让人茅塞顿开,疑惑顺利解开
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-1-7 12:33:46 | 显示全部楼层
scanf内不建议写\n,在不明确用法时贸然使用会导致bug。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-24 21:51:57 | 显示全部楼层
#include<stdio.h>
int main()
{
  int a,b,c,t;
  printf("输入三个数:");
  scanf("%d,%d,%d",&a,&b,&c);
  if(a>b)
  {
     b=a;
     t=b;
     a=t;
  }
  if(a>c)
  {
     c=a;
     t=c;
     a=t;
  }
  if(b>c)
  {
     c=b;
     t=c;
     b=t;
  }\\比较三个数的大小
  printf("%d,%d,%d\n",a,b,c);\\由小到大输出
  return 0;
}
这个我输入5,3,2后显示5,5,5错在哪里,是不是比较两个数大小的赋值顺序不对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-6 22:24:02 | 显示全部楼层
首先,scanf可以加\n,只不过要每次输入换行
这个代码没问题,你自己的输入可能存在问题
应该直接输入A而非'A'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 02:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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