C语言高精度加法
答案:2 悬赏:60 手机版
解决时间 2021-02-05 06:40
- 提问者网友:你给我的爱
- 2021-02-04 17:42
C语言高精度加法
最佳答案
- 五星知识达人网友:神的生死簿
- 2021-02-04 19:15
你输入的是字符哦!!应该把字符转为数字再运算,然后你那两个循环的转换有什么作用??
我随便帮改了下!!不过其他输入方面的错误和浮点数的考虑我没加上!!自己想想吧!!
#include
#include
#include
char a[500], b[500];
int c[501];
void strfun ( char *p, int min, int max );//靠右对齐两个字符串
int main()
{
int la, lb, i, j, m;
gets (a);
gets (b);
la = strlen (a);
lb = strlen (b);
if ( la > lb )
strfun ( b, lb, la );
else if ( la < lb )
strfun ( a, la, lb );
m = la > lb ? la : lb;
for ( i = m; i >= 0; --i )
{
c[i] += (a[i] - '0') + (b[i] - '0');
if( c[i] > 9 )
{
c[i] = c[i] - 10;
c[i-1]++;
}
}
if ( c[i] == 1 )
putchar ('1');
for( i = 0; i < m; i++ )
printf("%d", c[i]);
putchar ('\n');
system ("PAUSE");
return 0;
}
void strfun ( char *p, int min, int max )//靠右对齐两个字符串
{
int i, j, k;
k = max - min;
for ( i = max, j = min; i >= 0; --i, --j )
{
if ( i >= k )
*(p + i) = *(p + j);
else *(p + i) = '0';
}
}
我随便帮改了下!!不过其他输入方面的错误和浮点数的考虑我没加上!!自己想想吧!!
#include
#include
#include
char a[500], b[500];
int c[501];
void strfun ( char *p, int min, int max );//靠右对齐两个字符串
int main()
{
int la, lb, i, j, m;
gets (a);
gets (b);
la = strlen (a);
lb = strlen (b);
if ( la > lb )
strfun ( b, lb, la );
else if ( la < lb )
strfun ( a, la, lb );
m = la > lb ? la : lb;
for ( i = m; i >= 0; --i )
{
c[i] += (a[i] - '0') + (b[i] - '0');
if( c[i] > 9 )
{
c[i] = c[i] - 10;
c[i-1]++;
}
}
if ( c[i] == 1 )
putchar ('1');
for( i = 0; i < m; i++ )
printf("%d", c[i]);
putchar ('\n');
system ("PAUSE");
return 0;
}
void strfun ( char *p, int min, int max )//靠右对齐两个字符串
{
int i, j, k;
k = max - min;
for ( i = max, j = min; i >= 0; --i, --j )
{
if ( i >= k )
*(p + i) = *(p + j);
else *(p + i) = '0';
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯