用C#做一个计算器加减乘除的思路?
2个回答
展开全部
这个可以用一位全加器的思路解决,用一个我有不限位数加法的C语言代码,做ACM的时候的,你再联想一下就可以写出来了。
思路,用一个大数组,一位一位的加。
代码:
#include
int
main()
{
int
a[240]=,b[240]=,c[241]=;
int
i,ka,kb,k;
char
a1[240],b1[240];
gets(a1);
ka=strlen(a1);
gets(b1);
kb=strlen(b1);
if(ka>=kb)
k=ka;
else
k=kb;
for(i=0;i
a[i]=a1[ka-i-1]-'0';
for(i=0;i
b[i]=b1[kb-i-1]-'0';
for(i=0;i
{
c[i]=a[i]+b[i]+c[i];
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
if(c[k])
k++;
for(i=k-1;i>=0;i--)
printf("%d",c[i]);
getchar();
return
0;
}
这个只有240位,你可以将数组改大点,但是C必须比加数多一位,否则溢出。
楼上几位太不给力了啊,不知道从哪儿粘贴来MFC的代码,还是工程文件中的一个子文件。。。这根本编译不通的,有本事直接把界面一起拷贝给提问者算了。。。
附上运行结果:
另外,虚机团上产品团购,超级便宜
思路,用一个大数组,一位一位的加。
代码:
#include
int
main()
{
int
a[240]=,b[240]=,c[241]=;
int
i,ka,kb,k;
char
a1[240],b1[240];
gets(a1);
ka=strlen(a1);
gets(b1);
kb=strlen(b1);
if(ka>=kb)
k=ka;
else
k=kb;
for(i=0;i
a[i]=a1[ka-i-1]-'0';
for(i=0;i
b[i]=b1[kb-i-1]-'0';
for(i=0;i
{
c[i]=a[i]+b[i]+c[i];
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
if(c[k])
k++;
for(i=k-1;i>=0;i--)
printf("%d",c[i]);
getchar();
return
0;
}
这个只有240位,你可以将数组改大点,但是C必须比加数多一位,否则溢出。
楼上几位太不给力了啊,不知道从哪儿粘贴来MFC的代码,还是工程文件中的一个子文件。。。这根本编译不通的,有本事直接把界面一起拷贝给提问者算了。。。
附上运行结果:
另外,虚机团上产品团购,超级便宜
展开全部
这个可以用一位全加器的思路解决,用一个我有不限位数加法的C语言代码,做ACM的时候的,你再联想一下就可以写出来了。
思路,用一个大数组,一位一位的加。
代码:
#include
int
main()
{
int
a[240]=,b[240]=,c[241]=;
int
i,ka,kb,k;
char
a1[240],b1[240];
gets(a1);
ka=strlen(a1);
gets(b1);
kb=strlen(b1);
if(ka>=kb)
k=ka;
else
k=kb;
for(i=0;i
a[i]=a1[ka-i-1]-'0';
for(i=0;i
b[i]=b1[kb-i-1]-'0';
for(i=0;i
{
c[i]=a[i]+b[i]+c[i];
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
if(c[k])
k++;
for(i=k-1;i>=0;i--)
printf("%d",c[i]);
getchar();
return
0;
}
这个只有240位,你可以将数组改大点,但是C必须比加数多一位,否则溢出。
楼上几位太不给力了啊,不知道从哪儿粘贴来MFC的代码,还是工程文件中的一个子文件。。。这根本编译不通的,有本事直接把界面一起拷贝给提问者算了。。。
附上运行结果:
思路,用一个大数组,一位一位的加。
代码:
#include
int
main()
{
int
a[240]=,b[240]=,c[241]=;
int
i,ka,kb,k;
char
a1[240],b1[240];
gets(a1);
ka=strlen(a1);
gets(b1);
kb=strlen(b1);
if(ka>=kb)
k=ka;
else
k=kb;
for(i=0;i
a[i]=a1[ka-i-1]-'0';
for(i=0;i
b[i]=b1[kb-i-1]-'0';
for(i=0;i
{
c[i]=a[i]+b[i]+c[i];
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
if(c[k])
k++;
for(i=k-1;i>=0;i--)
printf("%d",c[i]);
getchar();
return
0;
}
这个只有240位,你可以将数组改大点,但是C必须比加数多一位,否则溢出。
楼上几位太不给力了啊,不知道从哪儿粘贴来MFC的代码,还是工程文件中的一个子文件。。。这根本编译不通的,有本事直接把界面一起拷贝给提问者算了。。。
附上运行结果:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询