zoukankan      html  css  js  c++  java
  • HD1229

    #include<stdio.h>
    #include<math.h>
    int main()
    {
    	int a,b,k,s;
    	while(~scanf("%d%d%d",&a,&b,&k),a||b)
    	{
    		s=1;
    		while(k--)
    			s*=10;
    		//printf("%d\n",s);
    		if (a%s==b%s) 
    			printf("-1\n");
    		else
    			printf("%d\n", a+b);
    	}
    	return 0;
    }
    

      


    下面都是wa


    #include<stdio.h>
    #define min(a,b) a<=b?a:b
    //返回数的位数,并拆分
    int fun(int num,int temp[])
    {
    int i=0;
    while(num)
    {
    temp[i++]=num%10;
    num/=10;
    }
    return i;
    }
    int main()
    {
    int a,b,k;int c[8],d[8];int i,j;
    while(~scanf("%d%d%d",&a,&b,&k),a||b)
    {
    int len1=fun(a,c),len2=fun(b,d);
    int len=min(len1,len2);
    if(k>len)
    {
    for(i=0,j=0;i<len&&j<len;i++,j++)
    if(c[i]!=d[j])
    {

    printf("%d\n",a+b);
    break;
    }
    if(i==len||j==len)//不加上,会输出两个结果
    printf("-1\n");
    }
    else if(k=len1&&k==len2)
    {
    for(i=0,j=0;i<k&&j<k;i++,j++)
    if(c[i]!=d[j])
    {

    printf("%d\n",a+b);
    break;
    }
    if(i==k||j==k)//不加上,会输出两个结果
    printf("-1\n");
    }


    else
    for(i=0,j=0;i<k&&j<k;i++,j++)
    if(c[i]!=d[j])
    {
    printf("%d\n",a+b);
    break;
    }
    if(i==k||j==k)//不加上,会输出两个结果
    printf("-1\n");
    }
    return 0;
    }
    //程序wa啦,应为108 8 2,看做满足条件


    #include<stdio.h>
    #include<string.h>
    #include<malloc.h>
    #define min(a,b) a<b?a:b
    int main()
    {
    char a[6],b[6],*c,*d;
    int k;int len1,len2,len;int num1,num2;int i,j;
    while(~scanf("%s %s %d",a,b,&k))
    {
    if(a[0]=='0'&&b[0]=='0')//TMD,字符0,否则停止
    break;
    len1=strlen(a);
    len2=strlen(b);
    c=(char *)malloc(len1);
    d=(char *)malloc(len2);
    memcpy(c,a,len1);
    memcpy(d,b,len2);
    len=min(len1,len2);
    sscanf(c,"%d",num1);
    sscanf(d,"%d",num2);
    if(k>len)
    printf("%d\n",num1+num2);
    else
    for(i=len1-1;i>=len1-k;i--)
    //差点搞错,应该是i=k-1;再自减,一调试,发现停止工作,引用了未初始化内存,自认为是sscanf

    //原来错啦,应该是if(a[0]==0&&b[0]==0)有问题,0应该是字符0
    //应该先用memcpy把初始化的内存复制一下,还要动态内存分配
    //况且,逻辑有问题,每个字符数组的最后开始
    for(j=len2-1;j>=len2-k;j--)
    if(a[i]!=b[i])
    printf("%d\n",num1+num2);
    if(i=k)
    printf("-1\n");
    }
    return 0;
    }


    //刚知道sscanf也有memcpy的功能,sscanf(a,"5s",b),复制前五个字节到b


    #include<stdio.h>
    #include<string.h>
    #include<malloc.h>
    //#define min(a,b) a<b?a:b
    int min(int a,int b)
    {
    return a<b?a:b;
    }//换成函数后还是停止,看来不是define问题
    int main()
    {
    char a[6],b[6];
    int k;int len1,len2,len;int num1,num2;int i,j;
    while(~scanf("%s %s %d",a,b,&k))
    {
    if(a[0]=='0'&&b[0]=='0')//TMD,字符0,否则停止
    break;
    len1=strlen(a);
    len2=strlen(b);
    //c=(char *)malloc(len1);
    //d=(char *)malloc(len2);
    // memcpy(c,a,len1);
    // memcpy(d,b,len2);
    len=min(len1,len2);
    sscanf(a,"%d",num1);
    sscanf(b,"%d",num2);
    if(k>len)
    printf("%d\n",num1+num2);
    else
    for(i=len1-1,j=len2-1;(i>=len1-k)&&(j>=len2-k);i--,j--)
    //差点搞错,应该是i=k-1;再自减,一调试,发现停止工作,引用了未初始化内存,自认为是sscanf

    //原来错啦,应该是if(a[0]==0&&b[0]==0)有问题,0应该是字符0
    //应该先用memcpy把初始化的内存复制一下,还要动态内存分配
    //况且,逻辑有问题,每个字符数组的最后开始,应该写在一个for循环内
    if(a[i]!=b[j])
    printf("%d\n",num1+num2);
    if(i=k)
    printf("-1\n");
    }
    return 0;
    }


    //刚知道sscanf也有memcpy的功能,sscanf(a,"5s",b),复制前五个字节到b

  • 相关阅读:
    asp.net mvc3开发系统点滴之一
    C# winform 广告机 网络多媒体发布系统桌面版之一
    asp.net mvc3开发系统点滴之三
    js面向对象开发互联网机顶盒应用头端之五
    asp.net mvc3开发系统点滴之二
    【转载】指针空间的申请和释放(C)
    [转载]C 指针
    hoj2036
    hoj1142
    hoj1878
  • 原文地址:https://www.cnblogs.com/hxsyl/p/2499213.html
Copyright © 2011-2022 走看看