C语言 三个问题

一,
float a=123.456;
printf("|%7.2f|,%-7.0f",a,a);

答案是 |123.46|和123□□□□
(□表示为空格)

我想问:
1.|%7.2f|输出后为什么是|123.46|,这里的"||"绝对值符号是不是与%7.2f无关,我感觉"||"是在printf("")输出里的,是不是这样理解的?
2.%7.2f表示一共输出7位,小数点后保留两位.但是输出后的结果一共是六位?(1 2 3 . 4 6)这是怎么回事? 还是 为什么可以四舍五入?

二,
为什么0==0就为“真”,0=0就为“假”?0=0“假”在哪里?

三,
3个数从小到大排序;编的是冒泡法 能对步骤1,2,3具体解释一下吗 我看不懂 谢谢
#include<stdio.h>
main()
{
int a=0,b=0,c=0,temp=0;
printf("Input a,b,c:");
printf("Before:a=%d,b=%d,c=%d\n"a,b,c);
scanf("%d%d%d",&a,&b,&c);
if(a>b)
{temp=a;a=b,b=temp;} //1步骤
if(b>c)
{temp=b;b=c,c=temp;} //2步骤
if(a>b)
{temp=a;a=b,b=temp;} //3步骤
printf("After:a=%d,b=%d,c=%d\n"a,b,c);
}

1.%7.2f是指a中的整数部分从右取7位,
小数部分取2位,所以是 123.46 ,前面应该是4个空格,楼下的不对
||不是绝对值,输出就是||,你的理解是正确的
%-7.0f就是a中的整数部分从左取7位,不足的补空格,小数部分取0位
所以是123后面4个空格
2.==是比较符号,0==0是正确的,而=是赋值,0是常量,不能赋值,所以错误。
3.这3个步骤是一样的意思,简单说就是把两个数中的较小的一个放到前面。其中1步骤是把a,b中小的一个给a,2步骤是把b,c中小的一个给b,然后再让现在的a,b比,把小的给a。结果就能从小到大排列了。
温馨提示:答案为网友推荐,仅供参考
相似回答