您的位置:首页 > 编程语言 > C语言/C++

北航13年机试--十进制数字的科学计数法表示的C语言实现

2015-07-24 13:45 274 查看
给出一个标准输入的正数(开头末尾没有多余的0),输出其科学计数法表示结果。

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: