c语言,输出科学计数法

c语言,输出科学计数法,第1张

#include <stdio.h>

#include <string.h> 

char num[110]

char result[110]

int len 

  

int main()

{

int i,j

int s1,s2                //小数点位置,字符串首个非零数位置  

int find1 = 0                

int find2 = 0            //find1:是否找到小数点位置标志位,find2:是否找到首个非零数位置,0:表示未找到 

int index 

            

scanf("%s",num)

len = strlen(num)        //读取字符串长度 

for(i = 0i < len++i)   //寻找原字符串中小数点与首个非零盯衡数的位置 

{

if(find1 && 裂则知find2)

break

if(num[i] == '.'){

s1 = i

find1 = 1

}

else if(num[i] != '0' && !find2){

find2 = 1

s2 = i

}

}

if(s1-s2 > 0)        //根据二个位置确定指数大小 

index = s1-s2-1

else if(s2 > s1)

index = s1-s2          

j = 0

for(i = s2i < len++i)       //确定底数 

{

if(num[i] == '.')    

continue

else if(i == s2) {      //确定底数小数点位置 

if(num[i+1]){

result[j++] = num[i]

result[j++] = 肆消'.'

}

else

result[j++] = num[i]

}

else

result[j++] = num[i] 

}

result[j] = '\0'

printf("%se%d\n",result,index)

return 0

}

C的话可老基碰以用 printf("%e " ....%e选项就是科学计数法侍谈锋纤显示

C++的话 cout <<scientific <<要输出的东西 这样就可以。

第一个问题,你自定义函数的方法非常混乱,下面是我答歼毁改的希望你仔细看看哪些地方动了位置,你的算法没错。

#include "stdio.h"

#include "conio.h"

float sub(float n)

void main()

{

float n,m

scanf ("%f",&n)

m = sub(n)

printf ("sum=%f\n",m)

getch()

}

float sub(float n)

{

float i,s

s=0

for (i=1i<=ni++)

{

s=s+1/i

}

return (s)

}

至于你说的第二个问题。。。想不出办法来。。

你都弄到100的10次方的数量级了。。。大概只有求助于

高级的数据改搏类型了。

不过有个想法,首先这个数量级的数肯定是科学计数法表示的。

他前面的因数你看看清备能不能在设定浮点数精度的基础上,对它

*** 作下,也许能得到你的答案。

比如 1.73212352132131231 e17 这个数,你想办法对

1.73212352132131231和17进行下 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8279042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存