设有定义: double x=2.12;, 以下不能完整输出变量x值的语句是(A)
A.printf("x=%5.0f\n",x);
B.printf("x=%f\n",x);
C.print("x=%lf\n",x);
D.printf("x=%0.5f\n",x);
【解析】float类型变量有效位数为6 - 7位,double类型变量有效位数为15 - 16位。printf函数控制字符%f输出float类型,%lf 输出double类型。
对于float或double型数据,在指定数据输出宽度的同时,也可以指定小数位的位数。
函数printf()中,格式为 %m.nf,表示数据输出总的宽度为m位(包括小数点),其中小数部分占n位。当数据的小数位多于指定宽度n时,截去右边多余的小数,并对截去的第一位小数做四舍五入处理;而当数据的小数位少于指定宽度n时,在小数的右边补零;当m小于有效位数时,整数部分输出所有有效数字并且自动对齐,小数部分按照n指定位数输出。
函数printf()中,%md,指输出带符号的十进制整数,给定最小宽度为m位,不足m位左端补空格,超过m位按实际位数输出, %nf表示以小数形式输出实数,小数占n位。
A选项按照float格式输出数据,宽度为5位,保留小数0位,输出为2,不能完整输出x,选择A选项。
B选项按照float格式输出数据,输出为2.120000。
C选项按照double格式输出数据,输出为2.120000。
D选项按照float格式输出数据,保留小数位数为5,输出为2.12000。
设有定义: double x;,以下选项中不能将输入数据3.14读入赋给变量x的是(A)
A、scanf("%4.2f" ,&x);
B、scanf("%lf" ,&x);
C、scanf("%le" ,&x);
D、scanf("%4lf" ,&x);
【解析】函数scanf()中,函数格式字符串的一般形式为: %[*][输入数据宽度][长度类型]。输入数据宽度必须是十进制的整数,它没有精度控制。
%4.2f是错误的,不能企图用此语句输入小数点为2位的实数,选项A错误;
scanf()函数的长度格式符为1和h, %lf表示用小数形式输入双精度浮点数,选项B正确;
%le表示用指数形式输入双精度浮点数,满足条件,选项C正确;
%4lf表示用小数形式输入宽度为4的双精度浮点数,选项D正确。