Aaron学习笔记
少壮不努力,长大没饭吃!
posts - 4, comments - 13, trackbacks - 0, articles - 37
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔档案
(4)
2009年5月 (2)
2009年4月 (2)
文章分类
(36)
C++学习(1)
C和指针(6)
JAVA基础(5)
Linux编程(7)
日常练习(10)
算法设计与分析(7)
文章档案
(37)
2011年7月 (1)
2011年6月 (3)
2011年5月 (1)
2011年4月 (2)
2010年9月 (1)
2010年8月 (4)
2010年7月 (1)
2009年9月 (2)
2009年8月 (1)
2009年7月 (2)
2009年5月 (2)
2009年4月 (3)
2009年3月 (10)
2009年1月 (4)
常去的网站
CSDN论坛
网易论坛
积分与排名
积分 - 66151
排名 - 341
最新随笔
1. 怎么说呢,哎
2. 郁闷,今天没有进展
3. 早起签个名
4. 每天都获得一点小进步
最新评论
1. re: 判断一个IP地址是不是合法
评论内容较长,点击标题查看
--yueyongqiang
2. re: Java中的内部类
很不错,学习了!
--clytze
3. re: 删除字符串中的一部分
没人发现这代码是不对的吗???
--tian
4. re: 字符串查找
不是很理解上方代码,貌似代码要求是查找字符串 但是上面只实现了对字符串的首字符进行匹配的工作
--lost-angel
5. re: 判断一个IP地址是不是合法
109.66.2.1
--fiona
阅读排行榜
1. 怎么说呢,哎(381)
2. 每天都获得一点小进步(349)
3. 郁闷,今天没有进展(331)
4. 早起签个名(318)
评论排行榜
1. 怎么说呢,哎(1)
2. 每天都获得一点小进步(0)
3. 早起签个名(0)
4. 郁闷,今天没有进展(0)
大整数相加
Posted on 2009-05-26 23:33
赞劲小子
阅读(253)
评论(0)
编辑
收藏
引用
自己写大整数数相加,估计效率很低吧,呵呵
#include
"
stdio.h
"
#include
"
stdlib.h
"
#include
"
string.h
"
void
addBigNumber(
char
*
str1,
char
*
str2);
void
main()
{
char
str1[
100
];
char
str2[
100
];
printf(
"
请输入第一个大整数:\n
"
);
gets(str1);
printf(
"
请输入第二个大整数:\n
"
);
gets(str2);
if
(strlen(str1)
>=
strlen(str2))
addBigNumber(str1,str2);
else
addBigNumber(str2,str1);
return
;
}
void
addBigNumber(
char
*
str1,
char
*
str2)
{
register
char
*
s1
=
str1;
register
char
*
s2
=
str2;
register
int
flag
=
0
;
register
int
number
=
0
;
/**/
/*
现将s1和s2置于末尾,'\0'的前面
*/
while
(
*
s1
!=
'
\0
'
)
s1
++
;
while
(
*
s2
!=
'
\0
'
)
s2
++
;
--
s1;
--
s2;
if
(strlen(str1)
>=
strlen(str2))
{
while
( s2
!=
str2)
{
number
=
(
*
s1
-
0x30
)
+
(
*
s2
-
0x30
)
+
flag;
if
(number
>=
10
)
{
*
s1
=
(number
-
10
)
+
0x30
;
flag
=
1
;
}
else
{
*
s1
=
number
+
0x30
;
flag
=
0
;
}
s1
--
;
s2
--
;
}
number
=
(
*
s1
-
0x30
)
+
(
*
s2
-
0x30
)
+
flag;
/**/
/*
*处理像1234343+121 12121+9878,s1 至少比 s2长一位时的加法
*/
if
(s1
!=
str1)
{
if
(number
>=
10
)
{
*
s1
=
(number
-
10
)
+
0x30
;
flag
=
1
;
}
else
{
*
s1
=
number
+
0x30
;
flag
=
0
;
}
s1
--
;
*
s1
=
(
*
s1
-
0x30
)
+
flag
+
0x30
;
}
/**/
/*
*处理像1211+2212 8787+7676 s1和s2位数相等时的加法
*/
else
if
(s1
==
str1 )
{
/**/
/*
这里是位数相等,但最高位要进1时的处理
*/
if
(number
>
10
)
{
/**/
/*
这里要包含'\0'
*/
while
(
*
s1
!=
'
\0
'
)
{
s1
++
;
}
while
(s1
!=
str1)
{
*
(s1
+
1
)
=
*
s1;
s1
--
;
}
*
(s1
+
1
)
=
*
s1;
s1
++
;
*
s1
=
(number
-
10
)
+
0x30
;
s1
--
;
*
s1
=
1
+
0x30
;
}
/**/
/*
这里是位数相等,但最高位不1时的处理
*/
else
{
*
s1
=
number
+
0x30
;
}
}
}
printf(
"
%s
"
,str1);
}
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 赞劲小子