注册 登录
编程论坛 C++教室

大哥大姐们 有关c++中的break问题 帮帮忙呀 lōve lōve

大头0927 发布于 2011-02-16 18:40, 730 次点击
/*编程3  10%
程序“p3”,实现功能:从键盘输入一个长度小于50的字符串,字符串中
含有一“#”字符,滤去“#”后所有字母字符,“#”前所有字符不变,
然后在屏幕上输出(原“#”保留,原字符次序不变),下面是一组输入、
输出的样例数据。例如:
输入:Hi20%3#AB2n$3k
输出:Hi20%3#2$3             */
#include<stdio.h>
#include<string.h>
main()
{char s[50];int i,n;
printf("s=");
scanf("%s",s);
for(i=0;i<strlen(s);i++)
if(s[i]=='#') break;
  n=i;
  while(i<strlen(s))
      if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z') i++;  
else{s[n]=s[i];i++;n++;}
s[n]='\0';
printf("%s\n",s);
}
 
 
 
 
 
那个break有什么作用呀!作用到哪?还可以移到哪儿?删掉了会怎么样?又怎样解释?麻烦详细说明一下,越详细越好。将十分感激!

[ 本帖最后由 大头0927 于 2011-2-16 19:02 编辑 ]
5 回复
#2
x88se2011-02-16 19:57
用for循环从字符串一个一个读取字符,遇到“#”时用break语句退出循环,不会执行for循环内break语句后的语句;
break语句不能移到其他地方,若删掉则不能实现滤去“#”后的字母。
#3
coolboyding2011-03-02 21:26
break 就是退出当前循环
#4
大头09272011-03-19 23:37
回复 3楼 coolboyding
#5
lucky5635912011-03-20 07:44
break是退出for循环。感觉这程序不够简炼。退出循环后再加一个循环将后面的字母置为0,然后输出
#6
sdupoplar2011-03-24 10:57
我没装C编译器,没运行,感觉
n=i;
应为:
n=i++;
否则就没法“原“#”保留”了。


1