备战 2019蓝桥杯
问题描述
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式
输出一行,按从小到大的顺序输出排序后的数列。
样例输入
5
8 3 6 4 9
样例输出
3 4 6 8 9
#include<iostream>
using namespace std;
int main()
{
int n, i;
int a[202];
cin >> n;
int exchange = n;
int bound = n;
a[0] = 0;
for (i = 1;i <= n;i++)
cin >> a[i];
while (exchange)
{
bound = exchange;
exchange = 0;
for (i = 1;i < bound;i++)
{
if (a[i] > a[i + 1])
{
a[0] = a[i];
a[i] = a[i + 1];
a[i + 1] = a[0];
exchange = i ;
}
}
}
for (i = 1;i <= n;i++)
cout << a[i] << " ";
return 0;
}
问题描述
对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:
00000
00001
00010
00011
00100
请按从小到大的顺序输出这32种01串。
输入格式
本试题没有输入。
输出格式
输出32行,按从小到大的顺序每行一个长度为5的01串。
样例输出
00000
00001
00010
00011
#include<iostream>
using namespace std;
int main()
{
for (int a = 0;a < 2;a++)
for (int b = 0;b < 2;b++)
for (int c = 0;c < 2;c++)
for (int d = 0;d < 2;d++)
for (int e = 0;e < 2;e++)
cout << a << b << c << d << e << endl;
return 0;
}
问题描述
给出n个数,找出这n个数的最大值,最小值,和。
输入格式
第一行为整数n,表示数的个数。
第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。
输出格式
输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。
样例输入
5
1 3 -2 4 5
样例输出
5
-2
11
数据规模与约定
1 <= n <= 10000。
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int *p = new int[n+1];
for (int i = 1;i < n + 1;i++)
cin >> p[i];
int max = p[1];
int min = p[1];
int sum = 0;
for (int i = 1;i < n+1;i++)
{
if (p[i] < min)
min = p[i];
if (p[i] > max)
max = p[i];
sum += p[i];
}
cout << max << endl;
cout << min << endl;
cout << sum << endl;
return 0;
}
参考答案
#include <iostream>
#include <string>
using namespace std;
#include <math.h>
int main()
{
int n,max=-10000,min=10000,sum=0;
cin>>n;
int *q=new int[n];
for(int i=0;i<n;i++)
{
cin>>q[i];
sum+=q[i];
}
for(int j=0;j<n;j++)
{
if(q[j]>max)
max=q[j];
if(q[j]<min)
min=q[j];
}
cout<<max<<endl;
cout<<min<<endl;
cout<<sum<<endl;
return 0;
}
运行截图
问题描述
FJ在沙盘上写了这样一些字符串:
A1 = “A”
A2 = “ABA”
A3 = “ABACABA”
A4 = “ABACABADABACABA”
… …
你能找出其中的规律并写所有的数列AN吗?
输入格式
仅有一个数:N ≤ 26。
输出格式
请输出相应的字符串AN,以一个换行符结束。输出中不得含有多余的空格或换行、回车符。
样例输入
3
样例输出
ABACABA
#include<iostream>
#include<string>
using namespace std;
int main()
{
int num;
cin >> num;
string s1;
string s2 = "A";
for (int i = 1;i <= num;i++)
{
s2 = s1 + char(64 + i) + s1;
s1 = s2;
}
cout << s2 << endl;
return 0;
}
参考答案
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n;
cin>>n;
string s1="A";
string s2="A";
for(int i=1;i<n;i++)
{
s2=s1+char(65+i)+s1;
s1=s2;
}
cout<<s2<<endl;
return 0;
}
运行截图
问题描述
给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。
输入格式
第一行包含一个整数n。
第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。
第三行包含一个整数a,为待查找的数。
输出格式
如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。
样例输入
6
1 9 4 8 3 9
9
样例输出
2
数据规模与约定
1 <= n <= 1000。
#include<iostream>
using namespace std;
//查找整数
int main()
{
int a[1001];
int n, k;
bool judge=false;
cin >> n;
for (int i = 0;i < n;i++)
cin >> a[i];
cin >> k;
for (int i = 0;i < n;i++)
{
if (a[i] == k)
{
cout << i + 1 << endl;
judge = true;
break;
}
}
if (judge == false)
cout << -1 << endl;
return 0;
}
问题描述
样例输入
一个满足题目要求的输入范例。
3 10
样例输出
与上面的样例输入对应的输出。
数据规模和约定
输入数据中每一个数的范围。
例:结果在int表示时不会溢出。
#include<iostream>
using namespace std;
int function(int k,int n)
{
if (k == 0 || k == n)
return 1;
else
return function(k, n - 1) + function(k - 1, n - 1);
}
int main()
{
int n, k;
cin >> k >> n;
cout << function(k, n);
return 0;
}
问题描述
编写一个程序,输入3个整数,然后程序将对这三个整数按照从大到小进行排列。
输入格式:输入只有一行,即三个整数,中间用空格隔开。
输出格式:输出只有一行,即排序后的结果。
输入输出样例
样例输入
9 2 30
样例输出
30 9 2
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int a[3];
for (int i = 0;i < 3;i++)
cin >> a[i];
sort(a, a + 3, cmp);//sort的前两个参数是起始地址和终止地址,第三个参数为比较函数
for (int i = 0;i < 3;i++)
cout << a[i] << " ";
return 0;
}
问题描述
编写一个程序,首先输入一个整数,例如5,然后在屏幕上显示如下的图形(5表示行数):
* * * * *
* * * *
* * *
* *
*
#include<iostream>
using namespace std;
int main()
{
int n;
cin >> n;
for (int i = 0;i < n;i++)//行数
{
for (int j = 0;j < n - i;j++)//每行输出个数
{
cout << "*";
cout << " ";
}
cout << endl;
}
return 0;
}
问题描述
对于给定整数数组a[],寻找其中最大值,并返回下标。
输入格式
整数数组a[],数组元素个数小于1等于100。输出数据分作两行:第一行只有一个数,表示数组元素个数;第二行为数组的各个元素。
输出格式
输出最大值,及其下标
样例输入
3
3 2 1
样例输出
3 0
#include<iostream>
using namespace std;
/*问题描述
对于给定整数数组a[],寻找其中最大值,并返回下标。
输入格式
整数数组a[],数组元素个数小于1等于100。输出数据分作两行:第一行只有一个数,表示数组元素个数;第二行为数组的各个元素。
输出格式
输出最大值,及其下标
*/
const int max = 100;
int main()
{
int n;
cin >> n;
int *p = new int[n];
for (int i = 0;i < n;i++)
cin >> p[i];
int k;//最大值k
int loc;
k = p[0];
for(int i=1;i<n;i++)
if (k < p[i])
{
int temp;
temp = k;
k = p[i];
p[i] = temp;
loc = i;
}
cout << k << " " << loc;
return 0;
}
问题描述
小于10的自然数中有四个数字能除尽3或5(3, 5, 6, 9),它们的和为23。
请计算所有小于1000的自然数中能除尽3或5的数字的合。然后使用标准输出cout,输出你的结果。
输入格式
无。
输出格式
一行一个整数,表示你的结果。
#include<iostream>
using namespace std;
int main()
{
double sum=0;
int k;
for (int i = 0;i < 1000;i++)
{
if (i % 3 == 0 || i % 5 == 0)
{
k = i;
sum += k;
}
}
cout << sum;
return 0;
}
从键盘输入一个大写字母,要求改用小写字母输出。
输入
A
输出
a
#include<iostream>
using namespace std;
int main()
{
char c;
cin >> c;
char ans = c + 32;
cout << ans;
return 0;
}
问题描述
设计算法,用户输入合数,程序输出若个素数的乘积。例如,输入6,输出23。输入20,输出22*5。
样例
与上面的样例输入对应的输出。
例:
数据规模和约定
输入数据中每一个数在int表示范围内
#include<iostream>
using namespace std;
int main()
{
int n;
int x=1;
bool flag = true;
cin >> n;
while (n != 1)
{
x++;
while (n%x == 0)
{
n = n / x;
if (flag)
{
flag = false;
cout << x;
}
else
{
cout << "*" << x;
}
}
}
return 0;
}
问题描述
输入三个数,比较其大小,并从大到小输出。
输入格式
一行三个整数。
输出格式
一行三个整数,从大到小排序。
样例输入
33 88 77
样例输出
88 77 33
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
int main()
{
int a[3];
for (int i = 0;i < 3;i++)
cin >> a[i];
sort(a, a + 3,cmp);
for (int i = 0;i < 3;i++)
cout << a[i] << " ";
return 0;
}