NYOJ+细节题+注释的内容很多要注意
2015-08-07 02:01
302 查看
点击打开链接
#include<stdio.h> #include<string.h> #include<stdlib.h> char Arr[110]; int main() { int flag=0,dot=0,left=0,len=0; char *ch=0; while(scanf("%s",Arr+1)!=EOF)//一定要带上EOF,否则会EOF { flag=0;//标签正数还是负数 Arr[0]='0';//防止不断进位溢出 if(Arr[1]=='-') { flag=1; Arr[1]='0'; } len=strlen(Arr); if(ch=strchr(Arr,'.')) { dot=ch-Arr; } else { dot=len; } //处理小数点及进位 if(len-dot>3) { if(Arr[dot+3]>'4') { if(++Arr[dot+2]>'9') { Arr[dot+2]='0'; if(++Arr[dot+1]>'9') { Arr[dot+1]='0'; ++Arr[dot-1]; } } int i=dot-1; while(Arr[i] > '9') { Arr[i] = '0'; i--; ++Arr[i]; } } Arr[dot+3]='\0';//结束 } else if(len-dot==2)//小数点后只有一位 { Arr[len]='0'; len++; Arr[len]='\0'; } else if(len-dot==1)//小数点后没有 { Arr[len]='0'; len++; Arr[len]='0'; len++; Arr[len]='\0'; } else if(len==dot)//没有小数点 { Arr[len]='.'; len++; Arr[len]='0'; len++; Arr[len]='0'; len++; Arr[len]='\0'; } //除去左边的0 for(left=0;Arr[left]=='0';left++); if(Arr[left]=='.') left--; if(flag) printf("("); while(left<dot) { printf("%c",Arr[left]); left++; if(left!=dot&&(dot-left)%3==0)//处理每三位有一个标记 { printf(","); } } printf("%s",Arr+dot); if(flag) printf(")"); printf("\n"); } return 0; }
相关文章推荐
- gzip解压压缩的字符串数据
- lvm扩展记录
- StringIO模块字符串的缓存
- egret调用页面js的方法。
- StringIO模块字符串的缓存
- Cannot run gnome extension in browser
- UltraEdit 除去行首的行号和空格
- Python转码问题的解决方法:ignore,replace,xmlcharrefreplace
- Unity Manual之ScriptableObject 脚本化对象
- Python转码问题的解决方法:ignore,replace,xmlcharrefreplace
- setuptools,easy_install使用
- setuptools,easy_install使用
- C 语言中的变量为什么不能以数字打头
- C 语言中的变量为什么不能以数字打头
- python:利用asyncio进行快速抓取
- python:利用asyncio进行快速抓取
- os.path.exists(path) 和 os.path.lexists(path) 的区别
- os.path.exists(path) 和 os.path.lexists(path) 的区别
- isdigit()判断是不是数字
- isdigit()判断是不是数字