
科学计数法是科学家用来表示大数或小数的便捷方法,符合正则表达式[±] [1-9]. [0-9] + E [±] [0-9] +printf科学计数,即数字的整数部分只有1位数字,而小数部分至少有1位数字. 即使是正数,也必须清楚地给出数字的符号及其指数.
现在printf科学计数,实数A以科学计数形式给出. 请根据公用数字符号编写程序输出A,并确保保留所有有效数字.
输入格式:
每个输入包含1个测试用例,用科学计数法表示实数A. 该数字的存储长度不超过9999字节,其指数的绝对值不超过9999.

输出格式:
对于每个测试用例,在一行上以通用数字符号输出A,并确保保留所有有效位,包括末尾的0.
输入样本1:
+1.23400E-03

输出样本1:
0.00123400
输入样本2:
-1.2E+10

输出样本2:
-12000000000
想法
使用d(int)保存整数部分,使用e(int)保存指数部分,使用Dec [](char *)保存小数部分;如果d <0,则输出符号“-”;如果e <0,则输出e零“ 0”和小数点“. ”. 当第一个输出(count == 0)时输出;输出整数部分d(无符号);如果指数(e)大于小数位数(strlen(Dec)),则输出小数部分;输出多余的0;否则,输出小数部分. 否则,如果小数点为“. ”尚未输出,小数点为“. ”输出. 结束.

C
#include <stdio.h>
int main(){
int d,e,count=0,i;
char xiao[10000];
scanf("%d.%[0-9]E%d",&d,xiao,&e);
if(d<0){
printf("-");
}else{
printf("");
}
while(e++<0){
if(count++==0){
printf("0.");
}else{
printf("0");
}
}
e--;
printf("%d",abs(d));//abs() 函数用于求整数的绝对值。
for(i=0;i<strlen(xiao)||i<e;i++){ //strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)
if(i==e && !count){
if(i<strlen(xiao)){
printf(".%c",xiao[i]);
}else{
printf(".0");
}
}else{
if(i<strlen(xiao)){
printf("%c",xiao[i]);
}else{
printf("0");
}
}
}
return 0;
}
简单版本C
#include <stdio.h>
int main(){
int d,e,count=0;
char Dec[10000];
scanf("%d.%[0-9]E%d",&d,Dec,&e);
printf("%s",d<0 ? "-" : "");
while( e++ < 0 )
printf("0%s",count++==0 ? "." : "");
e--;
printf("%d",abs(d));//abs() 函数用于求整数的绝对值。
for(int i=0 ; i<strlen(Dec) || i<e ; i++)
//strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)
printf("%s%c",i==e && !count ? ".":"",i<strlen(Dec) ? Dec[i] : '0');
}//(a>b)?y:n。解释:如果A大于B,那么选择Y的结果,如果A小于等于B,那么选择N的结果。
Java
使用Scanner语句阅读很可能会超时,因此查询网络的答案如下:
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-220390-1.html
是祖宗留下来的经验