#include<string.h>
#include<stdlib.h>
void 纯轿RightMoving(char *s,int n)
{
char *p=s,*q
while(*p++!='\0')
for(q=pq!=sq--)
*(q-1+n) = *(q-1)
for(int i=0i<n++i)s[i] = '0'
}
int LargerIntegerAdd(char 游租*result,char *n1,char *n2)
{
int i,t=0,num
num = strlen(n1)>strlen(n2)?strlen(n1):strlen(n2)
result[num]='\0'
for(i=num-1i>-1i--)
{
result[i] = (n1[i] + n2[i] + t - '0')
t=0
if(result[i]>'9')
{
t++
result[i] -= 10
}
}
return t
}
int main()
{
int i
char 做磨肆n1[200],n2[200],result[200]
gets(n1)
gets(n2)
printf("%s+%s=",n1,n2)
if(strlen(n1)>strlen(n2))
RightMoving(n2,strlen(n1)-strlen(n2))
if(strlen(n1)<strlen(n2))
RightMoving(n1,strlen(n2)-strlen(n1))
i = LargerIntegerAdd(result,n1,n2)
if(i>0)
printf("%d",i)
puts(result)
return 0
}
你刚提问就在敲……其中不小心多加了1搞的调试到现在,终于好了!
这个就是不对齐的结果1234 1234
123 123
------------------
1358 2464
给你提个思路,就是反序后,那么个位和个位就对上了,计算完成后,在反序回来,呵呵
反序用strrev函数
中心思路,轮备派个位先加
c[0]=a[0]+b[0]
用for处理中间各位,滚圆注腊贺意要加上上一位的进位,并上一位取一位
for(i=1i<ki++)
{
c[i]=a[i]+b[i]+c[i-1]/10
c[i-1]%=10
}
最后要处理最高位
如果大于9,那么再加一位
if(c[k-1]>9)
{
c[k-1]%=10
c[k]=1
k++
}
最后int变char,注意要加上\0结束符
反序回来就是结果
1、首先把头文件,main函数写好#include<stdio.h> main(),如下图所示。
2、之后需要定义几个誉消蔽变量,一个存放和,一个从1开始到100,如下图所示。
3、之后书写for循环,首先给i赋值为1,其中如果要求200以内和把数字100改为200即可。
4、然后写for循环里面的内容,sum=sum+i;把每个i的值加到sum里面。
5、最后进行输出,编写输出语句把它输出出来,sum为整形,故桥卖用%d,如下图所示就完成了。庆州
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)