| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1607 人关注过本帖
标题:为什么这个程序中的 if 语句不用加 else ??
只看楼主 加入收藏
enjoy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-8-16
收藏
 问题点数:0 回复次数:7 
为什么这个程序中的 if 语句不用加 else ??
这是谭浩强c程序设计中的一个例子
其中一个函数是这样的:
delete_string(char str[],char ch)
{int i,j;
for(i=j=0;str[i]!='\0';i++)
if(str[i]!=ch)
str[j++]=str[i];
str[j]='\0' ;       /*为什么这里没有用else*/也可以得到想要的效果??*/
}
函数的作用是删除字符串(str[ ])中和输入的字符(ch)相同的字符
搜索更多相关主题的帖子: else 语句 
2005-08-16 21:48
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
收藏
得分:0 
delete_string(char str[],char ch) {int i,j; for(i=j=0;str[i]!='\0';i++) if(str[i]!=ch) str[j++]=str[i]; str[j]='\0' ; }
for 循环如果为真的话执行if(str[i]!=ch) str[j++]=str[i]; 否则执行str[j]='\0' ; 如果FOR的语句有2个以上应当用赋合语句加上{} 应该是这样吧,我也是刚学的.

中国人的财富网:http://www..cn/
2005-08-16 21:59
enjoy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-8-16
收藏
得分:0 
这个我明白,不过他没有加,就那个样!我就想问为什么可以这样?/

/sisangdz/souyinji/Ai-317.jpg" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www./sisangdz/souyinji/Ai-317.jpg');}" onmousewheel="return imgzoom(this);" alt="" /> 想认识一些志同道合的朋友一起学c 我的qq68361512
2005-08-16 22:12
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
收藏
得分:0 
那哪里不对啊。

中国人的财富网:http://www..cn/
2005-08-16 22:25
caiyakang
Rank: 2
等 级:新手上路
威 望:5
帖 子:2111
专家分:0
注 册:2005-3-24
收藏
得分:0 
好像对的啊,他要循环到假时才会
str[j]='\0'

中国人的财富网:http://www..cn/
2005-08-16 22:28
swiminfire
Rank: 1
等 级:新手上路
帖 子:96
专家分:0
注 册:2005-8-11
收藏
得分:0 
delete_string(char str[],char ch) { int i,j; for(i=j=0;str[i]!='\0';i++) { if(str[i]!=ch) str[j++]=str[i]; } str[j]='\0' ; /*为什么这里没有用else*/也可以得到想要的效果??*/ } 其实加{ }与不加{ }的区别就在于,因为C中定义的变量\表达式都是以‘;’结尾的 ,并且要求在循环条件等语句中在有2个以上表达式时定要加{ },否则系统会只把到第一个‘;’为止作为它的内容处理,超出的东东当作main()中的句子去处理。所以上面红色部分只有一个‘;’所以可以不用加{ }。(但是为了养成良好的习惯,还时建议不管循环\条件还是什么,只要有子句最好都加‘{ }’。)而,这个for循环可以同视为视一个条件句 ,如同x<y?x:y一样。

Get in first, and then word your ways out ! BY KIKI
2005-08-17 07:29
天堂的叛逆者
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-8-10
收藏
得分:0 
for 后如果不跟{}的话,只能执行一个语句~~~~

2005-08-17 08:30
enjoy
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2005-8-16
收藏
得分:0 
以下是引用swiminfire在2005-8-17 7:29:49的发言: delete_string(char str[],char ch) { int i,j; for(i=j=0;str[i]!='\0';i++) { if(str[i]!=ch) str[j++]=str[i]; } str[j]='\0' ; /*为什么这里没有用else*/也可以得到想要的效果??*/ } 其实加{ }与不加{ }的区别就在于,因为C中定义的变量\表达式都是以‘;’结尾的 ,并且要求在循环条件等语句中在有2个以上表达式时定要加{ },否则系统会只把到第一个‘;’为止作为它的内容处理,超出的东东当作main()中的句子去处理。所以上面红色部分只有一个‘;’所以可以不用加{ }。(但是为了养成良好的习惯,还时建议不管循环\条件还是什么,只要有子句最好都加‘{ }’。)而,这个for循环可以同视为视一个条件句 ,如同x<y?x:y一样。
不明白“如同x<y? x:y一样”的意思,for不是全部执行完成后才执行str[j]='\0';的么??如果是这样的话这个函数是怎么实现效果的??如果str[j]='\0';是if语句的一部分且前面+上else的话我就可以理解没疑问了,不过现在他没有!!

/sisangdz/souyinji/Ai-317.jpg" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://www./sisangdz/souyinji/Ai-317.jpg');}" onmousewheel="return imgzoom(this);" alt="" /> 想认识一些志同道合的朋友一起学c 我的qq68361512
2005-08-17 09:54
快速回复:为什么这个程序中的 if 语句不用加 else ??
数据加载中...
 
   



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

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