下面是源代码,但是有好多bug,但是实在找不到
问题相关代码,请勿粘贴截图
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int max(a, b)
{
if (a > b) return a;
else return b;
}
int min(a, b)
{
if (a < b) return a;
else return b;
}
void tidy(char* s1, char* s2,int *s1_4,int *s2_4,int j1,int j2)
{
int i;
j1 = j2 = 0;
//转换为4位整数组
for (i = 0; i < 100; i += 4)
{
s1_4[j1] = ((int)s1[i] - 48) * 1000 + ((int)s1[i + 1] - 48) * 100 + ((int)s1[i + 2] - 48) * 10 + ((int)s1[i + 3] - 48);
if (s1_4[j1] == 0)
break;
j1++;
}
for (i = 0; i < 100; i += 4)
{
s2_4[j2] = ((int)s2[i] - 48) * 1000 + ((int)s2[i + 1] - 48) * 100 + ((int)s2[i + 2] - 48) * 10 + ((int)s2[i + 3] - 48);
if (s1_4[j1] == 0)
break;
j2++;
}
//数组反序,实现数位对齐
int start = 0, end1 = j1, end2 = j2;
int temp;
while (start < end1)
{
temp = s1_4[end1];
s1_4[end1] = s1_4[start];
s1_4[start] = temp;
start++;
end1--;
}
start = 0;
while (start < end2)
{
temp = s1_4[end1];
s1_4[end1] = s1_4[start];
s1_4[start] = temp;
start++;
end1--;
}
}
void main()
{
int j1 = 0, j2 = 0;
int s1_4[25], s2_4[25];
int i;
char s1[100], s2[100];
memset(s1, '0', sizeof(s1));
memset(s2, '0', sizeof(s2));
printf("输入两个大整数,回车结束:");
gets(s1);
gets(s2);
tidy(s1, s2, s1_4, s2_4, j1, j2);
printf("\nresult:\n");
for (i = 0; i < j1; i++)
{
printf("%d", s1_4[i]);
}
printf("\n");
for (i = 0; i < j2; i++)
{
printf("%d", s2_4[i]);
}
}