欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

吴凡的题库——快快编程1-50

最编程 2024-02-10 20:47:12
...
  1. A+B Problem
题目描述
输入两个整数a,b,输出它们的和.
题目保证输入数据的范围如下:
-1000000000<=a<=1000000000
-1000000000<=b<=1000000000
输入输出格式
输入格式
输入两个整数,以空格分开
输出格式
输出一个整数
输入输出样例
输入样例#1:
20 30
输出样例#1:
50
输入样例#2:
6 9
输出样例#2:
15
输入样例#3:
无
输出样例#3:
无
#include<iostream>
using namespace std;
int a,b;
int main(){
	cin>>a>>b;
	cout<<a + b;
	return 0;
}
  1. 删除最大和最小
题目描述
请写一个程序,输入n个不同的整数,删除最大数字和最小数字,依次输出剩余n-2个整数。
输入输出格式
输入格式
输入共两行:第一行为正整数n,第二行为n个整数。
其中n<=100,数字绝对值不超过100000。
输出格式
一行共n-2个整数
输入输出样例
输入样例#1:
5
10 8 5 2 6
输出样例#1:
8 5 6
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n, num[100], maxium=0, minium;
	cin>>n;
	for(int i=0;i<n;i++)cin>>num[i];
	minium=num[0];
	for(int i=0;i<n;i++){
		if(num[i]<minium)minium=num[i];
		if(num[i]>maxium)maxium=num[i];
	}
	for(int i=0;i<n;i++)
	    if((num[i]!=maxium)&&(num[i]!=minium))
	        cout<<num[i]<<" ";
    return 0;
}
  1. lester大帅哥
题目描述
(传说级别的题目不一定都是超级难题,也包括具有某些特殊含义题目。比如这道题就是为了纪念这个网站的缔造者,传说中的lester大神)

知道这个网站谁做的吗,就是史上最帅小鲜肉lester大大!
输入输出格式
输入格式
没有输入
输出格式
输出lester大帅哥
输入输出样例
输入样例#1:
没有输入
输出样例#1:
lester大帅哥
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int main(){
	cout<<"lester大帅哥";
	return 0;
}
  1. 三连击
题目描述
将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数
输入输出格式
输入格式
木有输入
输出格式
若干行,每行3个数字。按照每行第一个数字升序排列
输入输出样例
输入样例#1:

输出样例#1:
192 384 576
* * *
...
* * *
(输出被和谐了)
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int main(){
    cout<<"192 384 576"<<endl;  
	cout<<"219 438 657"<<endl; 
	cout<<"273 546 819"<<endl; 
	cout<<"327 654 981"<<endl;
	return 0;
}
  1. 凑和
题目描述
有n个整数,编号1到n,判断能否找到两个不同编号的数总和为m。

如果可以找到,则输出Yes。若找不到则输出No。

注意:需要找的是两个不同编号的数。

输入输出格式
输入格式
输入的第一行为n和m两个整数,第二行为n个数字。
其中n<=100,数字绝对值不超过100000。
输出格式
Yes或者No
输入输出样例
输入样例#1:
4 15
1 5 3 10
输出样例#1:
Yes
输入样例#2:
3 5
1 2 5
输出样例#2:
No
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int m,n,num[101],i,j;
bool ans=0; 
int main(){
	cin>>n>>m;
	for(i=0;i<n;i++)cin>>num[i];
	for(i=0;i<n;i++){
		for(j=i+1;j<n;j++)
			if(num[i]+num[j]==m){ans=1;break;}
	}
	cout<<(ans?"Yes":"No")<<endl;
	return 0;
}
  1. 病毒扩散(BestAC by燕子何)
题目描述
今天在地图上已经有几个地点爆发了疫情,请找到第二天会有哪些地方受到威胁。输入是5*5的表格,用来表示地图上的疫情。E表示现在没有疫情,A表示已经有疫情。第二天,所有已有疫情地点的上下左右位置都会发展出疫情。请输出5*5的新表格,用来表示第二天的疫情。
输入输出格式
输入格式
5*5的字符阵
输出格式
5*5的字符阵
输入输出样例
输入样例#1:
EEEEE
EEEEE
AEEEE
EEEAE
EEEEE
输出样例#1:
EEEEE
AEEEE
AAEAE
AEAAA
EEEAE
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<iostream>
using namespace std;
char a[7][7];
int main(){
	for(int i=1;i<=5;i++)
		for(int j=1;j<=5;j++)
			cin>>a[i][j];
	for(int i=1;i<=5;i++)
		for(int j=1;j<=5;j++)
			if(a[i][j]=='A'){
				if(i-1>=1&&a[i-1][j]!='A') a[i-1][j]='a';
				if(i+1<=5&&a[i+1][j]!='A') a[i+1][j]='a';
				if(j-1>=1&&a[i][j-1]!='A') a[i][j-1]='a';
				if(j+1<=5&&a[i][j+1]!='A') a[i][j+1]='a';
			}
	for(int i=1;i<=5;i++)
		for(int j=1;j<=5;j++)
			if(a[i][j]=='a')
				a[i][j]='A';
		cout<<endl;
	for(int i=1;i<=5;i++){
		for(int j=1;j<=5;j++)
				cout<<a[i][j];
			cout<<endl;
	}
	return 0;
}
  1. 大小写转换
题目描述
将字符串中的大写字母转为小写,小写字母转为大写
输入输出格式
输入格式
一行字符串,只包含字母,无需检查输入合法性
输出格式
一行字符串
输入输出样例
输入样例#1:
abcdEFG
输出样例#1:
ABCDefg
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
char c;
int main(){
	while(cin>>c){
		if(c>='A'&&c<='Z')cout<<char(c+32);
		if(c>='a'&&c<='z')cout<<char(c-32);
	}
	return 0;
}
  1. 三数凑和
题目描述
请写一个程序,在输入的n个正整数中,判断能否找到三个数总和为m,这三个数可以重复(即n个数中的每个数都可以使用多次)。如果可以找到,则输出为Yes。若找不到则输出No。输入的第一行为n和m两个整数,第二行为n个数字。
其中n<=1000,数字绝对值不超过2000。
输入输出格式
输入格式
第一行为n和m两个整数,第二行为n个数字。 其中n<=1000,数字绝对值不超过2000。m<=2000。
输出格式
Yes或者No
输入输出样例
输入样例#1:
4 15
1 5 3 9
输出样例#1:
Yes
输入样例#2:
3 10
5 6 7
输出样例#2:
No
输入样例#3:
无
输出样例#3:
无

#include<bits/stdc++.h>
using namespace std;
int a[1000],b[2001],n,m;
bool cnt=0;
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++)cin>>a[i],b[a[i]]=1; 
	for(int j=0;j<n;j++)
		for(int k=0;k<n;k++){
			if(m-a[j]-a[k]>2000||m-a[j]-a[k]<0) continue;
			if(b[m-a[j]-a[k]]==1){cnt=1;break;} 
		}
	cout<<(cnt?"Yes":"No")<<endl;
	return 0;
}
  1. 一个菱形2
题目描述
请写一个程序,使用输出命令在平面上输出一个菱形,具体形状请参考下文中的输出样例。

注意:

一共7行,每一行都有一个换行,行之间不能有多余空行;

行末星号后不应该出现多余空格;

星号之间不应该有空格。

输入输出格式
输入格式
无
输出格式
无
输入输出样例
输入样例#1:
无
输出样例#1:
   *
  ***
 *****
*******
 *****
  ***
   *
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<iostream>
using namespace std;
int main(){
	cout<<"   *"<<endl;
	cout<<"  ***"<<endl;
	cout<<" *****"<<endl;
	cout<<"*******"<<endl;
	cout<<" *****"<<endl;
	cout<<"  ***"<<endl;
	cout<<"   *"<<endl;
	return 0;
}
  1. ASCII码破密
题目描述
请把以下密码通过ASCII码转换成英文句子,并写一个程序把该句子完整 地输出到屏幕
67 43 43 32 114 117 110 115 32 102 97 115 116
输入输出格式
输入格式
无
输出格式
一行字符串
输入输出样例
输入样例#1:
无输入
输出样例#1:
保密
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<iostream>
using namespace std;
int main(){
	cout<<"C++ runs fast";
	return 0;
}
  1. A+B
题目描述
请写一个程序,输入是两个整数a和b,用空格分开,输出是这两个数的和。
输入输出格式
输入格式
一行里有两个整数,用空格分开
输出格式
一个整数
输入输出样例
输入样例#1:
7 8
输出样例#1:
15
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int main(){
	int a,b;
	cin>>a>>b;
	cout<<a+b<<endl;
	return 0;
}
  1. 长方体体积
题目描述
请写一个程序,输入长方体的长,宽,高。输出这 个长方体的体积(保留2位小数)。
输入输出格式
输入格式
输入包含三个浮点型数字,用空格分开,输入的数 字都不会超过10000。
输出格式
输出一个浮点数。
输入输出样例
输入样例#1:
2.5 5 1
输出样例#1:
12.50
输入样例#2:
1 2 3
输出样例#2:
6.00
输入样例#3:
2.5 2 2
输出样例#3:
10.00
#include<iostream>
#include<iomanip>
using namespace std;
double a,b,c;
int main(){
	cin>>a>>b>>c;
	cout<<fixed<<setprecision(2)<<a * b * c;
	return 0;
}
  1. 凯撒加密字符
题目描述
历史上罗马的凯撒大帝使用过一种加密技术,把英 文的每个字母按照规律变成另一个字母。例如以下 规则:a加密后变成b,b加密后变成c,c加密后变成d,…,y加密后变成z,z加密后变成a 请写一个程序,输入是三个小写字母,输出是这些字母加密后的 结果。
输入输出格式
输入格式
输入文件ceasar.in  输入共一行,三个小写字母,用空格分开
输出格式
输出文件ceasar.out  输出共一行,三个小写字母 ,用空格分开
输入输出样例
输入样例#1:
x y z
输出样例#1:
y z a
输入样例#2:
a b c
输出样例#2:
b c d
输入样例#3:

输出样例#3:

#include<bits/stdc++.h>
using namespace std;
int main(){
	freopen("ceasar.in", "r", stdin);
	freopen("ceasar.out", "w", stdout);
	char a, b, c;
	cin>>a>>b>>c;
	a = (a - 'a' + 1) % 26 + 'a';
	b = (b - 'a' + 1) % 26 + 'a';
	c = (c - 'a' + 1) % 26 + 'a';
	cout<<a<<" "<<b<<" "<<c<<endl;
	return 0;
}
  1. 打折
题目描述
西佳佳商场进行暑期打折促销,一支钢笔单价10元 。如果购买数量满100支可以打七折;如果购买数量满50支可以打八折。请写一个程序,输入是一个正 整数表示购买数量,输出总费用。
输入输出格式
输入格式
输入一个整数,保证不超过100000
输出格式
输出一个整数
输入输出样例
输入样例#1:
80
输出样例#1:
640
解释说明:买80支笔可以打八折,每支笔单价变成8元,总费用=8元/支*80支=640元
输入样例#2:
1
输出样例#2:
10
解释说明:买1支笔不打折,总费用=10元/支*1支=10元
输入样例#3:
100
输出样例#3:
700
解释说明:买100支笔可以打七折,每支笔单价7元 ,总费用=7元/支*100支=700元
#include<iostream>
using namespace std; 
int main(){
	int n; 
	cin>>n; 
	if(n<50) 
		cout<<n*10<<endl; 
	else if(n>=50&&n<100)
		cout<<n*10*0.8<<endl;
	else 
		cout<<n*10*0.7<<endl;	
	return 0;
}
  1. 含k个3的数
题目描述
输入两个正整数m和k,其中1<m<1000000000,1<=k<=8 ,判断m能否被19 整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。
输入输出格式
输入格式
m 和 k 的值,中间用单个空格间隔
输出格式
满足条件时输出 YES,不满足时输出 NO
输入输出样例
输入样例#1:
43833 3
输出样例#1:
YES
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int main(){
	int x,y,cnt=0;
	cin>>x>>y;
	int z=x;
	while(z>=1){
		if(z%10==3) cnt++;
		z=z/10;
	} 
	if(cnt==y && x%19==0) cout<<"YES"<<endl;
	else cout<<"NO"<<endl; 
	return 0;
}
  1. 最大值
题目描述
写一个程序,输入是三个整数,输出是这三个数中 的最大值。注意: 三个数中可能出现相等的数字
输入输出格式
输入格式
共一行,三个整数,由空格分开,绝对值均不超过1000000000
输出格式
一个整数
输入输出样例
输入样例#1:
1 1 0
输出样例#1:
1
输入样例#2:
1 2 3
输出样例#2:
3
输入样例#3:
无
输出样例#3:
无
#include<iostream>
using namespace std; 
int main(){ 
	int a,b,c;
	cin>>a>>b>>c;
	if(a>=b&&a>=c) 
		cout<<a<<endl;
	else if(b>=a&&b>=c)
		cout<<b<<endl;
	else 
		cout<<c<<endl;	
	return 0; 
}
  1. 含k个3的数
题目描述
输入两个正整数m和k,其中1<m<1000000000,1<=k<=8 ,判断m能否被19 整除,且恰好含有k个3,如果满足条件,则输出YES,否则,输出NO。
输入输出格式
输入格式
m 和 k 的值,中间用单个空格间隔。
输出格式
满足条件时输出 YES,不满足时输出 NO。
输入输出样例
输入样例#1:
43833 3
输出样例#1:
YES
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
int main(){
	int x,y,cnt=0;
	cin>>x>>y;
	int z=x;
	while(z>=1){
		if(z%10==3) cnt++;
		z=z/10;
	} 
	if(cnt==y && x%19==0) cout<<"YES"<<endl;
	else cout<<"NO"<<endl; 
	return 0;
}
  1. 三角形判定
题目描述
数学家告诉我们:三角形中,任意两条边之和一定 大于第三边。请写一个程序,输入为三条线段的长 度,输出Yes或者No代表这三条线段能否组成一个三角形。


提示:
输入三条边长a,b,c
如果(a加b大于c 并且 b加c大于a 并且 c加a大于b)就输出Yes
否则输出No
输入输出格式
输入格式
输入共一行,三个整数,代表三条线段的长度,均 不超过100000

输出格式
一行字符串,Yes或者No
输入输出样例
输入样例#1:
9 5 4
输出样例#1:
No
输入样例#2:
4 5 6
输出样例#2:
Yes
输入样例#3:

输出样例#3:

#include<iostream>
using namespace std; 
int main(){
	int a,b,c;
	cin>>a>>b>>c;
	if(a>=b&&a>=c)
		cout<<a<<endl;
	else if(b>=a&&b>=c)
		cout<<b<<endl;
	else
		cout<<c<<endl;
	return 0;
}
  1. 谁考了第k名
题目描述
在一次考试,每个学生的成绩均不相同,现在知道学生的学号和成绩,求考第k名学生的学号和成绩。
输入输出格式
输入格式
第一行两个整数n, k,分别表示学生人数和要求的第k名学生,1<=n<=100, 1<=k<=n。
其后有n行,每行一个字符串和一个浮点数,分别表示学号和成绩。
输出格式
第k名学生的学号和成绩
输入输出样例
输入样例#1:
2 1
001 90
002 80
输出样例#1:
001 90
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
struct stu{string id;double mark;};
stu a[103];
int n,k;
bool cmp(const stu&a,const stu&b){return a.mark>b.mark;}
int main(){
	cin>>n>>k;
	for(int i=1; i<=n; i++)	cin>>a[i].id>>a[i].mark;
	sort(a+1,a+1+n,cmp);
	cout<<a[k].id<<" "<<a[k].mark<<endl;
	return 0; 
}
  1. 菱形变形
题目描述
请写一个程序,输入是一个正整数n,输出一个边长为n的菱形图形。
输入输出格式
输入格式
一个正整数n, n<=1000
输出格式
2n-1行字符串。注意行末不能出现多余空格
输入输出样例
输入样例#1:
4
输出样例#1:
   *
  ***
 *****
*******
 *****
  ***
   *
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	for (int i=0; i<n; i++){
		for (int j=0; j<(n-1-i); j++)	cout<<" ";
		for (int j=0; j<2*i+1; j++)	cout<<"*" ;
		cout<<endl;
	}
	for (int i=0; i<n-1; i++){
		for (int j=0; j<i+1; j++)	cout<<" ";
		for (int j=0; j<2*(n-1)-(1+2*i); j++)	cout<<"*";
		cout<<endl;
	}
	return 0;
}
  1. FizzBuzz
题目描述
FizzBuzz游戏需要玩家报数时替换特定数字。请写 一个程序,输入是一个正整数n, n<=100. 依次对1至n的整数打印,如该数能被3整除的时候打印Fizz ;能被5整除的时候打印Buzz;如果既能被3又能被5整除的时候打印FizzBuzz;否则打印该数字。两次 打印间有空格分开。
输入输出格式
输入格式
一个正整数n
输出格式
一行字符串
输入输出样例
输入样例#1:
16
输出样例#1:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz 16
输入样例#2:
5
输出样例#2:
1 2 Fizz 4 Buzz
输入样例#3:
1
输出样例#3:
1
#include<iostream>
using namespace std;
int main(){
	int n,i;
	cin>>n;
	for(i=1;i<=n;i++){ 
		if(i % 5 == 0 && i % 3 == 0){
			cout<<"FizzBuzz ";
		}
		else if(i % 5 == 0){
			cout<<"Buzz "; 
		}
		else if(i % 3 == 0){
			cout<<"Fizz ";
		}
		else{
			cout<<i<<" ";
		}
	}
	return 0;
}
  1. 质数生成
题目描述
请写一个程序,输入是一个正整数n,输出1到n内所有质数,用空格分隔 开。
输入输出格式
输入格式
一个正整数n, n<=100000
输出格式
一行正整数,用空格分隔开
输入输出样例
输入样例#1:
20
输出样例#1:
2 3 5 7 11 13 17 19
输入样例#2:
无
输出样例#2:
无
输入样例#3:
无
输出样例#3:
无
#include<bits/stdc++.h>
using namespace std;
bool isPrime(int x){
	if(x<=1)return 0;
	for(int i=2;i*i<=x;i++) 
		if(x%i==0)return 0;
	return 1;
}
int main(){
	int n;
	cin>>n;
	for(int p=2;p<=n;p++)
		if(isPrime(p))cout<<p<<" ";
	return 0;
} 
  1. 括号匹配
题目描述
假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成。编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则 返回“YES”;否则返回“NO”。
输入输出格式
输入格式
一行字符串即表达式
输出格式
一行,匹配时输出YES,否则输出NO
#include<iostream>
#include<string>
using namespace std;
int top=0;
string f;
int main(){
	getline(cin,f);
	bool match=1;
	for(int i=0;i<f.size();i++){
		if(f[i]=='(')
			++top;
		else if(f[i]==')'){
			if (top==0){
				match=0;
				break;
			}
			top--;
		}
	}
	if (top>0)match=0;

	if (match) cout<<"YES"<<endl;
	else cout<<"NO"<<endl;
	return 0;
}
  1. 扫雷游戏
题目描述
扫雷游戏是一款十分经典的单机小游戏。在n行m列 的雷区中有一些格子含有地雷(称之为地雷格), 其他格子不含地雷(称之为非地雷格)。玩家翻开 一个非地雷格时,该格将会出现一个数字——提示周 围格子中有多少个是地雷格。游戏的目标是在不翻 出任何地雷格的条件下,找出所有的非地雷格。 现在给出n行m列的雷区中的地雷分布,要求计算出每 个非地雷格周围的地雷格数。 1≤n≤100, 1≤m≤100 。
输入输出格式
输入格式
输入文件第一行是用一个空格隔开的两个整数n和m ,分别表示雷区的行数和列数。

接下来n行,每行m个字符,描述了雷区中的地雷分 布情况。字符’*’表示相应格子是地雷格,字符’?’ 表示相应格子是非地雷格。相邻字符之间无分隔符 。

输出格式
输出文件包含n行,每行m个字符,描述整个雷区。 用’*’表示地雷格,用周围的地雷个数表示非地雷格。相邻字符之间无分隔符
#include<iostream>
using namespace std;
const int N=109;
int n,m;
char a[N][N],b[N][N];
int dx[8]={1,1,1,0,0,-1,-1,-1};
int dy[8]={1,0,-1,1,-1,1,0,-1};
int count(int x,int y){
	int cnt=0;
	for(int k=0;k<8;k++){
		int nx=x+dx[k],ny=y+dy[k];
		if(nx>=1&&nx<=n&&ny>=1&&ny<=m)
		    cnt+=(a[nx][ny]=='*');
	}
	return cnt;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=m;j++)
	        cin>>a[i][j];
	for(int i=1;i<=n;i++)
	    for(int j=1;j<=m;j++)
	        if(a[i][j]=='?')
	            b[i][j]='0'+count(i,j);
	        else
	            b[i][j]=a[i][j];
	for(int i=1;i<=n;i++,cout<<endl)
	    for(int j=1;j<=m;j++)cout<<b[i][j];
	return 0;
}

原文地址:https://www.cnblogs.com/WindowsRegedit/p/16125094.html