相信你是最棒哒!!!
提示:以下是本篇文章正文内容,下面案例仅供参考
一、运用printf
函数格式化输出
打印格式及含义:
%hd 输出 short 类型,short int 短整数
%d 输出 int 类型, int 接受整数值并将它表示为有符号的十进制整数
%ld 输出 long 类型
%lld 输出 long long 类型
%hu 输出 unsigned short 类型, 无符号短整数
%u 输出 unsigned int 类型, 无符号 10 进制整数
%lu 输出 unsigned long 类型
%llu 输出 unsigned long long 类型
%o 输出unsigned int 无符号 8 进制整数
%x,%X 输出unsigned int 无符号 16 进制整数,x 对应的是 abcdef,X 对应的是
ABCDEF
%f 输出float 单精度浮点数
%lf 输出double 双精度浮点数
%e,%E 输出double 科学计数法表示的数,此处"e"的大小写代表在输出时用
的"e"的大小写
%c char 字符型。可以把输入的数字按照 ASCII 码相应转换为对应
%s char * 字符串。输出字符串中的字符直至字符串中的空字符(字
符串以'\0‘结尾,这个'\0'即空字符)
%p void * 以 16 进制形式输出指针
%% 输出一个百分号
printf 附加格式:
l(字母 l) :附加在 d,u,x,o 前面,表示长整数
-(负号): 结果左对齐,右边填空格
m(代表一个整数) 数据最小宽度
0(数字 0) 将输出的前面补上 0 直到占满指定列宽为止不可以搭配使用-(负号)
m.n(代表一个整数) :m 指域宽,即对应的输出项在输出设备上所占的字符数。n 指精
度,用于说明输出的实型数的小数位数。对数值型的来说,未指定 n 时,隐含的精度为 n=6 位。
+ 输出符号(正号或负号)
空格 输出值为正时冠以空格,为负时冠以负号
#在某些情况下输出一个前缀:
-
%o
:八进制数。当#
被使用时,printf
会在输出的八进制数前加上前缀0
,表示这是一个八进制数。printf("#%o\n", 10); // 输出:01124
-
%x
或%X
:十六进制数。当#
被使用时,printf
会在输出的十六进制数前加上前缀0x
或0X
,表示这是一个十六进制数。printf("#%x\n", 255); // 输出:0xff printf("#%X\n", 255); // 输出:0XFF
-
%a
或%A
:十六进制浮点数(C99标准)。#
标志对这些格式说明符的影响类似于%x
和%X
,会加上0x
或0X
前缀。printf("#%a\n", 3.14159); // 输出:0x1.92e9f4p+1 printf("#%A\n", 3.14159); // 输出:0X1.92E9F4P+1
对于其他格式说明符,如%d
、%u
、%f
等,#
标志没有影响。使用#
标志可以帮助提高输出的可读性,特别是在调试程序时,能够清晰地识别出数字的类型。
二、题目示例
1.体脂率问题:
题目描述
BMI 指数是国际上常用的衡量人体胖瘦程度的一个标准,其算法是 𝑚ℎ2h2m,其中 𝑚m 是指体重(千克),ℎh 是指身高(米)。不同体型范围与判定结果如下:
- 小于 18.518.5:体重过轻,输出
Underweight
; - 大于等于 18.518.5 且小于 2424:正常体重,输出
Normal
; - 大于等于 2424:肥胖,不仅要输出 BMI 值(使用
cout
的默认精度),然后换行,还要输出Overweight
;
现在给出体重和身高数据,需要根据 BMI 指数判断体型状态并输出对应的判断。
对于非 C++ 语言,在输出时,请四舍五入保留六位有效数字输出,如果小数部分存在后缀 00,不要输出后缀 00。
请注意,保留六位有效数字不是保留六位小数。例如 123.4567123.4567 应该输出为 123.457123.457,5432.105432.10 应该输出为 5432.15432.1。
输入格式
共一行。
第一行,共 22 个浮点数,𝑚,ℎm,h,分别表示体重(单位为 kg),身高(单位为 m)。
输出格式
输出一行一个字符串,表示根据 BMI 的对应判断。特别地,对于 Overweight
情况的特别处理请参照题目所述。
输入输出样例
输入
70 1.72
输出
Normal
输入
100 1.68
输出
35.4308 Overweight
说明/提示
对于所有数据,40≤𝑚≤12040≤m≤120,1.4≤ℎ≤2.01.4≤h≤2.0。𝑚m 和 ℎh 的小数点后不超过三位。
题目代码:
#include <stdio.h>
#include <stdbool.h>
int main()
{
double m, h, bmi;
scanf("%lf%lf", &m, &h);
bmi = m / (h * h);
if (bmi < 18.5)
printf("Underweight");
else if (bmi >= 18.5&&bmi<24)
printf("Normal");
else if (bmi >= 24)
{
printf("%.6g\n", bmi);
//%.6g格式说明符表示输出一个浮点数,保留六位有效数字。
g格式会自动选择f或e格式,以获得更紧凑的输出,并去除不必要的尾随零。
printf("Overweight\n");
}
return 0;
}
2. 甲流疫情死亡率
输入
输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。
输出
输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后3位。
样例输入
10433 60
样例输出
0.575%
提示
输出%可以使用printf(“%%”);
题目代码:
#include <stdio.h>
int main()
{
int a,b;
double c;
scanf("%d %d",&a,&b);
c=(double)b/(double)a;
printf("%.3f%%",c*100);
//输出百分数
return 0;
}
总结
本文介绍了C语言中如何使用printf
函数进行格式化输出,包括不同类型的格式说明符及其附加格式选项。通过两个实际编程题目——体脂率问题和甲流疫情死亡率计算,展示了如何应用这些知识来解决具体问题。文章强调了在输出时保留六位有效数字的重要性,并提供了相应的代码示例,帮助读者更好地理解和掌握C语言中的格式化输出技巧。