吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3462|回复: 8
收起左侧

[C&C++ 转载] 为啥输出会多一位比答案

[复制链接]
chinalixs 发表于 2015-2-16 00:05
1.png 我在dev-c上测试没问题的。

题目:

输入包括两行,每行包括N个数字(1≤N≤50),分别表示两个人对于N个事情对应的看法——0表示不赞同、1表示赞同。

两数相同输出1,不同输出0.

输出包括一行,包括N个数字,表示两人相遇后,对于这N件事情的最终看法。

样例输入
1110010100101011

样例输出
00110001我的代码:
[C] 纯文本查看 复制代码
#include <stdio.h>

int main()
{
        char a[3][50];
        char *p1=a[0];
        char *p2=a[1];
        char *p3=a[2]; 
        //输入两组数据 
        gets(p1);
        gets(p2);
        
for(;*p1!='\0';)
        {
                if(*p1==*p2)
                *p3='1';
                if(*p1!=*p2)
                *p3='0';
                p1++;
                p2++;
                p3++;
        }
        
        *p3='\0';
        puts(a[2]);
        return 0;
}         


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

homer 发表于 2015-2-16 12:59
....你的代码应该没问题的,感觉是那边将两个最后的“\0”也进行了比较,得出1,。所以,单纯为了过这个测试的话,在p3=“\0”前加一个 p3--,就行了。
[C] 纯文本查看 复制代码
#include <stdio.h>
 
int main()
{
        char a[3][50];
        char *p1=a[0];
        char *p2=a[1];
        char *p3=a[2]; 
        //输入两组数据 
        gets(a[0]);
        gets(a[1]);
         
for(;*p1!='\0'&&*p2!='\0';)
        {
                if(*p1==*p2)
                *p3='1';
                else
                *p3='0';
                p1++;
                p2++;
                p3++;
        
        }
         p3--;
        *p3='\0';
        puts(a[2]);
        return 0;
}

免费评分

参与人数 1热心值 +1 收起 理由
chinalixs + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.

查看全部评分

 楼主| chinalixs 发表于 2015-2-16 00:06
发誓要永远 发表于 2015-2-16 13:01
 楼主| chinalixs 发表于 2015-2-16 13:31
homer 发表于 2015-2-16 12:59
....你的代码应该没问题的,感觉是那边将两个最后的“\0”也进行了比较,得出1,。所以,单纯为了过这个测试 ...

对对。那边将两个最后的“\0”也进行了比较,得出1。可是我自己在编译器试是不会得出这个1的啊。p3--我试过也不行。
 楼主| chinalixs 发表于 2015-2-16 13:50
homer 发表于 2015-2-16 12:59
....你的代码应该没问题的,感觉是那边将两个最后的“\0”也进行了比较,得出1,。所以,单纯为了过这个测试 ...

用p3--真的解决了!我以前是把p3--;放在了
        *p3='\0';后面

听你的放在前面就通过了。不过我自己有点懵
 楼主| chinalixs 发表于 2015-2-16 13:52
homer 发表于 2015-2-16 12:59
....你的代码应该没问题的,感觉是那边将两个最后的“\0”也进行了比较,得出1,。所以,单纯为了过这个测试 ...

不懂为什么自己在编译器运行就不会判断最后那组'0'。p3--说明在最后那次p3++指针后移,然后再p3--前移。然后再赋值。没有覆盖最后那个p3里存的数?

我刚开始学指针有点乱~
homer 发表于 2015-2-16 17:18
chinalixs 发表于 2015-2-16 13:52
不懂为什么自己在编译器运行就不会判断最后那组'0'。p3--说明在最后那次p3++指针后移,然后再p3--前移。 ...

你是对的,是那边的问题。
其实有时候如果不能得出正确结果,你可以尝试另一种方法啊,例如这里,既然不能通过的话,就单纯用字符数组解决
醉空流澈 发表于 2015-2-16 20:35
我也觉得是结尾标志的原因,编译器原因吧。
1 1 1 0 0 1 0 1 \0
0 0 1 0 1 0 1 1 \0
0 0 1 1 0 0 0 1 1
for完后,指针在a[3][9],自减就到了a[3][8],再赋值为\0,也就是
0 0 1 1 0 0 0 1 \0
了。

免费评分

参与人数 1热心值 +1 收起 理由
chinalixs + 1 热心回复!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 15:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表