北航13年机试--十进制数字的科学计数法表示的C语言实现
2015-07-24 13:45
274 查看
给出一个标准输入的正数(开头末尾没有多余的0),输出其科学计数法表示结果。
Example:
输入0.000002,输出2e-6
输入123.456,输出1.23456e2
输入123456,输出1.23456e2
Example:
输入0.000002,输出2e-6
输入123.456,输出1.23456e2
输入123456,输出1.23456e2
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(){ char v[10000]={'\0'}; scanf("%s",v); int i; int len=strlen(v); if(v[0]=='0'){ //小数 i=2; while(v[i]=='0') i++; int xiaoshu=i+1-2; if(i<len) printf("%c",v[i++]);//遇到第一个不为0的数直接输出 if(i<len) printf(".");//如果此后还有数字,则添加小数点 for(;i<len;i++) printf("%c",v[i]); //之后输出剩下的小数位 printf("e-%d\n",xiaoshu); } else{ //大于1的数 i=0; printf("%c.",v[0]); //第一位后加小数点输出 while(v[i]!='.'&&i<len) i++; //判断原数小数点之前的位数 int ex=i-1; //从而求得科学计数的E for(i=1;i<len;i++) if(v[i]!='.') printf("%c",v[i]); //顺序输出剩下的数,要把小数点去掉 printf("e%d\n",ex); } return 0; }
相关文章推荐
- PAT (Basic Level) Practise (中文)1015. 德才论 (25) C语言
- 一个简单的多线程题目
- 黑马程序员-----C语言学习之数组与指针
- C++ 文件操作结构体SHFILEOPSTRUCT
- [LeetCode] Search a 2D Matrix II
- C++ 自定义简单String类
- 用C语言一次性读取多个文件,大量文件
- C++ RTTI介绍
- C++中替代sprintf的std::ostringstream输出流详解
- 提取数字的每一位
- C++ char*,const char*,string的相互转换
- C++中wstring与string相互转化
- 02C语言指针
- 电力系统潮流计算程序实现C语言版(动态节点+稀疏技术)
- 一个URL编码和解码的C++类
- c++ 如何实现,readonly
- C++ 智能指针详解
- C++ cin对象
- C++动态内存分配(堆)
- C++动态内存分配(堆)