输入一个小数(double类型存储),格式化成货币形式存储于一个字符数组中,并输出, 前面加$,整数每3位加逗号,小数点后保留两位。
#include <stdio.h>
char ans[50];
int main(){
double x,y;
long n,t,dot,count=3,tmp=0,i;
int flag=0;
while(scanf("%lf",&x)){
n = x*100+0.5;//注意四舍五入!!!
dot = n%100;//小数点后两位
ans[0] = dot%10+'0';
ans[1] = (dot/10)%10+'0';
ans[2] = '.';
n = n/100;//整数部分
while(n!=0){
ans[count]=n%10+'0';
count++;
tmp++;
if(tmp==3&&n/10!=0){ //n/10!=0表示最后三位不用加, 因为前面有一个$符
ans[count++] = ',';
tmp=0;
}
n = n/10;
}
ans[count++]='$';
for(i=count-1;i>=0;i--){
printf("%c",ans[i]);
}
}
return 0;
}