吴凡的题库——快快编程1-50
最编程
2024-02-10 20:47:12
...
- 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;
}
- 删除最大和最小
题目描述
请写一个程序,输入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;
}
- 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,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;
}
- 凑和
题目描述
有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;
}
- 病毒扩散(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:
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;
}
- 三数凑和
题目描述
请写一个程序,在输入的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;
}
- 一个菱形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;
}
- 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;
}
- 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;
}
- 长方体体积
题目描述
请写一个程序,输入长方体的长,宽,高。输出这 个长方体的体积(保留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;
}
- 凯撒加密字符
题目描述
历史上罗马的凯撒大帝使用过一种加密技术,把英 文的每个字母按照规律变成另一个字母。例如以下 规则: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;
}
- 打折
题目描述
西佳佳商场进行暑期打折促销,一支钢笔单价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;
}
- 含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;
}
- 最大值
题目描述
写一个程序,输入是三个整数,输出是这三个数中 的最大值。注意: 三个数中可能出现相等的数字
输入输出格式
输入格式
共一行,三个整数,由空格分开,绝对值均不超过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;
}
- 含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;
}
- 三角形判定
题目描述
数学家告诉我们:三角形中,任意两条边之和一定 大于第三边。请写一个程序,输入为三条线段的长 度,输出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;
}
- 谁考了第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;
}
- 菱形变形
题目描述
请写一个程序,输入是一个正整数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;
}
- 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;
}
- 质数生成
题目描述
请写一个程序,输入是一个正整数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;
}
- 括号匹配
题目描述
假设一个表达式有英文字母(小写)、运算符(+,—,*,/)和左右小(圆)括号构成。编写一个程序检查表达式中的左右圆括号是否匹配,若匹配,则 返回“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;
}
- 扫雷游戏
题目描述
扫雷游戏是一款十分经典的单机小游戏。在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