码迷,mamicode.com
首页 > 其他好文 > 详细

——————————————————————————————1002——————————————————————————

时间:2015-11-25 00:26:16      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

/*自己太弱,太水。容易犯这样那样的错误。      要改 要刷题。
写得不好,有好多便利的方法都没用,以后还回来改进的
*/
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    int l1,l2,p1,t,z1,a[2000],b[2000],d,c,f,i,j,e[2000];//定义数组用于一会盛放单个数字,便于计算。
    char q[2000],w[2000];//定义字符数组可以一个一个的读取键盘上的数字。
    scanf("%d",&z1);
    for(p1=1;p1<=z1;p1++)
    {
        memset(a,0,sizeof(a));//对没错这就是传说中的数组清零。
        memset(b,0,sizeof(b));//为了之后的相加所以将其清零
        memset(q,0,sizeof(q));//
        memset(w,0,sizeof(w));//
        scanf("%s%s",q,w);//输入想要比较的数字。
        f=0;
        l1=strlen(q);
        l2=strlen(w);
        for(j=0,i=l2-1;i>=0;i--)//将想要比较的数字,一个一个的输入到数组里、
        {
            a[j++]=w[i]-0;//这里是-‘0’就将字符型数组直接转换成了整数数组。
        }
        for(j=0,i=l1-1;i>=0;i--)//同上
        {
            b[j++]=q[i]-0;
        }
        if(l1>=l2)
            ;
        else
            l1=l2;
        for(i=0;i<l2;i++)//将其中的数字从也就是较短的那个为准,开始相加
        {
            t=a[i]+b[i]+f;//用于检测是否需要进位
            d=t%10;
            e[i]=d;//将个位数字输入数组
            if(t>=10)//如果需要仅为的话用f标记一下。
                f=1;
            else
                f=0;
        }
        for(i=l2;i<l1;i++)//基本同上,不过这个是将剩余的相加
        {
            c=a[i]+b[i];
            t=a[i]+b[i]+f;
            d=t%10;
            e[i]=d;
            if(t>=10)
                f=1;
            else
                f=0;
        }
        printf("Case %d:\n",p1);
        printf("%s + %s = ",q,w);
        if(f==1)//如果到最后还需要仅为的话就do it、
            printf("1");
        for(i=l1-1;i>=0;i--)
        {
            printf("%d",e[i]);
        }
        printf("\n");
        if(p1!=z1)
            printf("\n");
    }
}

 

——————————————————————————————1002——————————————————————————

标签:

原文地址:http://www.cnblogs.com/A-FM/p/4993384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!