3个回答
展开全部
//把各位的数码存入字符数组中,注意ASCAII码的转换
#include<stdio.h>
#include<string.h>
#include <conio.h>
int main()
{
int s,t,i,len1,len2;
char s1[30],s2[30],n1[30],n2[30],sum[31];
//将字符串以数码形式按倒序存储于新字符串中,便于计算
printf("input 2 num(小于10^40):\n");
scanf("%s%s",&s1,&s2);
len1=strlen(s1);
len2=strlen(s2);
t=0;
for(i=len1;i>=0;i--)n1[t++]=s1[i-1]-48;
t=0;
for(i=len2;i>=0;i--)n2[t++]=s2[i-1]-48;
//高位补0
if(len1>len2)
{
n1[len1]=0;
for(i=len2;i<len1;i++)n2[i]=0;
}
if(len1<len2)
{
n2[len2]=0;
for(i=len1;i<len2;i++)n1[i]=0;
}
//计算
t=0;
s=0;
for(i=0;i<(len1>len2?len1:len2);i++)
{
s=n1[i]+n2[i]+t;//s为数码之和
sum[i]=s%10; //sum[i]为该位上的数码
t=s/10;//t为进位
s=0;
}
//输出
putchar(10);
if(t>0)
{
sum[i]=t;
for(s=i;s>=0;s--)printf("%c",sum[s]+48);
}
else
{
for(s=i-1;s>=0;s--)printf("%c",sum[s]+48);
}
getch();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<string.h>
char a1[100010];
char b1[100010];
int a[100010];
int b[100010];
int c[100010];
int main()
{
scanf("%s%s",a1,b1);
int Hive=strlen(a1);
int Bosh=strlen(b1);
for(int i=0;i<Hive;i++)
{
a[Hive-i-1]=a1[i]-'0';
}
for(int i=0;i<Bosh;i++)
{
b[Bosh-i-1]=b1[i]-'0';
}
int t=0;
int x=0;
while(t<Hive||t<Bosh)
{
c[t]=a[t]+b[t]+x;
x=(c[t])/10;
c[t]%=10;
t++;
}
c[t]=x;
if(c[t]==0)
{
t--;
}
for(int i=t;i>=0;i--)
{
printf("%d",c[i]);
}
}
你指的高精度?
用数组或者结构体都可以
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-02-09 · 知道合伙人互联网行家
关注
展开全部
自己把c语言记住吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询