| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:问:为什么把!=改成||?(2级C语言南开100改错2)
只看楼主 加入收藏
popowerpo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-4
收藏
 问题点数:0 回复次数:7 
问:为什么把!=改成||?(2级C语言南开100改错2)

下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或等于的字符一次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串为:aBcdeFgh。

试题程序
#include <studio.h>
#include <string.h>

void fun(char *p,char *q,char *c)
{int k=0
***************************************
while(*p!=*q) —— != 改为 ||
***************************************
{if (*p<=q) c[k]=*q;
else c[k]=*p;
if (*p) p++;
if (*q) q++;
k++;
}
}
main()
{char a[10]="aBCDeFgh",b[10]="ABcd",c[80]={''};
fun(a,b,c);
printf("The string a:"); puts(a);
printf("The string b:"); puts (b);
printf("The result:"); puts©;
}

搜索更多相关主题的帖子: C语言 南开 字符 改错 char 
2007-07-04 12:51
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

因为while能继续循环的条件是两个字符串中至少有一个没有结束,自然是*p||*q


天行健,君子以自强不息!!QQ:68660681
2007-07-04 13:32
popowerpo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-4
收藏
得分:0 

*p永远不会结束啊,它(地址)不是能越界么(到没意义的地址上),只是没实在意义的地址而已.

2007-07-04 13:47
maoguoqing
Rank: 6Rank: 6
来 自:重庆
等 级:贵宾
威 望:28
帖 子:2980
专家分:19
注 册:2005-12-5
收藏
得分:0 

但是字符串是空终止的啊,最后一个字符是'\0',它的ASCII码为零。


天行健,君子以自强不息!!QQ:68660681
2007-07-04 13:55
popowerpo
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-7-4
收藏
得分:0 
'\0'原来就是NULL啊?!明白了,谢谢你又回来看啊!
2007-07-04 14:04
cute_elf
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-7-4
收藏
得分:0 
以下是引用popowerpo在2007-7-4 14:04:55的发言:
'\0'原来就是NULL啊?!明白了,谢谢你又回来看啊!

'\0' 是 NUL,和 NULL 两码事

The One 'l' nul and the Two 'l' null
Memorize this little rhyme to recall the correct terminology for pointers and ASCII zero:
The one "l" NUL ends an ASCII string,
The two "l" NULL points to no thing.
Apologies to Ogden Nash, but the three "l" nulll means check your spelling. The ASCII
character with the bit pattern of zero is termed a "NUL". The special pointer value that
means the pointer points nowhere is "NULL". The two terms are not interchangeable in
meaning.

2007-07-04 16:42
magini
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-7-4
收藏
得分:0 
你说的正确,

那是不是,如果在c++中
进行回答判定while的循环条件(暂停程序,根据输入的字符来选择:y继续,n退出),需要逐位与,莫非也是这个原因,不能使用!=




2007-07-04 18:12
cute_elf
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-7-4
收藏
得分:0 
以下是引用magini在2007-7-4 18:12:17的发言:
你说的正确,

那是不是,如果在c++中
进行回答判定while的循环条件(暂停程序,根据输入的字符来选择:y继续,n退出),需要逐位与,莫非也是这个原因,不能使用!=




具个例子看看呗

2007-07-04 22:23
快速回复:问:为什么把!=改成||?(2级C语言南开100改错2)
数据加载中...
 
   



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

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