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()的区别) 的相关文章

  • uint8_t、uint16_t、... 的格式说明符?

    如果我有一个整数变量我可以使用sscanf如下所示 使用格式说明符 d sscanf line Value of integer d n my integer 在哪里可以找到格式说明符uint8 t uint16 t uint32 t an
  • 使用 sscanf 解析文本文件的整数和浮点值

    我想将包含这些字段的文件解析为整数和浮点变量 我尝试使用 fscanf strtok sscanf 来执行此操作 但它们都不起作用 文件的一些行 fed18 5 7 12 7 144997 8087 267345 100776 fedora
  • scanf 的工作并检查输入是否为 int

    我想检查给定的输入是否是整数输入 我不想将输入存储在字符串中 在看到 stackoverflow 上的几个问题以及点击和试用后 我创建了以下代码 while scanf d c num a 2 a n printf Please enter
  • Python流提取

    许多编程语言的标准库都包含 扫描器 API 用于从文本输入流中提取字符串 数字或其他对象 例如 Java 包括Scanner类 C 包括istream C 包括scanf Python 中与此等效的是什么 Python 有一个流接口 即继承
  • 我什么时候应该在 scanf() 中使用 & 符号

    在c中使用 符号时使用的规则是什么scanf struct Student char name 20 int id int main void struct Student std1 printf enter name and id of
  • C 中扫描包含空格的字符串

    在我的代码中 scanf s text printf s n text Input hi how are you Output hi and not hi how are you 我能做什么来修复它 Look at fgets http w
  • C For 循环跳过第一次迭代和循环 scanf 中的虚假数字

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

    这是一个问题C 程序控制流程不符合预期 它要求输入字符 in 但未能要求输入字符 x int foo int main int argc const char argv foo return 0 int foo char in char x
  • 为什么 gets(stdin) 返回一个整数?以及其他错误[重复]

    这个问题在这里已经有答案了 我是 C 编程新手 尽管我有 Java 经验 阅读了一些教程后 我决定开始解决编码挑战编码字节 https www coderbyte com 我尝试的第一个挑战是this one https www coder
  • 使用 sscanf 迭代

    我对 sscanf 函数了解不多 但我想做的是迭代一行整数 给定变量 char lineOfInts 我已将其作为注册用户输入的行 我能够很好地获得输入 但是当我尝试使用 sscanf 时 我想迭代每个 int 我知道如果我知道之前会有多少
  • 如何在先前输入后使用 C++ 中的“获取”函数?

    我尝试输入数据gets 函数 但每当程序执行到留置权时gets 它会忽略它 当我使用gets 没有之前的数据输入 它可以正常运行 但是当我在输入数据后使用它时 就会出现问题 这是在先前的数据输入之后使用它的代码 因此在执行中我无法将数据输入
  • 从 .txt C 读取

    我在C语言方面遇到了一些麻烦 我有一个 txt 文件 其中包含以下形式的各行 F 65 S 4 1 139 56 3704 26 和我的程序 p fopen dados txt r if p NULL printf n nNao foi p
  • scanf:内部带有宏(#define 常量)的模板

    我有一些像这样的代码 define MAXSIZE 100 int main char str MAXSIZE 1 scanf 100s str 问题是我仍然有 幻数 100 尽管定义了 MAXSIZE 有没有办法正确地将 MAXSIZE
  • scanf函数返回什么?

    scanf 在以下情况下返回的值是多少 int g int p scanf d g Originally int p scanf d g 我知道签名scanf函数是 int scanf const char format 是什么int该函数
  • 仅使用 fprintf 和 fscanf 替换文本文件中的字符串

    抱歉问这么简单的问题 这是我作业的一部分 我被困住了 如你看到的 include
  • 什么是 scanf("%*s") 和 scanf("%*d") 格式标识符?

    格式的实际用途是什么 在 scanf 中 如果这种格式存在 那么它背后一定有某种目的 下面的程序给出了奇怪的输出 include
  • 用 C 更快地读取文件

    嗯 我想知道是否有一种比使用 fscanf 更快地读取文件的方法 例如假设我有这个文本 4 55 k 52 o 24 l 523 i 首先 我想读取第一个数字 它给出了接下来的行数 令这个数称为N N 之后 我想读取 N 行 其中有一个整数
  • 将 scanf 与 NSString 一起使用

    我希望用户输入一个字符串 然后将输入分配给 NSString 现在我的代码如下所示 NSString word scanf s word The scanf http www cplusplus com reference clibrary
  • 有没有办法限制C中的scanf?

    我正在尝试编写一个正确的控制台应用程序以供链接列表使用 因此我需要在无限循环中扫描多个命令 并根据 switch case 选项执行某些操作 所以我为此使用 scanf 但问题是当下一行不包含数字时它会循环并开始打印甚至不是默认值 whil
  • 为什么 C 程序使用 Scanf 给出奇怪的输出?

    我目前正在学习 C 编程 并且遇到了这个奇怪的输出 Program will try functionalities of the scanf function 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