输入输出与分支语句:让程序能说会听
从 Hello World 开始?不!从实用代码开始!
是时候写代码了
前两节我们掌握了:
- ✅ 如何安装 Visual Studio
- ✅ 如何创建项目
- ✅ 如何编译运行
- ✅ 程序运行的原理
接下来,我们要开始写真正有用的代码了!
不从 Hello World 开始
为什么不讲 Hello World?
传统教学:
#include <stdio.h>
int main() {
printf("Hello World
");
return 0;
}
问题: 许多人的”不归路”从 Hello World 开始
我们的方式: 从实用代码开始,学了就能用!
第一个关键技能:英文输入法
⚠️ 最常见的错误
写代码必须用英文输入法!
需要英文符号
int main() {
// 这些符号必须是英文的:
( ) // 圆括号
[ ] // 方括号
{ } // 花括号
; // 分号
, // 逗号
}
中文符号的后果
错误示例:
int main(){ // ❌ 中文括号和花括号
return 0; // ❌ 中文分号
}
结果: 红色波浪线 + 编译失败
如何识别错误
Visual Studio 会提示:
错误列表窗口:
第3行:错误 C2143: 语法错误: 缺少";"
第1行:错误 C2059: 语法错误:"("
打开错误列表窗口
如果没有看到错误提示窗口:
视图(View) → 错误列表(Error List)
错误列表会显示:
- 错误所在行号
- 错误类型
- 错误描述
回顾:变量声明
声明一个变量
long long n = 0;
拆解说明:
|
部分 |
含义 |
|
long long |
变量类型(整数,范围大) |
|
n |
变量名 |
|
= |
赋值号(不是等于号!) |
|
0 |
初始值 |
|
; |
语句结束 |
long long 类型
范围: -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807
特点: 只能存储整数
修改变量的值
long long n = 0; // 初始值为 0
n = 10; // 改为 10
n = 100; // 改为 100
n = -50; // 改为 -50
记住: = 是赋值号,不是等于号!
分支语句:if
if 语句结构
if (条件) {
// 条件成立时执行
}
组成部分:
- if 关键字
- ( ) 圆括号:里面写条件(表达式)
- { } 花括号:里面写要执行的代码
什么是表达式?
表达式 = 运算符 + 操作数 + 括号
示例:
5 + 3 // 加法表达式
10 - 2 // 减法表达式
a * b // 乘法表达式
(x + y) / 2 // 复杂表达式
特点: 表达式会产生一个结果
关系运算符
新的运算符家族
之前学过: 算术运算符(+ – * / %)
目前学习: 关系运算符(判断条件)
六大关系运算符
|
运算符 |
读法 |
意义 |
示例 |
|
== |
等于 |
是否相等 |
n == 0 |
|
!= |
不等于 |
是否不相等 |
n != 0 |
|
> |
大于 |
左边是否大于右边 |
n > 0 |
|
< |
小于 |
左边是否小于右边 |
n < 0 |
|
>= |
大于等于 |
左边是否≥右边 |
n >= 0 |
|
<= |
小于等于 |
左边是否≤右边 |
n <= 0 |
⚠️ 重点:两个等号
= // 一个等号:赋值号
== // 两个等号:等于号(判断)
强烈提议读作:”是否等于”
关系运算符的结果
只有两种结果:
- 条件成立 → 1(真)
- 条件不成立 → 0(假)
示例代码
long long n = 0;
// 各种关系运算的结果
n == 0 // 结果:1(真)
n > 0 // 结果:0(假)
n < 0 // 结果:0(假)
n != 0 // 结果:0(假)
n >= 0 // 结果:1(真)
n <= 0 // 结果:1(真)
运算符优先级
算术运算符 > 关系运算符
if (5 + 3 > 7) {
// 先算:5 + 3 = 8
// 再判断:8 > 7 → 真
}
if 语句详解
完整示例
long long n = 0;
if (n == 0) {
printf("n 等于 0
");
printf("这是第二句
");
}
执行过程:
1. 判断条件:n == 0
2. 结果为 1(真)
3. 执行花括号中的代码
花括号的作用
有花括号: 可以包含多条语句
if (n == 0) {
printf("第一句
");
printf("第二句
");
printf("第三句
");
}
没有花括号: 只关联一条语句
if (n == 0)
printf("只有这一句
");
printf("这句总是执行
"); // 不属于 if
if 的执行逻辑
判断条件
↓
结果是1?
↙ ↘
是 否
↓ ↓
执行 跳过
引入输入输出功能
include 语句
需要的功能: 控制台输入输出
引入方法:
#include <stdio.h>
作用: 引入标准输入输出库
位置: 必须写在文件开头
为什么需要 include?
程序需要功能 → 引入对应的库 → 就能使用功能
后面几节会详细讲解,目前先会用!
输出功能:printf
基本用法
printf("要输出的内容
");
示例:
printf("Hello
");
printf("这是第二行
");
输出:
Hello
这是第二行
转义字符
|
符号 |
含义 |
|
换行 |
|
|
制表符(Tab) |
|
|
\ |
反斜杠 |
|
“ |
双引号 |
输出变量
long long n = 100;
printf("n 的值是:%lld
", n);
输出:
n 的值是:100
格式化符号:
|
类型 |
格式符 |
|
int |
%d |
|
long long |
%lld |
|
float |
%f |
|
double |
%lf |
|
char |
%c |
输入功能:scanf
基本用法
long long n;
scanf("%lld", &n);
含义: 从键盘读取一个整数,存到变量 n 中
⚠️ 注意 & 符号
scanf("%lld", &n); // ✅ 正确:有 &
scanf("%lld", n); // ❌ 错误:没有 &
为什么需要 &? 后面会详细讲解,目前记住就行
完整示例
#include <stdio.h>
int main() {
long long n;
printf("请输入一个数字:
");
scanf("%lld", &n);
printf("你输入的数字是:%lld
", n);
return 0;
}
运行效果:
请输入一个数字:
123 ← 用户输入
你输入的数字是:123
断点调试
什么是断点?
断点 = 暂停点
作用: 让程序运行到某一行时暂停,方便观察
设置断点
方法: 在行号左侧点击鼠标左键
int main() {
long long n;
printf("请输入:
");
scanf("%lld", &n); // ← 在这里打断点(红点)
printf("你输入了:%lld
", n);
return 0;
}
开始调试
快捷键: F5
或: 点击”本地 Windows 调试器”
查看变量值
方法: 鼠标悬停在变量名上
程序暂停后
↓
鼠标放到变量 n 上
↓
显示:n = 123
调试技巧
继续运行: F5
单步执行: F10
停止调试: Shift + F5
综合示例:简单程序
判断数字正负
#include <stdio.h>
int main() {
long long n = 0;
printf("请输入一个整数:
");
scanf("%lld", &n);
if (n > 0) {
printf("这是一个正数
");
}
if (n == 0) {
printf("这是零
");
}
if (n < 0) {
printf("这是一个负数
");
}
return 0;
}
运行效果1:
请输入一个整数:
5
这是一个正数
运行效果2:
请输入一个整数:
-3
这是一个负数
计算赔偿金额
#include <stdio.h>
int main() {
long long chickens = 0; // 撞死的鸡数量
long long price = 200; // 每只鸡的价格
long long total = 0; // 总赔偿
printf("请输入撞死的鸡的数量:
");
scanf("%lld", &chickens);
total = chickens * price;
printf("撞死了 %lld 只鸡
", chickens);
printf("每只 %lld 元
", price);
printf("需要赔偿:%lld 元
", total);
return 0;
}
运行效果:
请输入撞死的鸡的数量:
5
撞死了 5 只鸡
每只 200 元
需要赔偿:1000 元
完整代码模板
标准框架
#include <stdio.h>
int main() {
// 1. 声明变量
long long n = 0;
// 2. 输出提示
printf("请输入:
");
// 3. 输入数据
scanf("%lld", &n);
// 4. 处理逻辑
if (n > 0) {
printf("是正数
");
}
// 5. 输出结果
printf("结束
");
return 0;
}
本文要点回顾
- ✨ 英文输入法:写代码必须用英文符号
- ✨ 错误列表:查看编译错误的利器
- ✨ 关系运算符:== != > < >= <=
- ✨ if 语句:条件判断,选择执行
- ✨ printf:输出到控制台
- ✨ scanf:从键盘输入(记得 &)
- ✨ 断点调试:暂停程序,查看变量
记忆口诀
英文输入写代码,符号错误编不过。
关系运算判条件,if 语句做选择。
printf 输出看结果,scanf 输入别忘&。
实战练习
练习1:判断奇偶
任务: 输入一个数,判断是奇数还是偶数
提示: 用 % 取余运算符
点击查看答案
cpp #include <stdio.h> int main() { long long n; printf(“请输入一个整数:
“); scanf(“%lld”, &n); if (n % 2 == 0) { printf(“%lld 是偶数
“, n); } if (n % 2 != 0) { printf(“%lld 是奇数
“, n); } return 0; }
练习2:计算器
任务: 输入两个数,输出它们的和、差、积、商
点击查看答案
cpp #include <stdio.h> int main() { long long a, b; printf(“请输入第一个数:
“); scanf(“%lld”, &a); printf(“请输入第二个数:
“); scanf(“%lld”, &b); printf(“和:%lld
“, a + b); printf(“差:%lld
“, a – b); printf(“积:%lld
“, a * b); if (b != 0) { printf(“商:%lld
“, a / b); } return 0; }
练习3:找出最大值
任务: 输入两个数,输出较大的那个
点击查看答案
cpp #include <stdio.h> int main() { long long a, b; printf(“请输入第一个数:
“); scanf(“%lld”, &a); printf(“请输入第二个数:
“); scanf(“%lld”, &b); if (a > b) { printf(“最大值是:%lld
“, a); } if (b > a) { printf(“最大值是:%lld
“, b); } if (a == b) { printf(“两个数相等:%lld
“, a); } return 0; }
练习4:判断分数等级
任务: 输入分数(0-100),判断等级
- 90-100:优秀
- 60-89:及格
- 0-59:不及格
点击查看答案
cpp #include <stdio.h> int main() { long long score; printf(“请输入分数(0-100):
“); scanf(“%lld”, &score); if (score >= 90) { printf(“优秀
“); } if (score >= 60 && score < 90) { printf(“及格
“); } if (score < 60) { printf(“不及格
“); } return 0; }
互动时间
思考题:
- 为什么 = 和 == 容易混淆?如何避免?
- scanf 为什么需要 & 符号?
- 如何判断一个数是否在某个范围内?
如果本文对你有协助,欢迎:
- 点赞支持
- 关注不迷路
- 评论区分享你的第一个交互程序
- ⭐ 收藏慢慢看
—-本文为”C++ 大白话”系列第 8 篇