MySQL 5.7从入门到精通教程

L1-023 输出GPLT (20 分)

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。

输入格式:

输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

输出格式:

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

输入样例:

pcTclnGloRgLrtLhgljkLhGFauPewSKgt

输出样例:

GPLTGPLTGLTGLGLL

 题目代码:

//L1-023 输出GPLT 
#include<iostream>
#include<cstring>
#include<algorithm>
#define MAXN 10001
using namespace std;

int main()
{
	char str[MAXN];
	int book[4]={0};
	//G P L T
	cin >> str;
	for(int i=0;i<strlen(str);i++)
	{
		if(str[i]=='G'||str[i]=='g')
			book[0]++;
		else if(str[i]=='P'||str[i]=='p')
			book[1]++;
		else if(str[i]=='L'||str[i]=='l')
			book[2]++;
		else if(str[i]=='T'||str[i]=='t')
			book[3]++;
	}
	while(1)
	{
		if(book[0]>0)
		{
			cout << "G";
			book[0]--;	
		}
		if(book[1]>0)
		{
			cout << "P";
			book[1]--;
		}
		if(book[2]>0)
		{
			cout << "L";
			book[2]--;
		}
		if(book[3]>0)
		{
			cout << "T";
			book[3]--;
		}
		if(book[0]==0&&book[1]==0&&book[2]==0&&book[3]==0)
			break;
	}
	return 0;
}

L1-024 后天 (5 分)

如果今天是星期三,后天就是星期五;如果今天是星期六,后天就是星期一。我们用数字1到7对应星期一到星期日。给定某一天,请你输出那天的“后天”是星期几。

输入格式:

输入第一行给出一个正整数D(1 ≤ D ≤ 7),代表星期里的某一天。

扫描二维码关注公众号,回复: 4909552 查看本文章

输出格式:

在一行中输出D天的后天是星期几。

输入样例:

3

输出样例:

5

 题目代码:

//L1-024 后天
#include<iostream>

using namespace std;

int main()
{
	int n;
	cin >> n;
	if(n==1) cout << "3\n";
	else if(n==2) cout << "4\n";
	else if(n==3) cout << "5\n";
	else if(n==4) cout << "6\n";
	else if(n==5) cout << "7\n";
	else if(n==6) cout << "1\n";
	else cout << "2\n";
	return 0;
}

L1-025 正整数A+B (15 分)

题的目标很简单,就是求两个正整数AB的和,其中AB都在区间[1,1000]。稍微有点麻烦的是,输入并不保证是两个正整数。

输入格式:

输入在一行给出AB,其间以空格分开。问题是AB不一定是满足要求的正整数,有时候可能是超出范围的数字、负数、带小数点的实数、甚至是一堆乱码。

注意:我们把输入中出现的第1个空格认为是AB的分隔。题目保证至少存在一个空格,并且B不是一个空字符串。

输出格式:

如果输入的确是两个正整数,则按格式A + B = 和输出。如果某个输入不合要求,则在相应位置输出?,显然此时和也是?

输入样例1:

123 456

输出样例1:

123 + 456 = 579

输入样例2:

22. 18

输出样例2:

? + 18 = ?

输入样例3:

-100 blabla bla...33

输出样例3:

? + ? = ?

 题目代码:

//L1-025 正整数A+B
#include<iostream>
#include<cstring>
#include<cmath>
#define MAXN 1001
using namespace std;

int main()
{
	char A[MAXN],B[MAXN];
	int lena,lenb,flaga=1,flagb=1;
	cin >> A;
	//B字符串 第0个字符是空格 所以从第一个位置开始判断 
	scanf("%[^\n]",B);
	lena=strlen(A);lenb=strlen(B);
//	cout << lena <<"     " << lenb << endl;
	if(lena>=4&&lenb-1<=4)	
		flaga=0;	
	if(lena<=4&&lenb-1>=4)
		flagb=0;
	if(lena>=4&&lenb-1>=4)
	{
		flaga=0;
		flagb=0;
	}
	if(A[0]=='0')
		flaga=0;
	if(B[1]=='0')
		flagb=0;
//		cout << flaga << "     " <<flagb <<endl;
	for(int i=1;i<lena;i++)
	{
		if(A[i]<'0'||A[i]>'9')
		{
			flaga=0;
			break;
		}
	}
	for(int i=2;i<lenb;i++)
	{
		if(B[i]<'0'||B[i]>'9')
		{
			flagb=0;
			break;
		}
	}		
	if(lena==4)
		if(A[0]=='1'&&A[1]=='0'&&A[2]=='0'&&A[3]=='0')
			flaga=1;
	if(lenb-1==4)
		if(B[1]=='1'&&B[2]=='0'&&B[3]=='0'&&B[4]=='0')
			flagb=1;
//	cout << flaga << "     " <<flagb <<endl;
	if(flaga&&flagb)
	{
		int suma=0,sumb=0;
		int j=lena;
		for(int i=0;i<lena;i++)
		{
			j--;
			suma+=pow(10,j)*(A[i]-48);	
		}	 	
		j=lenb-1;
		for(int i=1;i<lenb;i++)
		{
			j--;
			sumb+=pow(10,j)*(B[i]-48);
		} 	
		cout << A << " +" << B << " = " << suma+sumb << endl;
	}
	if(!flaga&&!flagb)
		cout << "? + ? = ?\n";
	if(flaga&&!flagb)
		cout << A << " + ? = ?\n";
	if(!flaga&&flagb)
	 	cout << "? +" << B << " = ?\n";
	return 0;
}

L1-026 I Love GPLT (5 分)

这道超级简单的题目没有任何输入。

你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了。

所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。

输入样例:

输出样例:

I

L
o
v
e

G
P
L
T

 题目代码:

#include <iostream>
 
using namespace std;
 
 
int main() {
    
   printf("I\n \nL\no\nv\ne\n \nG\nP\nL\nT\n");
    
   return 0;
}

L1-027 出租 (20 分)

下面是新浪微博上曾经很火的一张图:

一时间网上一片求救声,急问这个怎么破。其实这段代码很简单,index数组就是arr数组的下标,index[0]=2 对应 arr[2]=1index[1]=0对应 arr[0]=8index[2]=3 对应 arr[3]=0,以此类推…… 很容易得到电话号码是18013820100

本题要求你编写一个程序,为任何一个电话号码生成这段代码 —— 事实上,只要生成最前面两行就可以了,后面内容是不变的。

输入格式:

输入在一行中给出一个由11位数字组成的手机号码。

输出格式:

为输入的号码生成代码的前两行,其中arr中的数字必须按递减顺序给出。

输入样例:

18013820100

输出样例:

int[] arr = new int[]{8,3,2,1,0};
int[] index = new int[]{3,0,4,3,1,0,2,4,3,4,4};

 题目代码:

//L1-027 出租 
#include<iostream>
#include<cstring>
#define MAXN 11
using namespace std;
char id[MAXN];
int nnew[MAXN],book[MAXN],dex[MAXN];
int main()
{
	int num=0;
	cin >>id;
	for(int i=0;i<MAXN;i++)
	{
		book[id[i]-48]++;
	}
	for(int i=MAXN-1;i>=0;i--)
	{
		if(book[i]>0)
		{
			nnew[num]=i;
			num++;
		}
	}
	//cout << num << endl;
	cout << "int[] arr = new int[]{";
	for(int i=0;i<num;i++)
		if(i!=num-1)
			cout << nnew[i] << ",";
	cout << nnew[num-1] << "};\n";
	
	for(int i=0;i<MAXN;i++)
	{
		for(int j=0;j<num;j++)
		{
			if(id[i]-48==nnew[j])
			{
				dex[i]=j;
				break;
			}
		}
	}
	
	cout << "int[] index = new int[]{";
	for(int i=0;i<MAXN;i++)
		if(i!=MAXN-1)
			cout << dex[i] << ",";
	cout << dex[MAXN-1] << "};\n";
	//cout << id <<endl;
	return 0;
}

L1-028 判断素数 (10 分)

本题的目标很简单,就是判断一个给定的正整数是否素数。

输入格式:

输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于2​31​​的需要判断的正整数。

输出格式:

对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No

输入样例:

2
11
111

输出样例:

Yes
No

 题目代码:

#include"iostream"
#include"cmath"
using namespace std;
bool isprime(long long int n){
  if(n==1){//注意n==1的情况
    return false;
   }
  for(int i=2;i < sqrt(n);i++){//写成i*i< sqrt(n)这种形式好了
    if(n%i==0){
      return false;
    }
  }
  return true;
}
int main(){
  int n;
  cin>>n;
  long long int temp;
  for(int i=0;i < n;i++){
    cin>>temp;
    if(isprime(temp)){
      cout<<"Yes"<<endl;
    }else{
      cout<<"No"<<endl;
    }
  }
}

L1-029 是不是太胖了 (5 分)

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤是公斤的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)

输入格式:

输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

输出格式:

在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

输入样例:

169

输出样例:

124.2

 题目代码:

//L1-029 是不是太胖了
#include<iostream>

using namespace std;

int main()
{
	float h;
	cin >> h;
	printf("%.1f\n",(h-100)*0.9*2);
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/psc521/article/details/86472183