以下是引用zyz801229在2006-2-23 16:59:00的发言:
#include<iostream>
#include<string>
using namespace std;
void main()
{
char *p[10];//存储输入的一系列单词的指针
cout<<"input a set of words:"<<endl;
char string[10][10];
cin>>string[0];
int k=0;
for(int i=0;strcmp("Quit",string[i])&&i<10;)//输入一系列单词
{
p[i]=string[i];//第i个指针指向第i个元素
k++; //记录输入个数
i++;
cin>>string[i];
}
cout<<endl;
for(int i=0;i<k;i++)
{
int counter=0;
for(int j=i+1;j<k;j++)
{
if(strcmp(string[i],string[j])==0)
counter++;
}
if(counter==0)
cout << string[i] << endl;
}
}
自己对这程序理解下~~呵呵
你的程序可以去除重复的单词,但是不能保证按输入的顺序输出,比如输入zhou zhou zhi zhi zhi zhou ,你的程序结果是:zhi zhou
我将程序修改了一下,可以让结果输出:zhou zhi
#include<iostream.h>
#include<string.h>
void main()
{
char *p[10];//存储输入的一系列单词的指针
cout<<"input a set of words:"<<endl;
char string[10][10];
cin>>string[0];
int k=0;
for(int i=0;strcmp("Quit",string[i])&&i<10;)//输入一系列单词
{
p[i]=string[i];//第i个指针指向第i个元素
k++; //记录输入个数
i++;
cin>>string[i];
}
cout<<endl;
int n=0;//用来记录单词的个数(不包括重复的单词)
char result[10][10];//去除重复的单词后,将结果保存在result里面
strcpy(result[0],string[0]);
n++;//记录result里面的单词个数,也就是出去重复单词后的个数
for(i=1;i<k;i++)//遍历整个输入的单词串
{
int flag=0;//如果出现重复的单词就改变flag的值,使它得1
for(int j=0;j<n;j++)//将每一个输入串中的单词都与result中的单词做比较
if(strcmp(string[i],result[j])==0)
{
flag=1;
break;
}
if(flag==0)//如果没有重复的单词就将这个单词放入result中
{
strcpy(result[j],string[i]);
n++;
}
}
for(i=0;i<n;i++)
cout<<result[i]<<endl;
}