标题:更奇怪的问题
只看楼主
beyond0702
Rank: 1
来 自: 桂 林
等 级:新手上路
帖 子:219
专家分:0
注 册:2007-11-17
 问题点数:0 回复次数:6 
更奇怪的问题
#iclude<stdio.h>
#iclude<string.h>
void main()      //功能:大小写转换
{  char ch[50];
   gets(ch);
for(int i=0;i<50;i++)
 { if( ch[i]>='a'&&ch[i]<='z') ch[i]=ch[i]-32; //小写转大写
  if( ch[i]>='A'&&ch[i]<='Z') ch[i]=ch[i]+32;  //大写转小写
 }
  puts(ch);
}
  以上运行没没有得到你想要的结果,两个if只运行第二个;
  如果你把它们的顺序换过来,还是只运行第二个 if;
  但如果你 在 第一个if里加 continue.那么两个都运行了,就会得到你想要的结果
奇怪了。为什么呢
搜索更多相关主题的帖子: iclude void int main char 
2008-04-29 13:22
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
得分:0 
LZ不懂什么叫else

" border="0" />[color=white]
2008-04-29 13:29
beyond0702
Rank: 1
来 自: 桂 林
等 级:新手上路
帖 子:219
专家分:0
注 册:2007-11-17
得分:0 
请问:我用if 一定要用上else吗?你买牙刷一定也要买牙膏吗?
2008-04-29 13:31
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
得分:0 
[bo]以下是引用 [un]beyond0702[/un] 在 2008-4-29 13:31 的发言:[/bo]

请问:我用if 一定要用上else吗?你买牙刷一定也要买牙膏吗?

哈哈哈哈,极好笑,那你当我在二楼的提示不存在了,你牛
我菜鸟,帮不起你这牛人

" border="0" />[color=white]
2008-04-29 13:34
sxn0508
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2008-1-24
得分:0 
- -!
LZ……
你可以不买,搞些别的东西来替代牙膏,bi如说continue
可是牙膏是最常用的
2008-04-29 13:35
koolism
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-3-22
得分:0 
for(int i=0;i<50;i++)
{ if( ch[i]>='a'&&ch[i]<='z') ch[i]=ch[i]-32; //小写转大写
  if( ch[i]>='A'&&ch[i]<='Z') ch[i]=ch[i]+32;  //大写转小写
}
如果你输入的是小写字母,那么第一个if将其转换为大写,可是ch[i]的值已经被改变并且符合
第二个if,所以又被转换为小写,相当于没转换;
如果你输入的是大写字母,那么第一个if不符合,跳过它执行第二个if,所以会将其得到小写。
在第一个if加continue表示如果输入的是小写,那么执行第一个if以后就进行下一次循环,跳过
第二个if,所以得出的结果是正确的。
2008-04-29 13:36
beyond0702
Rank: 1
来 自: 桂 林
等 级:新手上路
帖 子:219
专家分:0
注 册:2007-11-17
得分:0 
在觉悟中苏醒,牙膏把我给害了啊,
看来牙是天天要刷的,谢谢大家了
2008-04-29 13:42



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




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

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