填空
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;
}