1、题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input Param
n 输入随机数的个数
inputArray n个随机整数组成的数组
Return Value
OutputArray 输出处理后的随机整数
//set容器,元素无重复,且自动排序(默认升序)
#include<stdio.h>
#include<set>
#include<iostream>
using namespace std;
int main()
{
int i,len,data;
set <int> c;
set <int>::iterator si;
while(cin>>len)
{
for(i=0;i<len;i++)
{
cin>>data;
c.insert(data);
}
cout<<"输出为:"<<endl;
for(si=c.begin();si!=c.end();si++)
{
cout<<*si<<endl;
}
// cin.ignore();
c.clear();
cout<<"重新输入:"<<endl;
}
return 0;
}
2、题目描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
详细描述:
函数接口说明: public String getResult(long ulDataInput)
输入参数:long ulDataInput:输入的正整数
返回值: String
#include<stdio.h>
#include<iostream>
using namespace std;
//判断一个数是否为质数
//质数:只能被1和本身整除
bool Is_prime(int data)
{
int i;
if(data>1)
{
if(data==2)
return true;
for(i=2;i<=data-1;i++)
{
if((data%i)==0)
return false;
}
return true;
}
}
//求出所有质因子,也就是分解如下
//如180=2*2*3*3*5
int main()
{
int k=2;
int num;
while(cin>>num)
{
while(k<=num)
{
if(num%k==0)
{
cout<<k<<" ";
num=num/k;
}
else
k++;
}
k=2;
cout<<endl;
}
return 0;
}
3、题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
#include "stdio.h"
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
bool solve(string str);
bool check_str(string s);
int main()
{
string s;
while(getline(cin,s))
{
if(solve(s)&&check_str(s))
{
cout<<"OK"<<endl;
}
else
{
cout<<"NG"<<endl;
}
}
return 0;
}
bool solve(string str)
{
int len=str.size();;
int num1,num2,num3,num4;
num1=num2=num3=num4=0;
if(len<=8)
{
return false;
}
for(int i=0;i<len;i++)
{
if(str[i]>='a'&&str[i]<='z')
{
num1=1;
}
else if(str[i]>='A'&&str[i]<='Z')
{
num2=1;
}
else if(str[i]>='0'&&str[i]<='9')
{
num3=1;
}
else
num4=1;
}
if(num1+num2+num3+num4<3)
{
return false;
}
return true;
}
bool check_str(string input)//重点不超过长度为3的子串
{
string strOut;
string strInner;
int subStrFlag=0;
int len = input.length();
for (int i = 0; i <= len - 3; i++)
{
strOut = input.substr(i, 3);//每三个比较一次
for (int j = i + 3; (subStrFlag!=1)&&(j <= len - 3); j++)
{
strInner = input.substr(j, 3);///返回一个从指定位置开始,并具有指定长度的子字符串。 if (strOut==strInner) //string类型的可以直接比较?
{
subStrFlag = 1;
break;
}
}
}
if (subStrFlag==1)
return false;
else
return true;
}
#include "stdio.h"
#include<iostream> //思路:按顺序将字母提取出来
#include<string> //最后按照顺序,用提取出来的顺序字母替换原来的字母
#include<string.h>
#include<vector>
using namespace std;
int main()
{
string str;
while(getline(cin,str))
{
vector<char> s;
for(int i=0;i<26;i++)
{
for(int j=0;j<str.size();j++)
{
if(str[j]-'a'==i||str[j]-'A'==i)
{
s.push_back(str[j]);
}
}
}
int num=0;
for(int k=0;k<str.size();k++)
{
if((str[k]>='a'&&str[k]<='z')||(str[k]>='A'&&str[k]<='Z'))
{
str[k]=s[num++];
}
}
cout<<str<<endl;
}
return 0;
}