?
int
?Dec(
char
?
*
a,
char
?
*
b,
char
?
*
ans)
{
????
int
?aLen,bLen;
????
int
?aLast,bLast,ansLast;
????aLen?
=
?strlen(a);
????aLast?
=
?aLen
-
1
;
????bLen?
=
?strlen(b);
????bLast?
=
?bLen
-
1
;
????ansLast?
=
?aLast;
????ans[ansLast
+
1
]?
=
?
'
\0
'
;
????
while
?(bLast
>=
0
)
????{
????????
if
?(a[aLast]
<
b[bLast])
????????{
????????????a[aLast
-
1
]
--
;
????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
-
int
(b[bLast
--
])
+
58
);
????????}
????????
else
????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
-
int
(b[bLast
--
])
+
48
);
????}
????
while
?(aLast
>=
0
)
????{
????????
if
?(a[aLast]
<
'
0
'
)
????????{
????????????a[aLast
-
1
]
--
;
????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
+
10
);
????????}
????????
else
????????????ans[ansLast
--
]?
=
?a[aLast
--
];
????}
????
return
?
0
;
}
int
?Add(
char
?
*
a,
char
?
*
b,
char
?
*
ans)
{
????
int
?aLen,bLen;
????
int
?aLast,bLast,ansLast;
????
int
?flag?
=
?
false
;
//
進(jìn)位標(biāo)志
????aLen?
=
?strlen(a);
????aLast?
=
?aLen
-
1
;
????bLen?
=
?strlen(b);
????bLast?
=
?bLen
-
1
;
????ansLast?
=
?aLen;
????ans[ansLast
+
1
]?
=
?
'
\0
'
;
????ans[
0
]?
=
?
'
0
'
;
????
????
while
?(bLast
>=
0
)
????{
????????
if
?(flag)
????????{
????????????
if
?(
int
(a[aLast])
+
int
(b[bLast])
>=
105
)
????????????{
????????????????flag?
=
?
true
;
????????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
+
int
(b[bLast
--
])
-
105
+
48
);
????????????}
????????????
else
????????????{
????????????????flag?
=
?
false
;
????????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
+
int
(b[bLast
--
])
-
95
+
48
);
????????????}
????????}
????????
else
????????{
????????????
if
?(
int
(a[aLast])
+
int
(b[bLast])
>=
106
)
????????????{
????????????????flag?
=
?
true
;
????????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
+
int
(b[bLast
--
])
-
106
+
48
);
????????????}
????????????
else
????????????{
????????????????flag?
=
?
false
;
????????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
+
int
(b[bLast
--
])
-
96
+
48
);
????????????}
????????}
????}
????
while
?(aLast
>=
0
)
????{
????????
if
?(flag)
????????{
????????????
if
?(
int
(a[aLast])
>=
57
)
????????????{
????????????????flag?
=
?
true
;
????????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
-
57
+
48
);
????????????}
????????????
else
????????????{
????????????????flag?
=
?
false
;
????????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
+
1
);
????????????}
????????}
????????
else
????????{
????????????
if
?(
int
(a[aLast])
>=
58
)
????????????{
????????????????flag?
=
?
true
;
????????????????ans[ansLast
--
]?
=
?
char
(
int
(a[aLast
--
])
-
58
+
48
);
????????????}
????????????
else
????????????{
????????????????flag?
=
?
false
;
????????????????ans[ansLast
--
]?
=
?a[aLast
--
];
????????????}
????????}
????}
????
if
?(flag)
????????ans[ansLast]?
=
?
'
1
'
;
????
return
?
0
;
}
//第二版string_add And string compare
string?add(string?a,?string?b)


{
????string?c,?c1;
????int?p,?q;
????int?i;
????int?tmp;
????bool?flag;

????if?(a.length()?<?b.length())?
{
????????swap(a,?b);
????}
????p?=?a.length()-1;
????q?=?b.length()-1;
????flag?=?false;

????while?(q?>=?0)?
{
????????tmp?=?a[p--]?+?b[q--]?-96;

????????if?(flag)?
{
????????????tmp++;
????????}
????????flag?=?false;

????????if?(tmp?>=?10)?
{
????????????tmp?-=?10;
????????????flag?=?true;
????????}
????????c?+=?char(tmp+48);
????}

????while?(p?>=?0)?
{
????????tmp?=?a[p--]?-?48;

????????if?(flag)?
{
????????????tmp++;
????????}
????????flag?=?false;

????????if?(tmp?>=?10)?
{
????????????tmp?-=?10;
????????????flag?=?true;
????????}
????????c?+=?char(tmp+48);
????}

????if?(flag)?
{
????????c?+=?'1';
????}

????for?(i=c.length()-1;?i>=0;?i--)?
{
????????c1?+=?c[i];
????}
????return?c1;
}

int?str_compare(string?a,?string?b)?


{
????int?rtn;
????int?aLen?=?a.length();
????int?bLen?=?b.length();

????if?(aLen?>?bLen)?
{
????????rtn?=?1;

????}?else?if?(aLen?<?bLen)?
{
????????rtn?=?-1;

????}?else?
{

????????if?(a?==?b)?
{
????????????rtn?=?0;

????????}?else?if?(a?>?b)?
{
????????????rtn?=?1;

????????}?else?if?(a?<?b)?
{
????????????rtn?=?-1;
????????}
????}
????return?rtn;
}
posted on 2006-03-02 21:59
豪 閱讀(800)
評論(0) 編輯 收藏 引用 所屬分類:
數(shù)據(jù)結(jié)構(gòu)與算法