C 语言入门 Day 2:处理多种输入类型 —— 字符串与整数
C 语言入门 Day 2:处理多种输入类型 —— 字符串与整数
在千问的帮助下
目标:编写一个能同时询问用户姓名和登机口编号的 C 程序
核心知识点:char[]、int、scanf格式符匹配、&取地址符
环境:Windows + VS Code + GCC (MSYS2 UCRT64)
🧩 完整代码
1 |
|
🔍 逐行解析
1. char name[50];
作用:声明一个字符串变量,用于存储乘客姓名
关键点:最多存 49 个字符 + 1 个结束符 \0
2. int gate;
作用:声明一个整数变量,用于存储登机口编号
关键点:int 类型只能存整数(不能存小数或字母)
3. scanf("%s", name);
作用:读取一个单词(不含空格)存入 name
注意:数组名 name 本身代表地址,不需要加 &
4. scanf("%d", &gate);
作用:读取一个整数存入 gate
注意:普通变量 gate 必须加 & 才能传地址
⚠️ 常见错误:写成 scanf("%s", &gate) → 导致读取失败,输出垃圾值
5. printf("Gate: %d\n", gate);
作用:输出整数值
格式说明:%d 是整数的占位符,必须与 int 类型匹配
🧠 关于 & 的简单理解
name是“一排盒子”(数组),直接告诉scanf起始位置gate是“一个盒子”(普通变量),需要用&gate告诉scanf它在哪
💡 千问说:现在先记住规则,指针课会彻底讲透!
🧪 特殊输入测试
| 用户输入 | 实际读取值 | 原因 |
|---|---|---|
12A |
12 |
遇非数字 A 立即停止 |
23.5 |
23 |
遇小数点 . 停止 |
-5 |
-5 |
负号被识别为整数一部分 |
abc |
未定义(可能为 0 或随机值) | 无数字可读 |
✅ 这是 C 语言的标准行为,不是程序错误!
🛠 编译与运行命令
1 | ### 编译: |
✅ 预期输出:
1 | Passenger name? TangShiMei |
小结一下
✅ char[] 存储字符串
✅ int 存储整数
✅ scanf(“%s”, name) 正确读取姓名
✅ scanf(“%d”, &weight) 正确读取重量 ,里面的 & 不要忘记!!
✅ printf 格式化输出清晰美观
❌ 常见错误与解决
| 错误现象 | 原因 | 修复方法 |
|---|---|---|
输出 Gate: 13874 |
用 %s 读 int 变量 |
改为 scanf("%d", &gate); |
| 程序不等待输入 | 项目路径含中文/特殊符号 | 使用纯英文路径(如 D:\c_practice) |
| 登机口显示为 0 | 输入了非数字内容 | 提示用户输入纯数字 |
💡 学习建议
- 自己敲代码,不要复制粘贴 —— 手动输入能强化记忆
- 故意制造错误(如
%s读整数),观察报错 - 项目路径用纯英文 —— 避免 MSYS2/GCC 的隐藏坑
- 测试异常输入(字母、小数)—— 培养健壮性思维
📅 下一步可以学
- 使用
if判断登机口是否在有效范围(1~30) - 用循环实现“输错重新输入”
- 初步接触输入验证逻辑
结束之小练习
🎯 练习题目:机场行李托运登记系统
任务:编写一个 C 程序 baggage_check.c,完成以下功能:
询问乘客姓名(字符串)
询问行李重量(整数,单位:公斤)
打印行李标签,包含姓名和重量
代码示例👇
1 |
|
这里是千问的话👇
记住:今天你不仅学会了处理两种数据类型,
更开始思考“用户会怎么乱输”——
这正是从“写代码”走向“做产品”的第一步。
继续加油!✈️💪
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 TangShiMei的小空间!
评论






