深信服笔试题

填空

	char * a = "1234" ;     sizeof(a)   4
	char b[10] = "1234" ;		    10
	char c[] ="1234";		    5	
	char d[][10] = {"1234" ,""};	    20
	char * p = "adc\0defg" ;     *p+4   e
	union {
		char a[4];
		int var ;
	}r;
	r.var =0x12345678;
	r.a[1] = 0x22 ;
	printf("%x",r.var) ;             12342278

编程:

第一行输入整数n, 继续输入n行 (每行输入一个整数表示ID)取前10个不重复的ID为中奖用户

输出结果:  3\n   1\n 2\n 5\n  

#include <map>
#include <iostream> 
using namespace std;
int main( )
{
	int n , size_m ,tmp ;
	map<int,int> m1;
	cin>> n ;
	tmp = n ;
	int i = 1 ;
	while( tmp>0 )
	{
		int id ;
		cin >> id ;
	//	pair<map<int,int>::iterator, bool>  var ; 
		var = m1.insert(pair<int,int>(id,i)) ;
		--tmp ;
	}
	size_m = m1.size();
	if(size_m<10)
	cout << m1.size() << endl; 
	else
	cout << "10" << endl ;
	map<int,int>::iterator it ;
	size_m = 10 ;
	for(it=m1.begin(); it!=m1.end() && size_m; ++it )
	{
		cout << it->first << endl ;
		--size_m;
	}
	return 0 ;

}

编程 最长重复子串(子串中有重复子串,且首尾相连)长度 ( abcab   , 0;   abccab   ,2 ;   abbbcbbc   ,6)

#include <iostream>
#include <string>
using namespace std;

int getCommLen(string str)
{
	int npos ;
	if( str.size()%2 == 0 )
	{
		npos = str.size()/2 ;
		if( str.substr(0,npos) == str.substr(npos,npos) )
		return npos*2 ;
	}
	return 0 ;
}

int main()
{
    string str ="abbbcbbc" ;
	int maxLen = 0 ;
	for( int i=str.size() ; i>=1 ; --i )
	{
			for( int j= 0; str.size()-j>=i ; ++j )
			{
				string str1 = str.substr( j, i) ;
				maxLen = getCommLen(str1) ;
				if ( maxLen )
				{
					cout << maxLen << endl ;
					return maxLen ;	
				}
			}
		
	}	
	cout << maxLen << endl ;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/u013565071/article/details/80766647