其他分享
首页 > 其他分享> > 科学计数法 (C语言)

科学计数法 (C语言)

作者:互联网

对于非常大或者非常小的数据,我们通常用科学记数法来表示。例如在科技文献和电脑中经常遇到的 2.3×106 (计算机中的科学记数法表示为:2.3E6),或者 9.18×10-5 (科学记树法表示:9.18E-5)这种类型的数据。

输入:
    用科学记数法表示的数据。即为符合C语言表示的科学记数法表示。

输出:
    该数据的双精度表示

说明:
    输入数据的精度不高于小数点后50位。
    输入数据时,在实数之间有空格进行分隔,空格个数不定。
    结果保留到小数点后8位,如不足8位用0补足,超过8位则截断,不进行四舍五入的处理。

#include <stdio.h> 
#include<math.h> 
int main(){
	int arr[100];int flen=0,blen=0,i=0,j=0,k=1,ci=0,e=1;char cc;
    for(i=0;i<100;i++){//initialize 
		arr[i]=0;
	}
	i=0;
	do{//输入小数点前的部分
		cc=getchar();
		ci=cc;
		if((ci>=48)&&(ci<=57)){//判断为数字则存入数组
			arr[i]=ci-48;i++;
			flen++;//记录整数的位数
		}
		if(cc=='.'){//检测到小数点
        	break;			
		}
		if(cc==' '){//检测到空格			
			break;
		}
    } while(1);
	i=flen;
    if('.'==cc){  //上个循环于小数点处结束,输入小数部分
	 	    do{
     	    cc=getchar();
     	    ci=cc;
	 	    
     	    if((ci>=48)&&(ci<=57)){//判断为数字,输入
     		       arr[i++]=ci-48;
	 		       blen++;//记录小数的位数
	 	        }
	 	    if(cc==' '){//检测到空格,小数输入结束
	 		break;
	 	    }
	    } while(1);
	 }
	
	//end numbers input
	do{
		cc=getchar();
		if((cc='e')||(cc='E')){
			scanf(" %d",&e);
			break;
		}
	}while(1);//Nothing wrong above
	//printf("%d\n%d\n%d\n",flen,blen,e);
	if(e>0){
		for(j=0;j<flen+e;j++){
			printf("%d",arr[j]);
		}
		printf(".");
		for(k=flen+e;k<flen+e+8;k++){
			printf("%d",arr[k]);
		}
		printf("\n");
		return 0;
	}
	if(e==0){
		for(j=0;j<flen;j++){
			printf("%d",arr[j]);
		}
		printf(".");
		for(k=flen;k<flen+8;k++){
			printf("%d",arr[k]);
		}
		printf("\n");
		return 0;
	}
	if(e<0){//power is nagetive
		e=0-e;
		if(e>=flen){//左移超出整数位数
			printf("0.");
			if((e-flen)<=8){
			         for(j=1;j<=e-flen;j++){
				     printf("0");
			}}else{
				for(j=1;j<=8;j++){
				printf("0");}
			}
			for(k=0;k<=(7-e+flen);k++){
				printf("%d",arr[k]);
			}
			printf("\n");
		}else{//左移不超过整数位数
            for(i=0;i<(flen-e);i++){
				printf("%d",arr[i]);
			}
			printf(".");
			for(i=flen-e;i<(flen-e+8);i++){
				printf("%d",arr[i]);
			}
			printf("\n");	return 0;
		}
	}

}

标签:表示,int,科学,C语言,记数法,flen,计数法,数据
来源: https://blog.csdn.net/weixin_46065720/article/details/121182713