又是我!
没错有点闲。。给大家写写代码 不过我c真可怜 我经常找不到代码抄
好吧这不是重点
很多同学在遇见一个输入大数计算的时候 ,觉得很简单,回过头发现数据溢出,才知道不是简单的输入输出,那么我们应该怎么做呢?
思路:数组,无非就是把数字输入到数组 然后挨个判断相加,接着判断进位,
那么该怎么写呢?来看代码吧1
#include <stdio.h>
#include <string.h>
int main()
{
int i, j, a,b;
char s1[1000], s2[1000];
int num1[1000] = {
0};
int num2[1000] = {
0};
scanf("%s %s", s1, s2);
a = strlen(s1); //这里采用了strlen量取长度 方便我存到数组
//其实可以直接数组
b = strlen(s2);
for(i=a-1, j=0; i>=0; i--)
{
num1[j] = s1[i] -48 ;//肯定有人问 为什么-48,
//因为这样是把字符转数字 你也可以写-‘0’;
j++;
}
for(i=b-1, j=0; i>=0; i--)
{
num2[j] = s2[i] - 48;//一个一个存入
j++;
}
for(i=0; i<=1000; i++)
{
num1[i] = num1[i]+num2[i];//数组已经挨个存入,现在开始计算
if(num1[i]>9)//如果相同位置的和大于10
{
num1[i] = num1[i]-10;//让这一位-10;
num1[i+1]++; //上一位+1;也就是10;
}
}
for(i=1000-1; i>=0&&num1[i]==0; i--); //判断0位,
if(i>0)
{
for(i; i>=0; i--)
{
printf("%d", num1[i]);,//输出,
}
}
return 0;
}
差不多就是这样,有什么不懂可以评论私信问我 爱你们,码字不易 点点关注点个赞吧!