📄 bigadd.c
字号:
#include <stdio.h>
#include <string.h>
#define MAX 100
void Input(char *x, char *y)
{
printf("Please input your first number:");
scanf("%s", x);
printf("Please input your second number:");
scanf("%s", y);
}
void Output(char *x)
{
printf("The result is %s\n", x);
}
void Reverse(char *s, int len)
{
int i, temp;
for(i = 0; i < len / 2; ++i)
{
temp = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = temp;
}
}
void Char2num(char *s, int len)
{
int i;
for(i = 0; i < len; ++i)
s[i] = s[i] - '0';
}
void Num2char(char *s, int len)
{
int i;
for(i = 0; i < len; ++i)
s[i] = s[i] + '0';
s[len] = '\0';
}
void Add(char *x, char *y, char *z)
{
int xlen = strlen(x), ylen = strlen(y), zlen;
int longlen = xlen > ylen? xlen:ylen, shortlen = xlen < ylen? xlen:ylen;
char *p = xlen < ylen? x:y;
int i;
Reverse(x, xlen);
Reverse(y, ylen);
Char2num(x, xlen);
Char2num(y, ylen);
zlen = longlen + 1;
memset(p + shortlen, 0, longlen - shortlen);
memset(z, 0, zlen);
for(i = 0; i < longlen; ++i)
{
z[i] += x[i] + y[i];
if(z[i] >= 10)
{
z[i]%=10;
z[i+1] = 1;
}
}
if(z[zlen - 1] == 0) --zlen;
Reverse(z, zlen);
Num2char(z, zlen);
}
int main(int argc, char *argv[])
{
char a[MAX], b[MAX], c[MAX];
Input(a, b);
Add(a, b, c);
Output(c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -