两道C入门题:scanf多组输入怎么判断,最大最小值怎么初始化
这两道题来自我学习 C 时做的牛客入门练习BC49 判断两个数的大小、BC95 最高分与最低分之差。题目本身不复杂但多组输入和初始化值得单独说清楚。1. 判断两个数我的原解法为什么是 2每组读两个整数输出它们的大小关系。我的原解法核心保持不变#includestdio.hintmain(void){inta,b;while(scanf(%d %d,a,b)2){charrelation;if(ab)relation;elseif(ab)relation;elserelation;printf(%d%c%d\n,a,relation,b);}return0;}测试输入3 2 2 2 -1 5输出32 22 -15我的出发点是“一组有两个数”因此循环应当在两个转换都成功赋值时进入。scanf的返回值不是读到的字符数也不是简单的成功或失败开关。四种输入四种情况输入情况%d %d的返回值能否处理完整一组3 22能3 x1不能第二次转换匹配失败x0不能第一次转换就匹配失败第一次赋值之前就遇到输入结束EOF不能如果先读到一个整数再遇到文件结束返回 1不是 EOF。EOF 是一个负的整型常量本机值为 -1但代码不该把某个实现值当成所有实现的规定。为什么 ! EOF 和按位取反容易误导while (scanf(%d, n) ! EOF)在输入x时可能继续进入循环返回 0不等于 EOF。错误字符没有被这个%d转换消耗再次尝试还可能失败。如果没安排恢复逻辑就会反复卡在同一个位置。单个整数也应该用 1检查一次完整转换。我原来写的“~2是 0”是错误的。本机 GCC 环境中~2 -3 ~0 -1 ~(-1) 0~是按位取反不是“判断输入成功”。即使在常见的 EOF-1 环境~scanf(...)仍然不能识别返回 0 的匹配失败也不能保证两个数都读到了。用有界字符串输入复现不把测试程序写成死循环#includestdio.hintmain(void){constchar*cases[]{3 2,3 x,x,};for(size_ti0;isizeofcases/sizeofcases[0];i){inta0,b0;intresultsscanf(cases[i],%d %d,a,b);if(resultEOF)printf(EOF\n);elseprintf(matched:%d\n,result);}return0;}输出matched:2 matched:1 matched:0 EOF这个实验验证的是转换和返回值不是完整的交互式输入恢复器。评测题保证合法输入时遇到不完整组直接退出就够用真实交互程序还要定义怎么报告错误、清理输入并重试。scanf也不能自动解决超出整数类型范围的外部输入问题严肃文本解析可以进一步学习fgets与strtol。2. 成绩差我为什么初始化成 max0、min100原题成绩范围是 0 到 100。我的想法是先给最大值一个不大于任何合法成绩的初值最小值给一个不小于任何合法成绩的初值。max 0 min 100这个思路在题目范围内成立不需要因为代码简单就否定它。问题在于如果以后遇到负数、温度或任意整数这两个初值不能直接照搬。原程序还先保存数组再分别扫描最大值和最小值。它能做这件事但没有必要存下所有成绩。每读一个数就可以同时更新两项统计量。更通用的写法用第一个数据初始化#includestdio.hintmain(void){intn,value;if(scanf(%d,n)!1||n0)return1;if(scanf(%d,value)!1)return1;intmin_valuevalue,max_valuevalue;for(inti1;in;i){if(scanf(%d,value)!1)return1;if(valuemin_value)min_valuevalue;if(valuemax_value)max_valuevalue;}printf(%lld\n,(longlong)max_value-(longlong)min_value);return0;}这里先保证有第一个值再让最大值和最小值都等于它。原题的差值最多 100int足够为了在本机常见的 32 位 int 环境扩展测试我在减法之前转成long long。这不代表所有 C 实现的任意 int 差值都必然能装进 long long。输入5 60 80 100 0 75输出100输入1 88输出0扩展测试3 -8 -2 -5输出6。后一个不属于成绩题范围只用来说明初始化方式可复用。为什么这次能省掉数组读完前 i 个值时我维护的两个量始终分别是这 i 个值的最小值和最大值。第 i1 个值只可能扩大边界不需要回看旧数据。因此时间 O(n)额外空间 O(1)。这不是“数组不好”而是输出只依赖两个统计量。如果下一步还要排序或找中位数需求就变了。原代码里还有两个小地方int arr[10000] {-1};只有第一个元素是 -1其余是零不是全部 -1。scanf(%d , value)的尾部空白可能让交互输入继续等待后续非空白字符这里只需要%d。3. 验证比“看着对”多一步本次比较程序测试了大于、等于、小于、负数以及错误首项、错误第二项和空输入成绩程序测试了单值、重复值、0/100 边界和扩展负数并与独立排序结果对照。两题真正可带走的不是两段答案而是两个习惯一组需要几次赋值就检查几次统计初值依赖题目范围想复用就把这个前提拿掉。

相关新闻

【C++进阶】02 Linux基本指令

【C++进阶】02 Linux基本指令

目录 1 Linux 目录树、绝对路径与相对路径 2 ls pwd cd 目录基础命令 pwd:打印当前工作目录 ls:列出目录内容 cd:切换目录 change directory 3 touch mkdir rmdir rm 文件目录增删 touch:创建普通空文件;修改文件…

2026/10/4 1:40:27 阅读更多 →
基于IMX6ULL的智能车载系统

基于IMX6ULL的智能车载系统

最近自己根据网上资料做的一个小项目,供大家参考,很多程序没有自己造轮子,参考了正点原子、化作尘等很多大佬的项目和程序,自己学习并修改而来,实现细节还有部分未完成。提供两篇借鉴思路的博主博客,学习一…

2026/10/4 1:40:27 阅读更多 →
DNS关系阐述

DNS关系阐述

2026/10/4 1:40:27 阅读更多 →

最新新闻

个人网上书店设计与实现:从需求分析到数据库设计的完整指南

个人网上书店设计与实现:从需求分析到数据库设计的完整指南

如果你正拿着“个人网上书店的设计与实现”这个题目,大概率已经到了一种状态:开题报告交了,论文大纲也憋出来了,但代码还没跑起来,脑子里对“这系统到底要做成什么样”还是模糊的。这个题目在计算机专业的毕业设计里属…

2026/10/4 3:07:23 阅读更多 →
机械臂抓取入门指南:从硬件选型到算法实现的关键路径

机械臂抓取入门指南:从硬件选型到算法实现的关键路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 3:07:23 阅读更多 →
Beamer主题与配色完全指南:从入门到自定义模板

Beamer主题与配色完全指南:从入门到自定义模板

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 3:07:23 阅读更多 →
ARIA属性与WCAG合规:无障碍适配的语义契约与工程实践

ARIA属性与WCAG合规:无障碍适配的语义契约与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 3:07:23 阅读更多 →
ZYNQ裸机双网口实战:从LWIP配置到中断优化的完整路径

ZYNQ裸机双网口实战:从LWIP配置到中断优化的完整路径

在嵌入式开发里,一提到ZYNQ,很多人第一反应就是上Linux跑复杂应用。但现实是,很多工业场景根本不需要操作系统,或者说,出于实时性、稳定性和成本考虑,裸机方案反而是更佳选择。尤其是“双网口”这个需求&am…

2026/10/4 3:07:23 阅读更多 →
段永平的100条思考:优秀,都是熬出来的

段永平的100条思考:优秀,都是熬出来的

段永平的100条思考:优秀,都是熬出来的内容来源:《何为道:段永平问答录》芒格书院编。今年年初,段永平在雪球上谈及AI时留下一句耐人寻味的话:“AI的历史车轮滚滚向前,会碾碎所有AI的泡沫的。”这…

2026/10/4 3:06:23 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →