牛客网华为机试在线训练
- 字符串最后一个单词的长度
- 计算字符个数
- 明明的随机数
- 字符串分隔
- 进制转换
- 合并表记录
- 提取不重复的整数
- 字符串反转
- 句子逆序
- 密码验证合格程序
- 简单密码
字符串最后一个单词的长度
#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--;
合并表记录
#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);
提取不重复的整数
#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;
}
}