wsb1991abc 发表于 2022-12-30 19:11:35

字符的输入输出问题

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




上面的程序编译和链接都没有问题,但我输入'A'却输出是G或?,是我字符输入错误还是什么原因

额外减小 发表于 2022-12-30 19:30:30

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

额外减小 发表于 2022-12-30 19:31:55

发错了

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

。对不起,发错了

额外减小 发表于 2022-12-30 19:41:22

一般不在scanf后面加”\n“吧{:10_255:}

liuzhengyuan 发表于 2022-12-31 08:56:23

scanf 不加\n

wsb1991abc 发表于 2022-12-31 18:01:48

我输入的是'A',按确定键后就是G,\n删除后还是没变,还是变成G,但我一开始是变成?,提示da没有初始化(但没错误和警告),然后我把第五行与第六行互换了,就一直是G

两手空空儿 发表于 2023-1-4 15:01:46

本帖最后由 两手空空儿 于 2023-1-4 15:04 编辑

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

额外减小 发表于 2023-1-4 15:30:36

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

极度支持
哇,真的是茅塞顿开{:10_257:}
楼主输入'A'的话,它第一个读到的是'这个字符,ASCII加32就是G
哈哈,厉害

夏日炎凉 发表于 2023-1-4 20:56:53

liuzhengyuan 发表于 2022-12-31 08:56
scanf 不加\n

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

wsb1991abc 发表于 2023-1-6 19:43:03

谢谢大神们的解答,真是让人茅塞顿开,疑惑顺利解开

ExiaGN001 发表于 2023-1-7 12:33:46

scanf内不建议写\n,在不明确用法时贸然使用会导致bug。

wsb1991abc 发表于 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错在哪里,是不是比较两个数大小的赋值顺序不对

陈尚涵 发表于 2023-3-6 22:24:02

首先,scanf可以加\n,只不过要每次输入换行
这个代码没问题,你自己的输入可能存在问题
应该直接输入A而非'A'
页: [1]
查看完整版本: 字符的输入输出问题