时间限制:1 秒

内存限制:32 兆

特殊判题:否

提交:2725

解决:736

题目描述:

求2个浮点数相加的和

题目中输入输出中出现浮点数都有如下的形式:

P1P2...Pi.Q1Q2...Qj

对于整数部分,P1P2...Pi是一个非负整数

对于小数部分,Qj不等于0

输入:

对于每组案例,第1行是测试数据的组数n,每组测试数据占2行,分别是两个加数。

每组测试数据之间有一个空行,每行数据不超过100个字符

输出:

每组案例是n行,每组测试数据有一行输出是相应的和。

输出保证一定是一个小数部分不为0的浮点数

样例输入:
2
0.111111111111111111111111111111
0.111111111111111111111111111111 10000000.655555555555555555555555555555
1.444444444444444444444444444445
样例输出:
0.222222222222222222222222222222
10000002.1
来源:
2008年北京大学软件所计算机研究生机试真题

思路:

容易犯细节错误,此题我WA了好几次。

代码:

#include <stdio.h>
#include <string.h>
char s1[110], s2[110], s[110];
int Find(char a[], int n)
{
int i;
for (i = 0; a[i]; i++)
{
if (a[i] == '.')
{
return i;
}
}
return -1;
}
int main()
{
int ca;
scanf("%d", &ca);
while (ca--)
{
scanf("%s%s", s1, s2);
int n1 = strlen(s1);
int n2 = strlen(s2);
int pos1 = 0, pos2 = 0;
pos1 = Find(s1, n1);
pos2 = Find(s2, n2);
int i = n1, j = n2;
int d = (n1 - pos1) - (n2 - pos2);
if (d > 0)
{
for (; j < n2 + d; j++)
{
s2[j] = '0';
}
s2[j] = '\0';
n2 = j;
}
else if (d < 0)
{
for (; i < n1 - d; i++)
{
s1[i] = '0';
}
s1[i] = '\0';
n1 = i;
}
i--;
j--;
int t = 0, len = 0;
while (i >= 0 && j >= 0)
{
if(s1[i] == '.')
{
s[len] = '.';
}
else
{
t += s1[i] + s2[j] - 2 * '0';
s[len] = t % 10 + '0';
t /= 10;
}
len++;
i--;
j--;
}
while (i >= 0)
{
t += s1[i--] - '0';
s[len++] = t % 10 + '0';
t /= 10;
}
while (j >= 0)
{
t += s2[j--] - '0';
s[len++] = t % 10 + '0';
t /= 10;
}
if (t == 1)
{
s[len++] = '1';
}
j = 0;
while (s[j] == '0')
{
j++;
}
for (i = len - 1; i >= j; i--)
{
printf("%c", s[i]);
}
printf("\n");
}
return 0;
}
/**************************************************************
Problem: 1137
User: liangrx06
Language: C
Result: Accepted
Time:150 ms
Memory:912 kb
****************************************************************/

九度OJ 1137:浮点数加法 (大数运算)的更多相关文章

  1. [九度OJ]1137.浮点数加法

    原题链接:http://ac.jobdu.com/problem.php?pid=1137 题目描述: 求2个浮点数相加的和题目中输入输出中出现浮点数都有如下的形式:P1P2...Pi.Q1Q2... ...

  2. 【九度OJ】题目1137:浮点数加法 解题报告

    [九度OJ]题目1137:浮点数加法 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1137 题目描述: 求2个浮点数相加的 ...

  3. 【九度OJ】题目1083:特殊乘法 解题报告

    [九度OJ]题目1083:特殊乘法 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1083 题目描述: 写个算法,对2个小于 ...

  4. 【九度OJ】题目1435:迷瘴 解题报告

    [九度OJ]题目1435:迷瘴 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1435 题目描述: 通过悬崖的yifenfei,又面临 ...

  5. 【九度OJ】题目1069:查找学生信息 解题报告

    [九度OJ]题目1069:查找学生信息 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1069 题目描述: 输入 ...

  6. 【九度OJ】题目1047:素数判定 解题报告

    [九度OJ]题目1047:素数判定 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1047 题目描述: 给定一个数n,要求判 ...

  7. 【九度OJ】题目1138:进制转换 解题报告

    [九度OJ]题目1138:进制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1138 题目描述: 将一个长度最多为30 ...

  8. 【九度OJ】题目1474:矩阵幂 解题报告

    [九度OJ]题目1474:矩阵幂 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1474 题目描述: 给定一个n*n的矩阵,求该矩阵的 ...

  9. 九度oj 题目1087:约数的个数

    题目链接:http://ac.jobdu.com/problem.php?pid=1087 题目描述: 输入n个整数,依次输出每个数的约数的个数 输入: 输入的第一行为N,即数组的个数(N<=1 ...

随机推荐

  1. 标准C程序设计七---114

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  2. Django 博客首页视图

    Django 处理 HTTP 请求 Web 应用的交互过程其实就是 HTTP 请求与响应的过程.无论是在 PC 端还是移动端,我们通常使用浏览器来上网,上网流程大致来说是这样的: 我们打开浏览器,在地 ...

  3. 转:c++ Oracle OCCI 编程

    原地址http://blog.sina.com.cn/s/blog_53a72add01015zj4.html 找不到具体的出处,只好不写了. OCCI数据库ORACLE编程步骤1. 配置环境(1)  ...

  4. Delphi 从PaintBox拷贝一部分内容到TBitmap

    将指定的TPaintBox内容(假如为paintbox1)拷贝到一个TBitmap(如Bitmap),可以这么做 Bitmap.Width := PaintBox1.Width; Bitmap.Hei ...

  5. AC日记——联合权值 洛谷 P1351

    题目描述 无向连通图G 有n 个点,n - 1 条边.点从1 到n 依次编号,编号为 i 的点的权值为W i ,每条边的长度均为1 .图上两点( u , v ) 的距离定义为u 点到v 点的最短距离. ...

  6. Light oj 1085 - All Possible Increasing Subsequences (简单dp + 离散化 + BIT)

    题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1085 题意: 问你有多少个上升子序列. 思路: dp[i]表示以第i个数结尾的 ...

  7. 【APIO2015】Bali Sculptures

    题目描述 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 $N$ 座雕塑,为方便起见,我们把这些雕塑从 $1$ 到 $N$ 连续地进行标号,其中第 $i$ 座雕塑的年 ...

  8. mybatis 源码学习(二)sqlsession

    mybatis 中的sqlsession是一个非常重要的类.上篇我们分析了sessionfactory初始化配置文件,我们继续分析sessionfactory拿到会话进行的操作. 看这里.getMap ...

  9. LINUX___的常用几个快捷键

    linux下:ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程.常用于终止正在运行的程序.ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程.ctrl- ...

  10. javascript --- 移除DOM节点

    在IE中移除容器类节点,会引起内存泄露,最好是创建一个新的节点,比如div,然后将要删除的节点放入这个div中,再将div的innerHTML清空.其它的直接removeChild就可以了. var ...