PAT考试乙级1024(C语言实现)重点题目
2017-11-08 17:47
288 查看
#include<stdio.h> #include<string.h> int main(){ char s[20000]; int n=0,i,E; scanf("%s",&s); E=strchr(s,'E')-s;//E的位置 1 for(i=E+2;i<strlen(s);i++){ n=n*10+s[i]-'0';//小数点需要移动的位数 2 } if(s[0]=='-'){ printf("-"); } if(s[E+1]=='-'){ printf("0."); for(i=1;i<n;i++){ printf("0"); } for(i=1;i<E;i++){ if(s[i]!='.') printf("%c",s[i]); } }else if(n<(E-3)){//易错点 3 for(i=1;i<E;i++){ if(s[i]!='.') printf("%c",s[i]); if(i==n+2) printf(".");// } }else{ for(i=1;i<E;i++){ if(s[i]!='.') printf("%c",s[i]); } for(i=0;i<n-E+3;i++){ printf("0"); } } return 0; }
总结:
1、首先要得到E的位置,根据E前后两个数得到相应的值。要注意的是strchr函数返回值是char*类型的指针,不能直接赋值给int,要减去一个字符数组。
2、要得到E后面数字的值,即要移动几个小数点。
3、要注意判断的条件,否则会有测试点错误。
相关文章推荐
- PAT考试乙级1028(C语言实现)重点题目
- PAT考试乙级1031(C语言实现)重点题目
- PAT考试乙级1033(C语言实现)重点题目 部分正确(已解决)
- PAT考试乙级1030(C语言实现)重点题目
- PAT考试乙级1050(C语言实现) (重点题目)(memset以及思路)
- PAT考试乙级1034(C语言实现)重点题目
- PAT考试乙级1035(C语言实现)重点题目(排序)
- PAT考试乙级1045(C语言实现)重点题目(思路)
- PAT考试乙级1050(C语言实现) (重点题目)(按格式读取,使用容器vector)
- PAT考试乙级1054(C语言实现) (重点题目)(思路)
- PAT考试乙级1048(C语言实现)重点题目(思路、用到了memset)
- PAT考试乙级1050(C语言实现) (重点题目)(关于保留小数的坑)
- PAT考试乙级1019(C语言实现) 重点题目
- PAT考试乙级1055(C++语言实现) (重点题目)(思路)
- PAT考试乙级1006(C语言实现)
- PAT考试乙级1016(C语言实现)
- PAT考试乙级1046(C语言实现)
- PAT考试乙级1018(C语言实现)
- PAT考试乙级1037(C语言实现)
- PAT考试乙级1012(C语言实现)