《C程序设计教程(第四版)——谭浩强》
习题2.3 上机运行下面的程序,分析输出结果
代码
//《C程序设计教程(第四版)——谭浩强》
//习题2.3 上机运行下面的程序,分析输出结果
#include <stdio.h>
int main()
{
int a=5,b=7;
float x=67.8564,y=-789.124;
char c='A';
long n=1234567;
unsigned u=65535;
printf("%d%d\n",a,b);//单纯打印出a,b这两个数字,中间没有空格,然后换行
printf("%3d%3d\n",a,b);//在格式声明中指定输出数据的域宽(所占的列数)
printf("%f,%f\n",x,y);//%f:实数中的整数部分全部输出,小数部分输出6位
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%15s\n","COMPUTER","COMPUTER");
return 0;
}
运行结果
结果分析
(1)
输出:
printf("%d%d\n",a,b);
输出结果:
57
输出结果分析:
直接输出整型a和b,没有空格。
(2)
输出:
printf("%3d%3d\n",a,b);
输出结果:
5 7
输出结果分析:
在格式声明中指定了输出数据的(域宽)所占的列数为3,数字右对齐。
(3)
输出:
printf("%f,%f\n",x,y);
输出结果:
67.856400,-789.124023
输出结果分析:
%f默认输出6位小数,整数部分全部输出。
(4)
输出:
printf("%-10f,%-10f\n",x,y);
输出结果:
67.856400,-789.124023
输出结果分析:
使用“-”表示左对齐,宽度为10,由于x和y小数部分都超过6位,因此输出的值未被截断。
(5)
输出:
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
输出结果:
67.86, -789.12,67.8564,-789.1240,67.856400,-789.124023
输出结果分析:
各个格式控制不同:
%8.2f
:最小宽度8,小数点后显示2位。%.4f
:小数点后显示4位,小数部分未受宽度影响。
(6)
输出:
printf("%e,%10.2e\n",x,y);
输出结果:
6.785640e+001,-7.89e+002
输出结果分析:
%e
以科学计数法输出,默认6位小数;第二个%10.2e
指定宽度为10,小数点后输出2位。
(7)
输出:
printf("%c,%d,%o,%x\n",c,c,c,c);
输出结果:
A,65,101,41
输出结果分析:
%c
: 输出字符 。%d
: 输出 ASCII 码值(65)。%o
: 十进制值的八进制形式(101)。%x
: 十进制值的十六进制形式(当A
为 65 时,十六进制为 41)。
(8)
输出:
printf("%ld,%lo,%x\n",n,n,n);
输出结果:
1234567,4553207,12d687
输出结果分析:
%ld
: 输出长整型值(1234567)。%lo
: 输出长整型的八进制值(5709627)。%x
: 输出长整型的十六进制值(12D687)。
(9)
输出:
printf("%u,%o,%x,%d",u,u,u,u);
输出结果:
65535,177777,ffff,65535
输出结果分析:
%u
: 输出无符号整数(65535)。%o
: 输出无符号整数的八进制值(177777)。%x
: 输出无符号整数的十六进制值(ff)。%d
: 输出无符号整数作为有符号整数(65535)。
(10)
输出:
printf("%s,%15s\n","COMPUTER","COMPUTER");
输出结果:
COMPUTER, COMPUTER
输出结果分析:
%s
直接输出字符串。%15s
输出宽度为15,右对齐,前面有空格。