news 2026/3/10 1:21:43

从课本到实战:用 if-else 写一个真实可用的学院奖励统计小程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从课本到实战:用 if-else 写一个真实可用的学院奖励统计小程序

摘要

在学习 C 语言if语句和if-else嵌套时,很多同学容易停留在“语法能背下来,但不知道怎么用”的阶段。
本文以教材中“交换两个变量并输出较大值”的示例为基础,把它放进一个真实的学校奖励统计场景中,完整演示:

  • 如何从键盘输入数据
  • 如何交换两个变量的值
  • 如何使用if-else判断并输出结果
  • else和最近未配对if的真实含义

通过一步一步拆解代码,让你真正明白:这些 if 规则不是死记硬背的,而是写程序时一定会遇到的问题。

描述(实际使用场景)

假设现在有这样一个场景:

学校正在统计各学院本学期获得的奖励数量。
甲学院获得了a项奖励,乙学院获得了b项奖励。

由于数据是人工录入的,有时会把甲、乙学院的数据顺序录反,所以程序需要做两件事:

交换甲学院和乙学院的奖励数值,保证数据顺序正确
在交换之后,输出奖励数量较多的学院所对应的奖励数

这个场景在实际中非常常见,比如:

  • 成绩排名时交换分数
  • 销售统计时修正录入顺序
  • 对比两个部门、两个班级的数据大小

而你学到的ifif-else、变量交换,正好就能解决这个问题。

题解答案(思路说明)

整个程序的思路可以拆成几步:

定义三个整型变量abt

  • a:甲学院奖励数
  • b:乙学院奖励数
  • t:临时变量,用来交换数据

从键盘输入ab的值

使用中间变量t完成ab的交换

使用if-else判断哪个值更大

输出较大的奖励数

这里的重点不在“交换本身”,而在于:

  • 程序执行是一步一步来的
  • else永远和最近那个还没配对的 if绑定

题解代码分析(完整代码 + 逐行讲解)

完整示例代码

#include<stdio.h>intmain(){inta,b,t;// a:甲学院奖励数,b:乙学院奖励数,t:中间变量printf("请输入甲学院和乙学院的奖励数:");scanf("%d,%d",&a,&b);// 交换 a 和 b 的值t=a;a=b;b=t;// 判断并输出较大值if(a>b)printf("奖励数量较多的是:%d\n",a);elseprintf("奖励数量较多的是:%d\n",b);return0;}

变量定义部分

inta,b,t;

这里定义了三个整型变量:

  • ab是核心数据
  • t专门用来做交换的中转站

很多初学者会问:“为什么一定要用 t?”

原因很简单,如果直接写:

a=b;b=a;

a原来的值就丢了,根本没机会保存。所以必须借助一个中间变量。

输入数据

scanf("%d,%d",&a,&b);

这行代码完成了两件事:

  • 从键盘读取两个整数
  • 分别存入ab

注意这里的细节:

  • &a&b地址

  • 输入格式要求用英文逗号分隔,比如:

    5,8

交换变量的核心逻辑

t=a;a=b;b=t;

可以按顺序理解:

  1. a原来的值放进t
  2. 再把b的值给a
  3. 最后用t把原来的a赋给b

这是 C 语言中最经典、最基础的交换写法,后面学排序、数组时还会反复用到。

if-else 判断逻辑

if(a>b)printf("奖励数量较多的是:%d\n",a);elseprintf("奖励数量较多的是:%d\n",b);

这里正好对应教材里的几个规则:

  • else不能单独存在
  • else永远匹配最近的、还没有配对的 if

因为每个分支里只有一条语句,所以可以省略{},但一旦写多行就必须加

示例测试及结果

示例 1

输入:

3,5

程序执行过程:

  • 初始:a = 3,b = 5
  • 交换后:a = 5,b = 3
  • 判断:a > b 成立

输出结果:

奖励数量较多的是:5

示例 2

输入:

10,2

程序执行过程:

  • 初始:a = 10,b = 2
  • 交换后:a = 2,b = 10
  • 判断:a > b 不成立,执行 else

输出结果:

奖励数量较多的是:10

时间复杂度

整个程序中:

  • 输入是常数操作
  • 交换是 3 条赋值语句
  • 判断是 1 次比较

不管输入什么数,执行步骤都是固定的。

时间复杂度:O(1)

空间复杂度

程序只使用了:

  • 3 个整型变量

没有数组、没有动态内存分配。

空间复杂度:O(1)

总结

通过这个小程序,你其实已经把好几个关键点连在了一起:

  • 学会了用中间变量交换数据
  • 真正理解了if-else的执行逻辑
  • 明白了else为什么总是和最近的if配对
  • 知道这些语法在真实场景中是怎么用的

后面你再学if 嵌套、成绩等级判断、区间判断时,本质都是在这个基础上往上加逻辑而已。

如果你愿意,下一步我可以帮你把这个例子扩展成 if 嵌套版本,比如输出“奖励多 / 奖励少 / 奖励相同”,刚好对上你教材后面的 4.1.2 内容。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/5 4:24:52

QJ小结

这个题目很有意思&#xff0c;它告诉我了一个很重要的事&#xff0c;编程考试可能要带草稿纸算规律&#xff0c;这个题目不把规律写下来容易弄错&#xff0c;一开始本想用数组的方法&#xff0c;但写完后发现用不接硬算且易 理解 上&#xff0c;可以直接硬算代码运行

作者头像 李华
网站建设 2026/3/9 10:50:57

Formily第三方UI库集成实战:从零到一的完整指南

Formily第三方UI库集成实战&#xff1a;从零到一的完整指南 【免费下载链接】formily &#x1f4f1;&#x1f680; &#x1f9e9; Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3 项目…

作者头像 李华
网站建设 2026/3/9 21:40:31

Sketch MeaXure终极指南:告别繁琐标注的设计革命

Sketch MeaXure终极指南&#xff1a;告别繁琐标注的设计革命 【免费下载链接】sketch-meaxure 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-meaxure 还在为设计稿标注而头疼吗&#xff1f;每次修改都要重新测量间距&#xff1f;开发同事总是抱怨标注不清晰&am…

作者头像 李华
网站建设 2026/3/3 14:32:11

面向高安全关键设施的空间视频智能感知与透明化管控关键技术研究

发布单位&#xff1a;镜像视界&#xff08;浙江&#xff09;科技有限公司本白皮书由镜像视界&#xff08;浙江&#xff09;科技有限公司基于其在空间视频智能感知、多源信息融合与空间态势管控领域的持续技术研究与工程实践编制完成。白皮书面向高安全关键设施这一典型复杂应用…

作者头像 李华