scanf输入字符型

img


这个题目为什么不能选D啊,选c的话,那里空出来一个字母又是什么意思啊

scanf 里面要原样输入,你如果选D就要输入 a=1这些
C其实题目打印的有问题,它的格式化字符串是对的,后面变量错了

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7767991
  • 你也可以参考下这篇文章:c语言里面用scanf连续输入字符型数据常见问题
  • 你还可以看下c语言参考手册中的 c语言-scanf()
  • 除此之外, 这篇博客: 【C语言】解决C语言题目中的多组输入问题中的 二、scanf在读取字符时 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 例题奉上

    int main() {
        char c=0;
        while(scanf("%c",&c)!=EOF)
        {
            getchar();//注意scanf输入字符和输入数字可是不一样的哦,一个会忽略\n,一个并不会忽略\n哦
            if(c=='a'||c=='A'||c=='e'||c=='E'||c=='i'||c=='I'||c=='o'||c=='O'||c=='u'||c=='U')
            {
                printf("Vowel\n");
            }
            else
            {
                printf("Consonant\n");
            }
        }
        return 0;
    }
    

    大家要知道,我们在scanf中输入我们数据结束之后,其实都是以输入回车来作为输入结束标志的。我们也知道这个回车其实也是一个字符,所以,我们在实现多组输入时,总是会遇到解决字符的问题,所以我们为了程序的功能实现,要把\n用getchar吸收掉

  • 您还可以看一下 传智老师的2016年c语言教程第3天课程中的 07 使用scanf函数一次接收输入多个数据小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    根据参考资料,这个问题可能是因为scanf函数输入字符类型数据时,并不会跳过空格,而输入其他类型的数据时会跳过空格。所以建议在输入字符类型数据时,在格式字符串后加上一个getchar函数,将输入的换行符吸收掉。

    具体修改方法:假设需要输入一个字符型变量c,可将原来的代码:

    scanf("%c", &c);

    修改为:

    scanf("%c", &c); getchar();

    如果还是不能解决问题,建议在问题描述中提供具体的代码和输入结果,以便更好地定位问题所在。