科学记数法

输入:用科学记数法表示的数据。即为符合C语言表示的科学记数法表示。输出:该数据的双精度表示说明:1.输入数据的精度不高于小数点后50位。2.输入数据时,在实数和幂之间有空... 输入:用科学记数法表示的数据。即为符合C语言表示的科学记数法表示。
输出:该数据的双精度表示
说明: 1.输入数据的精度不高于小数点后50位。
2.输入数据时,在实数和幂之间有空格进行分隔,空格个数不定。
3.结果保留到小数点后8位,如不足8位用0补足,超过8位则截断,不进行四舍五入的处理。
编程思路:1.以字符方式一个一个读取输入数据,将尾数部分存入一个字符串,将指数部分转换为整数保存。尾数部分不要保存为实型数,因为尾数的小数部分可能很大,用实型数保存精度不够。
2.检查尾数字符串中是否有小数点,如果输入的尾数没有小数点,则在字符串中插入小数点。
3.根据给定的指数值移动小数点,可能有以下情况:
(1)指数为正,右移小数点;在移动过程中已到字符串尾,则需要补0。
(2)指数为负,左移小数点;在移动过程中已到字符串首,则要将字符串整体右移一位,在字符串首补0。
4.找到现在小数点的位置,再向后数8个字符,如果后面数字字符的个数不够8个则补0,小数点后8个数字字符的后面是字符串结束标志。
5.输出字符串。
以下是我编的上半部分,输入1.2345 E 3 输出结果是1234.50 调试出来显示a[7]=0'\0'这是神马情况?不是只能存储一个字符吗?怎么多了个\0?求解
main ()
{static char a[100],c1[5],ch;
int i,j,n;
scanf("%s%s%d",a,c1,&n);
if(n>=0)
{for(i=1;i<=n;i++)
a[i]=a[i+1];
a[1+n]='.';
for(i=0;i<10+n-strlen(a);i++) a[strlen(a)+i]='0';
}
展开
 我来答
lyn222wyy
2012-05-20
知道答主
回答量:29
采纳率:0%
帮助的人:6.5万
展开全部
输入:用科学记数法表示的数据。即为符合C语言表示的科学记数法表示。
输出:该数据的双精度表示
说明: 1.输入数据的精度不高于小数点后50位。
2.输入数据时,在实数和幂之间有空格进行分隔,空格个数不定。
3.结果保留到小数点后8位,如不足8位用0补足,超过8位则截断,不进行四舍五入的处理。
编程思路:1.以字符方式一个一个读取输入数据,将尾数部分存入一个字符串,将指数部分转换为整数保存。尾数部分不要保存为实型数,因为尾数的小数部分可能很大,用实型数保存精度不够。
2.检查尾数字符串中是否有小数点,如果输入的尾数没有小数点,则在字符串中插入小数点。
3.根据给定的指数值移动小数点,可能有以下情况:
(1)指数为正,右移小数
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式