我是C編程中的新手。 我已經寫了這個代碼,用於添加兩個數字與100位數字,但我不知道爲什麼代碼無法正常工作,它假設移動進位,但它不。 另一個問題是它只是忽略了第一位數字(最高位數字)。 有人可以幫我嗎?使用數組來存儲大數字
#include <stdio.h>
#include <ctype.h>
int sum[101] = {0};
int add(int a, int b);
void main()
{
static int a[100];
static int b[100];
char ch;
int i = 0;
int t;
for (t = 0; t != 100; ++t)
{
a[t] = 0;
}
for (t = 0; t != 100; ++t)
{
b[t] = 0;
}
do
{
ch = fgetc(stdin);
if (isdigit(ch))
{
a[i] = ch - 48;
++i;
}
else
break;
}
while (ch != '\n' || i == 100 || i != '\0');
i = 0;
do
{
ch = fgetc(stdin);
if (isdigit(ch))
{
b[i] = ch - 48;
++i;
}
else
break;
}
while (ch != '\n' || i == 100 || i != '\0');
for (;i!=0; --i)
{
add(a[i], b[i]);
}
for (i==0;i != 101; ++i)
{
printf("%d", sum[i]);
}
}
int add(int a , int b)
{
static int carry = 0;
float s = 0;
static int p = 101;
if (0 <= a+b+carry <= 9)
{
sum[p] = (a + b + carry);
carry = 0;
--p;
return 0;
}
else
{
if (10 <= a+b+carry < 20)
{
s = (((a+b+carry)/10.0) - 1) * 10 ;
carry = ((a+b+carry)/10.0) - (s/10);
}
else
{
s = (((a+b+carry)/10) - 2) * 10;
carry = ((a+b+carry)/10.0) - (s/10);
}
sum[p] = s;
--p;
return 0;
}
}
使用'int main'不是'void' – 2015-02-09 21:40:33
'while(ch!='\ n'|| i == 100 || i!='\ 0');' - 這真的搞砸了 – 2015-02-09 21:44:30
我知道,但我不認爲這與問題有任何關係。 – 2015-02-09 21:46:21