求大神帮我看看哪里错了
#include<stdio.h>#define n 50
main()
{
char a={},b={},c={},ch,f,m;
int i,d=0,e=0,g,h,k,j;
for(i=0;i<n;i++)//全部初始化为0,防止“\0”的出现
{
a='0';b='0';c='0';
}
for(i=n-1;i>=0;i--)//输入字符
{
scanf("%c",&ch);
if(ch==' ')break;
a=ch;
d++;
}
for(i=n-1;i>=0;i--)//同上
{
scanf("%c",&ch);
if(ch=='\n')break;
b=ch;
e++;
}
for(i=n-d,g=0;g<=d/2-1;i++,g++)//逆序
{
f=a;
a=a;
a=f;
}
for(i=n-d,g=0;g<=e/2-1;i++,g++)//同上
{
h=b;
b=b;
b=h;
}
for(i=n-1;i>=0;i--)//解决进位的问题
{
if(((a-'0')+(b-'0'))/10==0)//解决不进位的算法
{
if((a-'0')+(b-'0')==10)
{
c='0';
a++;
}
else
c=(a-'0')+(b-'0')+'0';//感觉这样写麻烦,但别的都错了……
}
else//解决进位的算法
{
c=(a-'0')+(b-'0')-10+'0';
j=((a-'0')+(b-'0'))/10;
a+=j;
}
}
for(i=0;i<=n;i++)//算出到底到哪一位才开始有数字
{
if(c!='0')
{
k=i;
break;
}
}
for(i=k;i<n;i++)//输出结果
{
printf("%c",c);
}
}
这是一个算加法功能的程序 为了能算超长度数字的运算,所以用字符来运算,毕竟int的大小是有限的 我在c-free上运行时结果是正确的,但提交到网上的时候就错误了……我在c-free上调试也没看出什么毛病来
求大神解答啊!!!!{:10_269:}{:10_269:} 也许是因为
char a, b, c, ch, f, m;
解决这个问题最好使用栈
for(i=0;i<=n;i++) 数组越界了吧 for(i=0;i<=n;i++) 这个地方会越界 楼上对的
还有就是 加入输入是'a' 'b' ' c'等字符怎么办,好像没有判断 用编译软件
页:
[1]