1025: 最大字符(scanf输入问题以及gets()和getchar()和scanf()的区别)

2023-05-16

给你三个ASCII字符(不含空白字符:包括空格、制表符\t、回车换行符\n),找出其中最大的那个

输入

输入包含三个字符,之间有一个空格隔开。

输出

输出ASII码最大的那个字符,占一行。

样例输入 复制

a b c

样例输出 复制

c

如下为我初次写错的代码

#include<stdio.h>
int main()
{
	char a,b,c;
	scanf("%c%c%c",&a,&b,&c);
	if(a>=b&&a>=c)
	{
		printf("%c",a);
	}
    else if(c>=b&&c>=a)
    {
    	printf("%c",c);
	}  
	else{
		printf("%c",b);
	}
    return 0;
}   

错误分析:当%c格式的时候,会读取任何字符,包括换行和空格。因此 scanf("%c%c%c",&a,&b,&c);如果输入a空格b空格c那么会把空格赋给b

scanf( )函数和gets( )函数都可用于输入字符串,getchar()函数用于读取字符;

scanf()函数可以读取所有类型的变量,不能接收空格,遇到空格、回车和Tab键都会认为输入结束。

gets()函数用于输入字符串,可以接收空格,遇到回车认为输入结束;

getchar()函数可以接受空格,回车等字符;

gets()
gets函数是输入一行字符串,以回车结束,并且回车键会被过滤掉,不会被读到字符串中。

getchar()
getchar()是读取一个字符,包括回车键也会被读成一个字符。

scanf()
scanf 的功能是通过键盘给程序中的变量赋值”。
会不会读取空格键
这个是分情况的。
有一个特殊的格式 %c
当%c格式的时候,会读取任何字符,包括换行和空格。

当其他格式的时候(不包括正则表达式), 如果空格或者换行出现在前面,会被读取并抛弃
在后面的时候,不会读取,而只是检测。

(%d、%f读入数值类型,会自动跳过多余的空格和换行,%s遇到空格和换行会停止,%c就可以读入空格和换行。 )

比如
缓冲中是 空格123空格
以%d读取, 那么第一个空格会被抛弃。读入123三个数值,发现下一个是空格,那么停止。
但是这个结尾的空格 还在缓冲区里面。

正则表达式的时候,看正则写法,决定是否抛弃。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1025: 最大字符(scanf输入问题以及gets()和getchar()和scanf()的区别) 的相关文章

  • Scanf 不读取双精度

    我正在尝试阅读double持续从用户使用中获取价值scanf Code printf Enter A value n double input int result scanf f input printf INPUT f n input
  • 我什么时候应该在 scanf() 中使用 & 符号

    在c中使用 符号时使用的规则是什么scanf struct Student char name 20 int id int main void struct Student std1 printf enter name and id of
  • C For 循环跳过第一次迭代和循环 scanf 中的虚假数字

    我正在为学校创建一个邮件标签生成器 但遇到了一些问题 我的程序是获取从 0 到 10 的个人的全名 地址 城市 州和邮政编码 运行我的程序时 我遇到两个主要问题 for 循环跳过全名 safergets 并转到地址safergets 我继续
  • Char* p 和 scanf

    我一直在尝试寻找以下代码失败的原因 但找不到 所以请原谅我的无知 让我知道这里发生了什么 include
  • scanf() 在操作系统中如何工作?

    我一直想知道 scanf printf 在硬件和操作系统级别实际上是如何工作的 数据在哪里流动以及操作系统在这些时间里到底在做什么 操作系统进行哪些调用 等等 scanf 和 printf 是 libc C 标准库 中的函数 它们分别调用
  • C 读取带空格的字符串

    我正在尝试读取一个可能包含或不包含空格的字符串 你好世界 通过对用户输入的数字选择菜单执行以下操作 这只是我正在尝试做的事情的一个小复制品 include
  • fscanf 无法正确读取浮点数

    这是一个家庭作业问题 我在使用 fscanf 从文本文件读取浮点值时遇到问题 基本上我试图从文件中读取浮点值并将它们存储在动态数组中 输入文件每行有两个浮点数 所以一行可能是 0 85 7 34 不带引号 所以我尝试使用 fscanf fp
  • 从文本文件中读取字符串和整数

    假设我有一个如下所示的文件 51 41 52 07 52 01 51 22 50 44 49 97 Coal Diggers 77 26 78 33 78 29 78 12 77 09 75 74 Airplane Flyers 31 25
  • scanf 的四边形和参数类型

    我用
  • 如何读取长度未知的输入字符串?

    如果我不知道这个词有多长 我就无法写char m 6 这个词的长度可能有十到二十长 我该如何使用scanf从键盘获取输入 include
  • scanf函数返回什么?

    scanf 在以下情况下返回的值是多少 int g int p scanf d g Originally int p scanf d g 我知道签名scanf函数是 int scanf const char format 是什么int该函数
  • %d 为长整型

    下面的代码正确吗 据我的理解 它应该不能正常工作 但是在Dev C 编译器上 它可以正常工作 有人可以详细解释一下吗 include
  • Java 中的 sscanf 等效项[重复]

    这个问题在这里已经有答案了 可能的重复 用于使用已知模式解析字符串中的值的 sscanf 的 Java 等效项是什么 https stackoverflow com questions 8430022 what is the java eq
  • 使用 scanf 读取行或在特殊字符上中断

    是否可以使用 scanf 读取文本行 排除 n并在特殊 选择的 字符上中断 但包括该字符 这是我现在的表情 while scanf 49 n c x 1 但这不包括 是否可以中断阅读 但也读那个字符 好的 我正在使用约翰内斯 绍布 利特 c
  • 漏洞利用开发 - GETS 和 Shellcode

    试图了解更多有关利用开发和构建 shellcode 的信息 但遇到了一个我不明白背后原因的问题 为什么我无法运行 execve bin sh 等 shellcode 并生成可以与之交互的 shell 另一方面 我可以创建一个反向 bind
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • Python 中 Matlab 'fscanf' 的等价物是什么?

    Matlab函数fscanf 似乎很强大 python 或numpy 中是否有相同的等效项 具体来说 我想从文件中读取矩阵 但我不想迭代每一行来读取矩阵 类似的东西 来自 matlab 用于读取 2D 1000x1000 矩阵 matrix
  • fscanf 和 EOF 中的否定扫描集

    我的文件中有一个以逗号分隔的字符串列表 姓名 1 姓名 2 姓名 3 我想跳过所有逗号来阅读这些名字 我写了以下循环 while true if fscanf file my string 1 break 然而 它总是比预期多执行一次 给定
  • 错误:格式中未知的转换类型字符“l” - 扫描 long long

    我想得到long long使用标准 IO 功能从控制台scanf 我开始于 lld scanf lld rule 这会引发 error unknown conversion type character l in format Werror
  • 输入缓冲区刷新

    考虑下面的代码 include

随机推荐

  • C.for循中表达式的省略

    省略第一个表达式 for 表达式2 表达式3 注意第一个分号不能省 xff01 xff01 xff01 省略第二个表达式 for 表达式1 表达式3 死循环 省略第三个 for 表达式1 表达式2 最后的表达式的分号就不要了 可以在循环体内
  • C语言新收获

    if x 语句3 表达式是变量 xff0c 如果x不等于0 xff0c 则条件判断结果为真 xff0c 执行语句3 if 1 语句4 表达式是非0整数 条件判断结果为真 xff0c 执行语句4 if 0 语句5 表达式是整数0 xff0c
  • C语言新收获

    若a 61 3 xff0c b 61 2 xff0c c 61 1 xff0c 则 d 61 a gt b xff0c 由于a gt b为真 xff0c 因此关系表达式a gt b的值为1 xff0c 所以赋值后d的值为1 f 61 a g
  • C语言swith语句小细节

    1 swtich 中的 里的数据只能为整形或字符型 xff0c 不能为浮点型 xff01 2 swith x xff5b case 1 语句1 case 2 xff1a 语句2 case 3 语句3 xff1b break case 4 语
  • switch语句每个csse后面可以跟多个值吗

    如果今天是星期三 xff0c 后天就是星期五 xff1b 如果今天是星期六 xff0c 后天就是星期一 我们用数字1到7对应星期一到星期日 给定某一天 xff0c 请你输出那天的 后天 是星期几 输入格式 xff1a 输入第一行给出一个正整
  • c学习笔记

    指针之间可以比较大小 xff0c 前提是两个指针指向同一数组 如 char a 20 xff1b char p1 61 a 43 1 char p2 61 a 43 2 则p2 gt p1
  • zzulioj1150

    数数多少个整数 题目描述 小明的老师给小明出了一道题目 xff1a 数数一篇文章出现了多少个数字 xff0c 请你帮帮他吧 输入 输入一个字符串 xff0c 由空格 英文字母 数字组成 xff0c 以回车结束 xff0c 长度小于1000
  • 1152: 二分搜索

    题目描述 在有序序列中查找某一元素x 输入 首先输入一个正整数n n lt 61 100000 xff0c 表示该序列有n个整数 xff0c 然后按从小到大的顺序输入n个整数 xff1b 接着是一个正整数m xff0c 表示有m次查找 xf
  • C语言反思提醒自己

    例如 xff1a char fun char p char s 101 return s 这样将不能正确返回字符串s xff0c 因为在离开fun 函数后该内存空间将不再存在 xff0c 应该使用malloc函数申请内存 xff0c 该函数
  • 按键-第1季第9部分-朱有鹏-专题视频课程

    按键 第1季第9部分 1716人已学习 课程介绍 本课程是 朱有鹏老师单片机完全学习系列课程 第1季第9个课程 xff0c 综合解决了独立按键和矩阵式按键的处理方法 xff0c 涉及到 xff1a IO的输入输出 按键抖动和消抖 中断的引入
  • C语言反思提醒自己

    int a scanf 34 d 34 amp a 当键入07时 xff0c a中存的是7 xff0c 自动舍弃前导0
  • zzulioj1168(账单)

    题目描述 每到月末 xff0c 小明就会对这个月的支出账单进行整理和统计 如今电脑已经普及大学校园 xff0c 所以小明想让电脑帮忙做这件事情 聪明的你就为小明编一个程序来完成这件事情吧 输入 多实例测试 首先输入一个整数ncase xff
  • 总结java中关于继承中的成员属性和成员方法的多态细节

    问题背景 xff1a 下面的代码会输出什么 xff1f 40还是20 xff1f public class Animal public int age 61 40 public void eat System out println 34
  • 【java】浅谈instanceof关键字

    作用 xff1a 用于判断某个对象是否是某个特定类或该特定类的一个实例 返回一个布尔类型 一般格式 object instanceof class class可以是类也可以是接口 xff09 具体使用 xff1a 分编译阶段和运行阶段 xf
  • zzulioj 1185: 添加记录(结构体专题)

    题目描述 有一学生成绩表 xff0c 包括学号 姓名 3门课程成绩 已知该成绩表按学号升序排序 请编程实现 xff0c 添加一个新的学生信息 xff0c 且使成绩表仍按学号有序 xff1b 若待添加的学号与已有学号重复 xff0c 则输出错
  • 初学Java小细节自总

    1 如果子类的构造方法中没有显示地调用父类的构造方法 xff0c 那么Java编译器会自动在子类的构造方法中插入一条默认的super 语句 xff0c 来调用父类的无参构造方法 因此 xff0c 如果父类没有提供无参构造方法 xff0c 而
  • 如何配置Java的环境变量

    1 找到电脑的环境变量 xff08 直接在电脑左下角放大镜搜环境变量即可 xff09 xff1a 2 在环境变量的系统变量里新建一个名称为 xff1a JAVA HOME变量值为jdk的安装目录 xff08 直接点浏览目录去找jdk的安装根
  • 字符集、ASCII、GBK、UTF-8、Unicode、乱码、字符编码、解码问题

    首先计算机是美国人发明的用来处理数据的 xff0c 那么问题来了美国人如何和计算机交流呢 xff1f 怎么把他们的字符存储到计算机里面呢 美国需要存储的字符仅仅只是一些英文大小写 xff0c 数字 xff0c 标点 xff0c 和一些特殊字
  • 1022: 三整数排序(利用三目运算符可以使程序更加简洁)

    从键盘输入三个整数x y和z xff0c 按从大到小的顺序输出它们的值 输入 输入三个整数x y和z 输出 按从大到小的顺序输出它们的值 样例输入 复制 20 16 18 样例输出 复制 20 18 16 自己的思路 xff1a 首先找到最
  • 1025: 最大字符(scanf输入问题以及gets()和getchar()和scanf()的区别)

    给你三个ASCII字符 不含空白字符 包括空格 制表符 t 回车换行符 n xff0c 找出其中最大的那个 输入 输入包含三个字符 xff0c 之间有一个空格隔开 输出 输出ASII码最大的那个字符 xff0c 占一行 样例输入 复制 a