首页 / 资讯中心 / 文章详情

第4章 顺序结构与输入输出

第4章 顺序结构与输入输出 ★ FEATURED ARTICLE
printf常用格式符%d十进制 int%o八进制不输出前导 0%x/%X十六进制不输出 0x%c字符%s字符串%f浮点默认保留6 位小数%%输出一个百分号。printf 常用格式字符%d十进制整型、%o八进制、%x十六进制、%u无符号十进制、%c单个字符、%s字符串、%f小数形式实型默认6 位小数、%e指数形式、%%输出一个百分号%m.nfm 总宽度含小数点n 小数位数宽度不够左侧补空格超出则按实际输出。scanf普通变量前面必须加取地址符数组名本身是首地址不要加。scanffloat用%fdouble输入必须用%lf输出可以用%f。scanf格式串中普通字符必须原样输入%d,%d输入必须带逗号。%d、%f自动跳过空格、回车、Tab 空白%c不会跳过空白会读取回车、空格字符。getchar()读取包括回车、空格在内的任何字符常用于吃掉缓冲区残留回车返回值是int用来接收EOF。scanf多数据输入默认以空白字符空格、回车、Tab分隔scanf(%d%d, a, b);输入3 5、3↵5、3Tab5均可%c之间不会自动跳过空白每个字符都原样读取。转义字符\n换行、\t制表、\\反斜杠、\单引号、\双引号、\0空字符、\ddd1~3位八进制ASCII、\xhh1~2位十六进制ASCII顺序结构代码从上到下依次执行无跳转。!!! 1scanf漏写取地址符int a;scanf(%d, a); // 把 a 的值当地址传入运行时段错误甚至崩溃//普通变量必须传地址数组名本身就是地址不要加。int a;char s[20];scanf(%d, a); // 整型取地址scanf(%s, s); // 数组名即首地址无需 !!! 2scanf中double错用%f考研高频double d;scanf(%f, d); // 错%f 对应 float4 字节向 8 字节 double 写 4 字节读到垃圾值正确是什么scanf 输入 double 一律用%lf输出用 %f%lf 输出在 C99 后也合法但习惯用 %f。scanf(%lf, d); // 对printf(%f, d); // 对!!! 3%c与%d/%s混用时的缓冲区残留int a; char c;scanf(%d, a); // 输入 65 后按回车回车符 \n 留在缓冲区scanf(%c, c); // c 直接读到 \n不是预期的字符正确是什么在 %c 前加一个空格吃掉空白字符或先用 getchar() 清掉回车。scanf(%d, a);getchar(); // 吃掉残留回车scanf(%c, c);// 或scanf( %c, c); %c 前的空格会跳过任意空白字符!!! 4printf格式字符与输出项类型不匹配printf(%d, 3.14); // 用整型格式输出实型结果是无意义的数printf(%f, 100); // 用实型格式输出整型同样错格式与数据项类型必须对应顺序一一对应、个数相等。printf(%.2f, 3.14);// 3.14%m.nfm 总宽度含小数点n 小数位数宽度不够左侧补空格超出则按实际输出。printf(%d, 100); // 100??? 1执行printf(%d%%%d, 3, 5);的输出为 ______。错填35——忽略了%%转义为字面百分号输出项与格式控制并未按两个 %d对应。正确填3%5。%% 在格式串中表示输出一个 % 字符不消耗输出项。??? 2scanf(%d,%d, a, b);要求输入时两个数之间必须用 ______ 分隔。错填空格或回车均可——格式串中写死了逗号非空白通用分隔若输入 3 5 则 b 读不到a3、b 保持原值。正确填逗号。scanf 格式串中的普通字符非 % 开头必须原样匹配输入常见写法 %d,%d输入 3,5或 %d %d输入 3 5。??? 3float f 3.14159; printf(%.2f, f);的输出是 ______。正确填 3.14。%.2f 表示保留 2 位小数第三位四舍五入。定义int a; long b; double x;则scanf语句正确的是__A____。A.scanf(%d%ld%lf, a, b, x);B.scanf(%d%d%f, a, b, x);C.scanf(%d%ld%f, a, b, x);D.scanf(%d%ld%lf, a, b, x);执行printf(%3d|%-3d|, 5, 5);的输出为_5|5|_____。提示-表示左对齐%3d占 3 个字符宽度右对齐数字 5 前面补两个空格 → 5%-3d占 3 个字符宽度左对齐数字 5 后面补两个空格 → 5%03d0 是标志3 是宽度用 0 填充空位printf(%03d, 1234); // 1234数字超过宽度就原样输出不会截断%.3d.3 是精度对整数代表最少输出几位数字不够补前导 0超出原样输出printf(%.3d, 1234); // 1234格式含义a6 输出b1234 输出易错易错点%3d宽度 3右对齐空格前置填充61234数值位数宽度不截断原样输出%-3d宽度 3左对齐空格后置填充61234-只控制对齐不能和 0 填充同时生效%03d宽度 3右对齐0 前置填充00612340 填充只补空位数字太长直接原样输出%.3d整数精度最少 3 位数字不足补前导 00061234.3是精度≠宽度对小数是控制小数位printf(%-03d,6);错006左对齐-和 0 填充标志冲突0 标志失效→6printf(%.3f, 6.1234);%.nd 对整数是最少位数%.nf 对浮点数是保留 n 位小数完全两回事6.123printf(%5.3d,7);总宽度 5整数精度 3→需要至少 3 位数字→007占 3 字符总宽 5右对齐前面补 2 空格printf(%5.3f, 2.5);2.500
阅读完成 · 觉得有帮助?
咨询建站