c语言 输出格式为什么要规定数据输出宽度????

c语言的一些问题_百度知道
c语言的一些问题
#include&stdio.h&main{float f=123.456;printf(&%f,%8f,%8.1f,%.2f,%.2e,%010.2f\n&,f,f,f,f,f);结果是123.3.456001,
123.5,123.46,1.23e+002, 高手分析下为什么是这个结果,越详细越好
提问者采纳
1.%f中的f是单精度,其精确到小数后6位。 这个不仅在这里会是6位,你随便定义个f的类型,输出f的类型,一样精确到小数点后6位,所以这是最原始的输出(相比较你后面的输出)2.%8f 中的8是从右边数占8个字的宽度。我们知道f输出的值是123.456001。可以输出123.456001的宽度是10(包括小数点在内)可知定义的8小于实际的10。这里有个规定,如果定义的小于实际的值就按实际输出。否则大于10就从右边开始填字最终不够的左边就用空格补充3.%8.1f 中的8还是上一个的意思。后面的.1意思是数据精确到小数点后一位。所以输出的是123.5 显然字段宽度是5 ,小于定义的8 。所以从右边开始 左边补了3个空的宽度来保证定义的84.%.2f 同上精确到小数后两位。所以输出的值是123.46,没有定义宽度所以不用考虑5.%.2e e的意思是用科学计数法来表示(值大小不变), 且同样精确到小数点后两位所以输出1.23e+002(等同于123 如果是%.3e 就是1.234e+002即123.4)6.%010.2f中的0和10应该区别开来看 10可以看出要10个宽度,小数精确到后两位所以输出123.46(这里精确到小数后几位都是四舍五入)但定义了10个宽度所以按理来说是要补空位,但是有0 所以用0来补。(你也可以试下%020.2f 输出时补了14个0)
其他类似问题
c语言的相关知识
其他2条回答
格式字符格式字符用以指定输出项的数据类型和输出格式。 ①d格式:用来输出十进制整数。有以下几种用法:%d:按整型数据的实际长度输出。%md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。%ld:输出长整型数据。②o格式:以无符号八进制形式输出整数。对长整型可以用&%lo&格式输出。同样也可以指定字段宽度用“%mo”格式输出。例:
{ int a = -1;
printf(&%d, %o&, a, a);
运行结果:-1,177777
程序解析:-1在内存单元中(以补码形式存放)为(1111)2,转换为八进制数为(。③x格式:以无符号十六进制形式输出整数。对长整型可以用&%lx&格式输出。同样也可以指定字段宽度用&%mx&格式输出。④u格式:以无符号十进制形式输出整数。对长整型可以用&%lu&格式输出。同样也可以指定字段宽度用“%mu”格式输出。⑤c格式:输出一个字符。⑥s格式:用来输出一个串。有几中用法%s:例如:printf(&%s&, &CHINA&)输出&CHINA&字符串(不包括双引号)。%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串长小于m,则左补空格。%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n&m,则自动取n值,即保证n个字符正常输出。⑦f格式:用来输出实数(包括单、双精度),以小数形式输出。有以下几种用法:%f:不指定宽度,整数部分全部输出并输出6位小数。%m.nf:输出共占m列,其中有n位小数,如数值宽度小于m左端补空格。 %-m.nf:输出共占n列,其中有n位小数,如数值宽度小于m右端补空格。⑧e格式:以指数形式输出实数。可用以下形式:%e:数字部分(又称尾数)输出6位小数,指数部分占5位或4位。%m.ne和%-m.ne:m、n和”-”字符含义与前相同。此处n指数据的数字部分的小数位数,m表示整个输出数据所占的宽度。⑨g格式:自动选f格式或e格式中较短的一种输出,且不输出无意义的零。
结果应该是程序编译不过去,缺少反括号,我不是在这跟你无理取闹,做程序必须细心,又时编一个大程序差一个符号就会让你折腾一整天,所以告诉你以后要仔细。至于为什么只能说你对定义的理解不深刻,你去查谭浩强的书吧,在哪里你会得到明确的答案
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁用数组实现求菲波那切数列的前20项并输出,每10个一行,每个数据占5个宽度。求答案,C语言_百度知道
用数组实现求菲波那切数列的前20项并输出,每10个一行,每个数据占5个宽度。求答案,C语言
我有更好的答案
按默认排序
#include &stdio.h&void main(){ int arr[20] = {0}; arr[0] = arr[1] = 1; i = 2; while(i & 20) {
arr[i] = arr[i-1] + arr[i-2]; } for(i = 0; i & 20; i++) {
printf(&%5d&, arr[i]);
if(i % 10 == 9)
printf(&\n&);
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言 输出字符串可以定义宽度吗?_百度知道
C语言 输出字符串可以定义宽度吗?
如我要输出”sdafgsdaf&+一定空格后=50宽度,该怎么实现
提问者采纳
而且是字符串左对齐!;sdafgsdaf&quot:printf(&quot,不加-号就可以了;%-50s&,如果要右对齐,&)!,则数据向左对齐,-号表示如果数据不足50字符在printf()函数中使用附加格式字符,如果希望它共占50字符;其中50表示输出该数据项至少占50字符宽度,则使用语句如下!例如对于你上例中的字符串
提问者评价
提问之后自己马上试了下,是可以的。还是要谢谢你~~~在此建议正在学编程的朋友也要勇于偿试~~!
其他类似问题
字符串的相关知识
其他1条回答
50-str. i ++) print(&quot:print(str);)加入你的输出是存在一个字符串str中的; &for(int i = 0; i &lt,那么可以这样实现
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁已有天涯账号?
这里是所提的问题,您需要登录才能参与回答。
"天涯问答"是天涯社区旗下的问题分享平台。在这里您可以提问,回答感兴趣的问题,分享知识和经历,无论您在何时何地上线都可以访问,此平台完全免费,而且注册非常简单。
C语言输出字符串可以定义宽度吗?
C语言输出字符串可以定义宽度吗?
08-12-20 & 发布
在printf()函数中使用附加格式字符!!! 例如对于你上例中的字符串,如果希望它共占50字符,而且是字符串左对齐,则使用语句如下: printf(&%-50s&,&sdafgsdaf&); 其中50表示输出该数据项至少占50字符宽度,-号表示如果数据不足50字符,则数据向左对齐,如果要右对齐,不加-号就可以了。
请登录后再发表评论!求教:输出数据的宽度说明%12.4f与%012.4f有什么不同?_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:254,816贴子:
求教:输出数据的宽度说明%12.4f与%012.4f有什么不同?收藏
多那一个0代表什么意思啊?
前面不够位数的补0
回复2楼:多谢前辈!晚生明了
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 c语言 输出格式 的文章

 

随机推荐