标题:奇怪的国家程序,详细问题见贴
只看楼主
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 9楼 rjsp
嗯,改变字符串长度我也试了,如果修改了输入的字符串长度,最后输出C字符串的时候要修改的字符串的长度的。也就是我后面改过的输入字符串的方法,只能针对特定长度。这个程序主要目的是我用来练习位运算的。解决这个习题其实不用这么麻烦的,而且中间用的函数可移植性不好。


[此贴子已经被作者于2016-6-2 08:43编辑过]

2016-06-02 08:37
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
题意要求1≤N≤50,用字符串做的话,字符数组长度必须为51,极限情况下需要1位字符串结束符,这就是一个“同或”的题(位相同为1,不同为0)。

能编个毛线衣吗?
2016-06-02 08:43
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 

程序代码:
#include <stdio.h>

#define N 50

int main( void )
{
    char a[N+1], b[N+1];
    scanf( "%s%s", a, b );
    for( size_t i=0; a[i]; ++i )
        putchar( a[i]==b[i]?'1':'0' );

    return 0;
}

2016-06-02 08:44
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 12楼 wmf2014
嗯,所以我想先异或再取反就能得到需要的结果了。就是在最后输出的时候总是32位数字,就是对这个地方不是很明白。能帮我解释下吗?是我定义的变量数据类型决定的吗?虽然我定义了数组长度是50,修改成51了,但当我输入需要判断的字符串a,b长度大于32的时候,最后的结果也只有32位。

[此贴子已经被作者于2016-6-2 08:56编辑过]

2016-06-02 08:46
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:0 
回复 13楼 rjsp
谢谢,精炼高效,我试了输入长度超过51的时候有时候输出也是正确的。有时候输出就不对了。是不是scanf这个函数的原因啊

[此贴子已经被作者于2016-6-2 09:07编辑过]

2016-06-02 08:47
kdyxny
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-6-2
得分:0 
这是个同或电路的模型,,相同的位进行比较,,如果相同输出1,,不同则输出0
2016-06-02 11:42
汪志霞
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-7-10
得分:0 
我是个新手,多多指教
2016-07-10 20:11
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
得分:0 
回复 14楼 wanglianyi1
32位,四个字节,正好是一个int(别深究int多大,这里确实是4字节)
你想把50位的直接转换过来肯定不行,应该把50位的当做二进制,先转换为10进制,然后放进int,这样4个字节就绰绰有余了。
他也不妨碍你做位运算,异或、求反。
不过求反之后你需要注意一下高位有很多无效1,解决方案很多,比如可以与上一个11111...00...0(1和0的个数取决于你要处理的事件个数),这样能令高位的1重新变回0,而低位保持不变。

φ(゜▽゜*)♪
2016-10-08 19:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-465469-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.926664 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved