1. 章节概述顺序程序设计是 C 语言中最基础、最核心的程序结构。本章在读者已经掌握基本数据类型、常量和变量的基础上介绍 C 语句的分类、数据的输入输出方法以及并行的顺序结构程序设计思想。所谓「顺序结构」是指程序严格按照语句书写的先后顺序自上而下逐条执行既没有条件跳转也没有循环往复。它是结构化程序设计三种基本结构顺序、选择、循环中最简单的一种也是初学者学习 C 编程的第一站。本章重点包括C 语句的分类控制语句、函数调用语句、表达式语句、空语句、复合语句数据输出printf 函数及其格式控制符数据输入scanf 函数及取地址符字符输入输出putchar 与 getchar顺序程序设计方法通过典型例题掌握「读入 → 处理 → 输出」的编程思路。2. 知识要点2.1 C 语句的分类C 语言的语句分为五大类1控制语句用于完成一定的控制功能共 9 种。控制语句作用if()...else...条件语句for()...循环语句while()...循环语句do...while()循环语句continue结束本次循环语句break中止执行 switch 或循环语句switch多分支选择语句return从函数返回语句goto转向语句2函数调用语句由一次函数调用加一个分号构成例如printf(Hello, C!\n);3表达式语句由一个表达式加一个分号构成例如a3;// 赋值语句xy;// 加法运算语句但不保存结果一般无意义i;// 自增语句4空语句只有一个分号什么也不做常作为循环体的“占位语句”。;// 空语句5复合语句用一对花括号{}把多条语句括起来在语法上当作一条语句使用。{inttemp;tempa;ab;btemp;}2.2 数据输出printf 函数printf 函数的一般格式printf(格式控制,输出列表);格式控制部分包含普通字符原样输出和格式声明以%开头由格式字符结尾。常用格式字符如下表格式字符说明%d按十进制有符号整数输出%u按十进制无符号整数输出%f按小数形式输出单、双精度实数默认保留 6 位小数%e按指数形式输出实数默认保留 6 位小数%c输出单个字符%s输出字符串%o按八进制无符号整数输出%x按十六进制无符号整数输出%%输出百分号本身附加格式修饰符示例printf(%5d\n,123);// 输出结果宽5右对齐 123printf(%-5d!\n,123);// 输出结果宽5左对齐123 !printf(%.2f\n,3.14159);// 输出3.14printf(%10.2f\n,3.14159);// 输出宽10保留2位 3.142.3 数据输入scanf 函数scanf 函数的一般格式scanf(格式控制,地址列表);与 printf 最大的不同是变量前必须加取地址符表示把输入的数据存放到变量的地址中。inta;scanf(%d,a);// 正确a 是变量 a 的地址需要特别注意的几点双精度输入要用%lfdoublex;scanf(%lf,x);// double 类型输入必须用 %lf多个输入项之间的分隔inta,b;scanf(%d%d,a,b);// 输入时可用空格、Tab 或回车分隔scanf(%d,%d,a,b);// 格式控制中有逗号输入时必须原样输入逗号%c会读入空白字符连续读取字符时要小心charc1,c2;scanf(%c%c,c1,c2);// 若输入 a bc1ac2 空格2.4 字符数据的输入输出putchar 输出单个字符charchA;putchar(ch);// 输出字符 Aputchar(\n);// 控制换行getchar 输入单个字符charch;chgetchar();// 从键盘读入一个字符putchar(ch);// 再输出该字符2.5 顺序程序设计的一般步骤编写顺序结构的程序通常遵循以下步骤读题明确已知条件输入和求解目标输出确定算法找出从输入到输出的计算公式或步骤画流程图可选用传统流程图或 N-S 流程图描述编写程序按「头部声明 → 变量定义 → 输入 → 计算 → 输出」的顺序书写调试运行用多组边界数据测试程序正确性。3. 案例分析案例 1已知半径求圆周长和面积题目从键盘输入圆的半径 r计算并输出圆的周长 l 和面积 s。圆周率取 3.14159。解析这是一个最典型的顺序结构程序涉及三个公式周长l 2πr面积s πr²#includestdio.h#definePI3.14159// 用宏定义符号常量圆周率intmain(){doubler,l,s;// 定义半径、周长、面积printf(请输入圆的半径);scanf(%lf,r);// double 类型输入必须用 %lfl2*PI*r;sPI*r*r;printf(半径为 %.2f 的圆周长 %.2f面积 %.2f\n,r,l,s);return0;}运行示例请输入圆的半径2.5 半径为 2.50 的圆周长 15.71面积 19.63要点double变量在 scanf 中用%lf在 printf 中既可以用%f也可以用%lf但习惯上输出用%f。案例 2华氏温度转摄氏温度题目输入华氏温度 F要求输出摄氏温度 C。公式为C 5 / 9 × (F − 32)解析本题的关键陷阱在于5/9。若直接写5 / 9 * (F - 32)由于5/9是整数除法结果为 0最终 C 恒为 0。正确做法是把除法和乘法调换顺序或将5或9写成浮点数。#includestdio.hintmain(){doubleF,C;printf(请输入华氏温度);scanf(%lf,F);C5.0/9.0*(F-32);// 正确写法printf(摄氏温度为%.2f\n,C);return0;}运行示例请输入华氏温度64 摄氏温度为17.78要点牢记整数除法和浮点数除法的区别。整数相除结果仍为整数舍去小数部分这是初学者最易犯的错误之一。案例 3三位数反向输出题目输入一个三位正整数依次输出其百位、十位、个位数字的反序组合即个位在左、百位在右。解析通过取余%和整除/分解出每一位数字。#includestdio.hintmain(){intn,a,b,c;// n 为原数a、b、c 分别为百、十、个位printf(请输入一个三位正整数);scanf(%d,n);an/100;// 百位bn/10%10;// 十位先整除 10再取余 10cn%10;// 个位printf(反向输出为%d%d%d\n,c,b,a);return0;}运行示例请输入一个三位正整数123 反向输出为321要点掌握%和/的组合使用规律取个位用n % 10去个位用n / 10依此类推。案例 4大写字母转小写字母题目从键盘输入一个大写字母输出对应的小写字母。解析依靠 ASCII 码规律——同一字母的大写与小写 ASCII 码值相差 32即a - A 32因此ch 32即可完成转换。#includestdio.hintmain(){charch;printf(请输入一个大写字母);chgetchar();// 读入一个字符chch32;// 大写 - 小写printf(对应的小写字母);putchar(ch);putchar(\n);return0;}运行示例请输入一个大写字母A 对应的小写字母a要点字符在内存中实际存放的是 ASCII 码整数因此字符可以参与算术运算putchar可输出字符常量、字符变量输出控制字符如\n可控制版面。4. 课后习题解析习题 3.1求长方体体积题目已知长方体的长、宽、高求其体积。#includestdio.hintmain(){doublelength,width,height,volume;printf(请依次输入长、宽、高);scanf(%lf%lf%lf,length,width,height);volumelength*width*height;printf(长方体体积为%.2f\n,volume);return0;}运行示例请依次输入长、宽、高3 4 5 长方体体积为60.00小结连续多个 double 输入时格式控制串%lf%lf%lf中不留多余空格输入时用空格、Tab 或回车隔开各数据即可。习题 3.2求两数之和与平均值题目输入两个整数求它们的和与平均值。#includestdio.hintmain(){inta,b,sum;doubleaverage;printf(请输入两个整数);scanf(%d%d,a,b);sumab;averagesum/2.0;// 用 2.0 保证浮点除法printf(和 %d平均值 %.2f\n,sum,average);return0;}运行示例请输入两个整数7 8 和 15平均值 7.50小结求平均值务必用浮点除法即除以2.0或写成sum / 2.0否则结果会被截断为整数。习题 3.3求三角形面积题目输入三角形三边长 a、b、c利用海伦公式求面积s (a b c) / 2 area √(s(s−a)(s−b)(s−c))#includestdio.h#includemath.h// 使用 sqrt 函数intmain(){doublea,b,c,s,area;printf(请输入三角形三边长);scanf(%lf%lf%lf,a,b,c);s(abc)/2.0;areasqrt(s*(s-a)*(s-b)*(s-c));printf(三角形面积为%.2f\n,area);return0;}运行示例请输入三角形三边长3 4 5 三角形面积为6.00小结使用数学函数sqrt时程序头部必须包含#include math.h在部分编译环境下链接时还需显式加入数学库。习题 3.4摄氏温度转华氏温度题目输入摄氏温度 C输出华氏温度 F公式为F 32 C × 9 / 5#includestdio.hintmain(){doubleC,F;printf(请输入摄氏温度);scanf(%lf,C);F32.0C*9.0/5.0;printf(对应华氏温度为%.2f\n,F);return0;}运行示例请输入摄氏温度25 对应华氏温度为77.00小结对照案例 2本题同样要注意先乘后除、使用浮点常量避免整数运算带来的精度丢失。习题 3.5小写字母转大写字母题目输入一个小写字母输出对应的大写字母。#includestdio.hintmain(){charch;printf(请输入一个小写字母);chgetchar();chch-32;// 小写 - 大写printf(对应的大写字母%c\n,ch);return0;}运行示例请输入一个小写字母b 对应的大写字母B小结与案例 4 思路完全对称利用大小写 ASCII 码相差 32 的特点输出时既可以用putchar也可以用printf(%c, ch)。习题 3.6数字位交换题目输入一个两位正整数将其个位与十位互换后输出例如输入 83输出 38。#includestdio.hintmain(){intn,a,b,result;printf(请输入一个两位正整数);scanf(%d,n);an/10;// 十位bn%10;// 个位resultb*10a;printf(交换后的数为%d\n,result);return0;}运行示例请输入一个两位正整数83 交换后的数为38小结「求余取低位、整除去低位」是数字拆分的通用法宝后续章节的循环、回文数判断等题目都会反复用到。习题 3.7求圆环面积题目输入圆环外半径 R 和内半径 rR r求圆环面积area πR² − πr² π(R² − r²)#includestdio.h#definePI3.14159intmain(){doubleR,r,area;printf(请输入外半径和内半径);scanf(%lf%lf,R,r);areaPI*(R*R-r*r);printf(圆环面积为%.2f\n,area);return0;}运行示例请输入外半径和内半径5 3 圆环面积为50.27小结定义符号常量PI既提高可读性又便于统一修改精度#define是简单的宏替换不需要分号。5. 易错点与调试技巧5.1 六大易错点scanf 漏写除字符数组名外scanf 中基本所有变量都要加取地址符double 输入写%fdouble 输入必须用%lf否则读取结果错误格式串中多写\nscanf(%d\n, a)中的换行会导致输入时“不响应”scanf 格式串里不要随意加换行整数除法5/9、1/2等结果为 0应改写为5.0/9、1.0/2丢失#include math.h使用 sqrt、pow、fabs 等数学函数时必须包含该头文件%c连续读入空白scanf(%c, c)会读入上一次回车留下的换行符必要时在格式串中加空格或使用 getchar 清空缓冲区。5.2 调试建议输入浮点数据时先用printf回显输入值确认“读进来的是不是想要的”计算类题目优先用边界数据测试如 0、1、最大可能值遇到程序“一闪而过”时可在return 0;前加getchar(); getchar();或使用 IDE 的“运行后暂停”功能查看输出结果。6. 本章总结本章作为 C 语言程序设计的“开篇实战”核心是让读者建立顺序结构的编程思维并熟练掌握printf、scanf、putchar、getchar四个基本输入输出函数。语句层面掌握 C 语句五大分类能够识别和书写表达式语句、函数调用语句输入输出层面熟记%d、%f、%lf、%c、%s等格式字符的适用场景特别注意scanf的取地址与格式匹配算法层面学会用除法%、取余/分解数字用 ASCII 差值转换字母大小写用浮点常量避免整除截断。顺序结构虽简单却是后续选择结构、循环结构乃至函数与数组的基石。建议读者将本章所有习题独立动手敲一遍并尝试改变输入数据反复测试只有多写多调才能真正把基本功打牢。