#include<iostream>#include<cstring>#include<cstdio>using namespace std;int main(){ char a[10000],*p,word[10000][10000]; //用二维数组来存多个字符串 int i,j; while(cin.get(a,10000)) { if(strcmp(a,"#")==0) break; else { int n=0; p=strtok(a," "); for(i=0;p!=NULL;i++) { strcpy(word[i],p); p=strtok(NULL," "); } for(int k=0;k<i;k++) for(j=k+1;j<i;j++) if(strcmp(word[k],word[j])==0) { n++; break; } cout<<i-n<<endl; } } return 0;}
2 回答
onemoo
TA贡献883条经验 获得超454个赞
哦,是这样啊。连一开始的 cin.get 都没有执行...
我看到你定义了两个超大的数组,尤其是 word。我猜是因为它们太大导致“爆栈”了。函数的栈帧大小有限,不要使用太大的 local 变量。
你试试把这两个数组改小些,或者在堆中动态创建它们。
onemoo
TA贡献883条经验 获得超454个赞
这个是编程环境命令行的一个功能,在程序执行之后会等你按一个键才会退出。不然的话程序执行完命令行界面就会退出——眨眼间小黑窗口就消失了——你就看不到结果了。
所以你不用管这个,只需要看看程序执行的结果是否正确。
还有,记得把代码用发帖工具格式化一下。这样一坨没法看的。
- 2 回答
- 0 关注
- 4328 浏览
添加回答
举报
0/150
提交
取消