大数求和
大数求和标签(空格分隔): OJ_算法 题目二[大数求和] 描述: 题目类别: 字符串 输出: 样例输入: 样例输出: 代码 #include<stdio.h>
#include<string.h>
#define N 101
void BigNumSum(char* num1,char* num2,char* sum)
{
int len1 = strlen(num1);
int len2 = strlen(num2);
int sum_bit_h = 0;
int sum_bit = 0;
memset(sum,0,N*sizeof(char));
for (int i = len2; i > 0; i--)
{
if (i - len2 + len1 - 1 >= 0)
sum_bit = num1[i - len2 + len1 - 1] - '0' + num2[i - 1] - '0' + sum_bit_h;
else
sum_bit = num2[i - 1] - '0' + sum_bit_h;
sum[i] = sum_bit%10 + '0';
sum_bit_h = sum_bit / 10;
}
sum[0] = (char)(sum_bit_h + '0');
}
int main()
{
char num1[N],num2[N],sum[N];
gets(num1);//这种读取方式可以通过
gets(num2);
/*fgets(num1,sizeof(num1),stdin);//在华为OJ上,使用这种读取方式运行不通过,求解释? fgets(num2,sizeof(num2),stdin); int len1 = strlen(num1); num1[len1 - 1] = ' '; int len2 = strlen(num2); num2[len2 - 1] = ' ';*/
if (strlen(num1) < strlen(num2))
BigNumSum(num1,num2,sum);
else
BigNumSum(num2,num1,sum);
int i = 0;
while (sum[i] == '0')
i++;
printf("%sn",sum+i);
return 0;
}
存在的问题:gets读入数据在华为OJ上可以通过,fgets不能通过;?为什么?求告知? 参考:http://www.voidcn.com/article/p-kvdrslhx-yv.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |