牛客网华为机试在线训练

牛客网华为机试在线训练

  • 字符串最后一个单词的长度
  • 计算字符个数
  • 明明的随机数
  • 字符串分隔
  • 进制转换
  • 合并表记录
  • 提取不重复的整数
  • 字符串反转
  • 句子逆序
  • 密码验证合格程序
  • 简单密码

字符串最后一个单词的长度

#include<iostream>
using namespace std;
int main()
{
    char a[5000];
    gets(a);
    int count=0,k=0;
    for(int i=0;a[i]!='\0';i++)
    {
      if(a[i]==' ')
      {
          count++; 
          k=1;
      }
    }
    if(k==0)
    {
       int s=0,s1=0,flag=0;
        for(int i=0;a[i]!='\0';i++)
      {
        if(a[i]==' ')
        {
          s++;
        }
        if(s==count)
        {
           flag=1;
        }
        if(flag==1)
        {
        	s1++;       
		 }
       }
    cout<<s1<<endl;
    
	}
	else if(k==1)
	{
		int s=0,s1=0,flag=0;
        for(int i=0;a[i]!='\0';i++)
        {
        if(a[i]==' ')
        {
          s++;
        }
        if(s==count)
        {
           flag=1;
        }
        if(flag==1)
        {
        	s1++;
		}
       }
       cout<<s1-1<<endl;    
   }	
} 
  

计算字符个数

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    cin>>s;
    string a;
    cin>>a;
    int sum=0;
    for(int i=0;i<s.length();i++)
    {
       if(s[i]==a[0]||(s[i]+32)==a[0])
       {
            sum++;
       }
    }
    cout<<sum<<endl;
    
}

明明的随机数

#include<iostream>
#include<set>
using namespace std;
int main()
{
    int a;
    while(cin>>a)
    {
        int b[a];
        set <int> s;
        set <int>::iterator it;
        for(int i=0;i<a;i++)
        {
              cin>>b[i];
              s.insert(b[i]);
        }
        for(it=s.begin();it!=s.end();it++)
        {
           cout<<*it<<endl;
        }
        s.empty();
    }
 
}

字符串分隔

#include<iostream>
#include<string>
using namespace std;
void judge(char s[100])
{
	int count=0;
	for(int i=0;s[i]!='\0';i++)
	{
		count++;
	}
    if(count<=8&&count>=0)
    {
         cout<<s;
        for(int i=0;i<8-count;i++)
        {
          cout<<"0";
        }
        cout<<endl;
    }
    else if(count>8)
    {
       int a=count/8;
        int flag=0;
       for(int i=0;i<count;i++)
       {
           cout<<s[i];
          if((i+1)%8==0)
          {
          cout<<endl;
          }
          if((i+1)==a*8+1)
          {
            flag=1;
          }
           if(flag==1)
           {
               for(int j=a*8+1;j<count;j++)
               {
                   cout<<s[j];
               }
               for(int j=0;j<(8-count%8);j++)
               {
                 cout<<"0";
               }
                cout<<endl;
               break;
           }
       }
      
      
    }
}

int main()
{
    char s[100];
    while(gets(s)) 
    {
     judge(s);
   }
	
    
}

进制转换

#include<iostream>
#include<string>
#include<math.h>
using namespace std;
int main()
{
    string s;
    int sum,i;
    while(cin>>s)
    {
      s=s.substr(2,s.length());
      sum=0;
      int b=s.length()-1;
      for( i=0;i<s.length();i++)
      {
          if(s[i]=='A')
          {
           sum=sum+10*pow(16,b);
          }
          else if(s[i]=='B')
          {
           sum=sum+11*pow(16,b);
          }
          else if(s[i]=='C')
          {
            sum=sum+12*pow(16,b);
          }
          else if(s[i]=='D')
          {
              sum=sum+13*pow(16,b);
          }
          else if(s[i]=='E')
          {
              sum=sum+14*pow(16,b);
              
          }
          else if(s[i]=='F')
          {
              sum=sum+15*pow(16,b);
          }
          else if(s[i]=='0')
          {
          	   sum=sum+0*pow(16,b);
		  }
		  else if(s[i]=='1')
		  {
		  	 sum=sum+1*pow(16,b);
		  }
		   else if(s[i]=='2')
		  {
		  	 sum=sum+2*pow(16,b);
		  }
		   else if(s[i]=='3')
		  {
		  	 sum=sum+3*pow(16,b);
		  }
		   else if(s[i]=='4')
		  {
		  	 sum=sum+4*pow(16,b);
		  }
		   else if(s[i]=='5')
		  {
		  	 sum=sum+5*pow(16,b);
		  }
		   else if(s[i]=='6')
		  {
		  	 sum=sum+6*pow(16,b);
		  	
		  }
		   else if(s[i]=='7')
		  {
		  	 sum=sum+7*pow(16,b);	  
		  }
		   else if(s[i]=='8')
		  {
		  	 sum=sum+8*pow(16,b);
		  }
		   else if(s[i]=='9')
		  {
		  	 sum=sum+9*pow(16,b);
		  }
		  b--;
		//cout<
      }
        cout<<sum<<endl;
    } 
}

合并表记录

#include<iostream>
#include<set>
using namespace std;
struct node
{
    int d;
    int c;
};
int main()
{
    int a;
    cin>>a;
    set <int> ss;
    set <int>::iterator it;

    node b[a],s[a];
    for(int i=0;i<a;i++)
    {
        cin>>b[i].d>>b[i].c; 
    }
    int sum,count=0;
    for(int i=0;i<a;i++)
    {
        sum=0;
        sum=b[i].c;
        int flag=0;
        for(int j=i+1;j<a;j++)
        {
            if(b[i].d==b[j].d)
            {
               sum=sum+b[j].c;  
            }
        }
        for(int j=0;j<count;j++)
        {
            if(s[j].d==b[i].d)
            {
                flag=1;
                break;
            }
        }
        if(flag==0)
        {
          s[count].d=b[i].d;
          s[count].c=sum;
           count++;
        }

    }
  
    for(int i=0;i<count;i++)
    {
    	ss.insert(s[i].d);
    	//cout<
	}
	int i=0;
	for(it=ss.begin();it!=ss.end();it++)
	{
		for(int i=0;i<count;i++)
		{
			if(*it==s[i].d)
			{
				cout<<s[i].d<<" "<<s[i].c<<endl;
			}
		}
	}
	
    
}

提取不重复的整数

#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
    string s;
    cin>>s;
    vector <char> v;
    vector <char>::iterator it;
    for(int i=s.length();i>=0;i--)
    {
       int flag=0;
       for(it=v.begin();it!=v.end();it++)
       {
       	   if(s[i]==*it)
       	   {
       	   	 flag=1;
       	   	 break;
		   }
	   }
	   if(flag==0) 
	   {
		   	 v.push_back(s[i]);
	   }
    }
    for(it=v.begin()+1;it!=v.end();it++)
    {
    	
    		cout<<*it;
	}
	cout<<endl;   
}

字符串反转

#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main()
{
    string s;
    cin>>s;
    stack <char> a;
    for(int i=0;i<s.length();i++)
    {
        a.push(s[i]);
    }
    for(int i=0;i<s.length();i++)
    {
        cout<<a.top();
        a.pop();
    }
    cout<<endl;
    
}

句子逆序

#include<iostream>

#include<string>
using namespace std;
struct node{
	char b[100];
	int d;
};
int main()
{
    char a[100000];
    gets(a);
    int count=0,count1=0;
    node s[5000];
    for(int i=0;a[i]!='\0';i++)
    {
    	
    	if(a[i]!=' ')
    	{
    		
    		++count1;
    	  for(int j=count1-1;j<count1;j++)
    	  {
    	  	s[count].b[j]=a[i];
    	 
    	  	s[count].d=count1;
		  }
		 
		}
		else
		{   count++;
			count1=0;
		}
		
	}

	for(int i=count;i>=0;i--)
	{
		for(int j=0;j<s[i].d;j++)
		{
			cout<<s[i].b[j];
		}
		cout<<" ";
	}
}

密码验证合格程序

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {
        int count=0;
        if(s.length()<=8)
        {
            cout<<"NG"<<endl;
        }
        else if(s.length()>8){
            int f1=0,f2=0,f3=0,f4=0;
            int sum=0;
            for(int i=0;i<s.length();i++)
            {
                if(s[i]>='0'&&s[i]<='9')
                {
                    f1=1;
                }
                else if(s[i]>='a'&&s[i]<='z')
                {
                    f2=1;
                }
                else if(s[i]>='A'&&s[i]<='Z')
                {
                    f3=1;
                }
                else{
                    f4=1;
                }
            }
            sum=f1+f2+f3+f4;
            if(sum>=3)
            {

               for(int i = 0; i <= s.size()-6; i++)
                  for(int j = i+3;j < s.size();j++)
                     if(s[i] == s[j] && s[i+1] == s[j+1] &&s[i+2] == s[j+2]) goto NG;
                  OK:
                  cout << "OK" << endl;continue;
                  NG:
                    cout << "NG" << endl;
  
            }
            else{
                cout<<"NG"<<endl;
            }
        }
        
        
    }
}

简单密码

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string s;
    
    while(cin>>s)
    {
        int count=0;
        char a[100];
        for(int i=0;i<s.length();i++)
        {
            if(s[i]>='A'&&s[i]<='Z')
            {
                if(s[i]=='Z')
                {
                    a[count]='a';
                }
                else{
                    a[count]=s[i]+33;
                }
                count++;
            }
            else if(s[i]>='a'&&s[i]<='z')
            {
            	if(s[i]=='x'||s[i]=='y'||s[i]=='z'||s[i]=='w')
            	{
            		a[count]='9';
            		count++;
				}
				else if(s[i]=='t'||s[i]=='u'||s[i]=='v')
				{
					a[count]='8';
            		count++;
				}
				else if(s[i]=='p'||s[i]=='q'||s[i]=='r'||s[i]=='s')
				{
					a[count]='7';
            		count++;
				}
				else if(s[i]=='m'||s[i]=='n'||s[i]=='o')
				{
					a[count]='6';
            		count++;
				}
				else if(s[i]=='j'||s[i]=='k'||s[i]=='l')
				{
					a[count]='5';
            		count++;
				}
				else if(s[i]=='g'||s[i]=='h'||s[i]=='i')
				{
					a[count]='4';
            		count++;
				}
				else if(s[i]=='d'||s[i]=='e'||s[i]=='f')
				{
					a[count]='3';
            		count++;
				}
				else if(s[i]=='a'||s[i]=='b'||s[i]=='c')
				{
					a[count]='2';
            		count++;
				}
				else if(s[i]=='1')
				
				{
					a[count]='1';
            		count++;
				}
				else if(s[i]=='0'){
					a[count]='0';
            		count++;
				}
			
			}else if(s[i]>='0'&&s[i]<='9')
			{
					a[count]=s[i];
            		count++;
			}
        }
        for(int i=0;i<count;i++)
        {
        	cout<<a[i];
		}
		cout<<endl;
    }
}

你可能感兴趣的:(c++)