c语言小例

按行输入字符串,从中摘出词并建立词表。当词表中的词满20个或发现名为quit的词时,显示输出

词表,程序结束。词表中不得有重复的词,每个词的长度不超过10.

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	int i,j;
	string str;
    vector<string> a(20);
	/*	cin>>s;*/
	//for (j=0;j<20;j++)
		//cin>>a;
	//f//or (i=0;i<20;i++)
	//{
	//	for (j=0;j<20;j++)
	//	cin>>a[j];
	//	if(strcmp(a[i].c_str(),a[j].c_str())==0||strcmp(a[j].c_str,"quit")==0)
	//		break;
	//	if(a[j].size()>10)
	//	break;
	//}
		for(i=0;i<20;i++)
		{
			cin>>str;
			//int j=0;
			a[i] = str;
			if(/*strcmp(str.c_str(),str.c_str())==0*/str.size()<=10)
			//cout<<"输入错误"<<endl;
				//break;
			  if (strcmp(str.c_str(),"quit")!=0)
			     
					for(j=i-1;j>=0;j--)
				    if(strcmp(a[j].c_str(),a[i].c_str())!=0) 
						a[i] = str;
			        else
				   { cout<<"输入重复,即将退出"<<endl;
			         //a[i] = str;
			         return 0;
			         break;}
			  else
				 {cout<<"遇到quit,即将退出"<<endl; 
			      return 0;}
			else
				 {cout<<"输入长度超限,即将退出"<<endl;
				 return 0;}
		//a[i] = str;
		}
	//for(vector<string>::iterator iter=a.begin();iter!=a.end();++iter)
	//        cout<<iter<<endl;
		for (int i=0;i<20;i++)
			cout<<endl<<a[i];
		
	        return 0;
}

这个例子的实现牵涉到很多内容:字符串操作,数组及vector的应用,for,if语句嵌套实现,循环跳出的break和return方式;

void main()
{
  char s[11],dict[20][11];
  int i=0,j;
  while(i<20)
   {
     cin>>s;
     if(!strcmp(s,"quit"))
     break;
     for(j=0;j<1;j++)
       if(!strcmp(s,dict[j]))
       break;
     if(j==i)
     {
       strcpy(dict[i],s);
       i=i+1;
     }
   }
   for(j=0;j<i;j++)
     cout<<dict[j]<<endl;
}

这一段是纯C语言来实现的,字符数组11来限定词的长度;内层嵌套循环用来实现重复判断,但是它这里只是使用了break,

应该是跳出内层循环,不再进行比较,但是没有进行进一步的退出外层循环,还可以输入,只是这个重复的词就无法再输出。

而我的方法是若重复直接退出。

相关文章
相关标签/搜索