非常基础的题目(后面还会更新)
7-1 I Love GPLT (5 point(s))
这道超级简单的题目没有任何输入。
你只需要把这句很重要的话 —— I Love GPLT ——竖着输出就可以了。
所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车
#include
#include
using namespace std;
int main()
{
string str = "I Love GPLT";
for(int i = 0; i < str.length(); i ++)
{
cout<
7-2 跟奥巴马一起画方块 (15 point(s))
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!
输入格式:
输入在一行中给出正方形边长N(3≤N≤21)和组成正方形边的某种字符C,间隔一个空格。
输出格式:
输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五入取整)。
#include
#include
using namespace std;
int main()
{
int m;
char a;
cin>>m>>a;
int size;
if(m % 2== 0)
{
size = m /2;
}
else
{
size = m /2 + 1;
}
for(int i = 0; i < size; i ++)
{
string str(m, a);
cout<
7-3 情人节 (15 point(s))
以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。
输入格式:
输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.标志输入的结束,这个符号不算在点赞名单里。
输出格式:
根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner…”;若只有A没有B,则输出“A is the only one for you…”;若连A都没有,则输出“Momo… No one is for you …”。
#include
#include
#include
using namespace std;
int main()
{
vector str;
string st;
while(1)
{
cin>>st;
if(st==".")
{
break;
}else{
str.push_back(st);
}
}
if(str.size() < 2)
{
cout<<"Momo... No one is for you ...";
}else if(str.size() < 14)
{
cout<
7-4 最佳情侣身高差 (10 point(s))
专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。
下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。
输入格式:
输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。
输出格式:
对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。
#include
#include
#include
#include
using namespace std;
int main()
{
int m;
vectorfl;
cin>>m;
for(int i = 0; i < m; i ++)
{
float h;
char ch;
cin>>ch>>h;
if(ch == 'M')
{
fl.push_back(h * 100 / 109);
}else{
fl.push_back(h * 109/100);
}
}
for(int i = 0; i < fl.size(); i ++)
{
cout<
7-5 矩阵A乘以B (15 point(s))
给定两个矩阵A和B,要求你计算它们的乘积矩阵AB。需要注意的是,只有规模匹配的矩阵才可以相乘。即若A有R
a
行、C
a
列,B有R
b
行、C
b
列,则只有C
a
与R
b
相等时,两个矩阵才能相乘。
输入格式:
输入先后给出两个矩阵A和B。对于每个矩阵,首先在一行中给出其行数R和列数C,随后R行,每行给出C个整数,以1个空格分隔,且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数,并且所有整数的绝对值不超过100。
输出格式:
若输入的两个矩阵的规模是匹配的,则按照输入的格式输出乘积矩阵AB,否则输出Error: Ca != Rb,其中Ca是A的列数,Rb是B的行数。
#include
#include
#include
#include
using namespace std;
int main()
{
int m1, n1;
cin>>m1>>n1;
int **p = new int *[m1];
for(int i = 0; i < m1; i ++)
{
p[i] = new int[n1];
}
for(int i = 0; i < m1; i ++)
{
for(int j = 0; j < n1; j ++)
{
cin>>p[i][j];
}
}
int m2, n2;
cin>>m2>>n2;
int **q = new int *[m2];
for(int i = 0; i < m2; i ++)
{
q[i] = new int[n2];
}
for(int i = 0; i < m2; i ++)
{
for(int j = 0; j < n2; j ++)
{
cin>>q[i][j];
}
}
// for(int i = 0; i < m2; i ++)
// {
// for(int j = 0; j < n2; j ++)
// {
// cout<
设计函数求 N 个给定整数的均方差。若将 N 个数 A[ ] 的平均值记为 Avg,则均方差计算公式为:√
[(A
1
−Avg)
2
+(A
2
−Avg)
2
+⋯+(A
N
−Avg)
2
]/N
。
输入格式:
输入首先在第一行给出一个正整数 N(≤10
4
),随后一行给出 N 个正整数。所有数字都不超过 1000,同行数字以空格分隔。
输出格式:
输出这N个数的均方差,要求固定精度输出小数点后5位。
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int m;
cin>>m;
double *db = new double[m];
double sum = 0;
for(int i = 0; i < m; i ++)
{
cin>>db[i];
sum+=db[i];
}
double count = 0;
for(int i = 0; i < m; i ++)
{
count += (db[i] * m - sum) * (db[i] * m - sum);
}
cout<
7-7 寻找250 (10 point(s))
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。
输入格式:
输入在一行中给出不知道多少个绝对值不超过1000的整数,其中保证至少存在一个“250”。
输出格式:
在一行中输出第一次出现的“250”是对方扔过来的第几个数字(计数从1开始)。题目保证输出的数字在整型范围内。
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int position;
string str;
getline(cin, str);
int begin=0;
while(1)
{
position = str.find("250", begin);
if(str[position - 1] ==' ')
{
break;
}
else{
begin += position;
}
}
int count = 1;
for(int i = 0; i <= position; i ++)
{
if(str[i] ==' ' &&str[i + 1] != ' ')
{
count++;
}
}
cout<
7-8 求矩阵的局部极大值 (15 point(s))
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。
输出格式:
每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int m, n;
cin>>m>>n;
int count = 0;
int **p = new int*[m];
for(int i = 0; i < m; i ++)
{
p[i] = new int[n];
}
for(int i = 0; i < m; i ++)
{
for(int j = 0; j < n; j ++)
{
cin>>p[i][j];
}
}
for(int i = 1; i < m - 1; i ++)
{
for(int j = 1; j < n - 1; j ++)
{
if(p[i][j] > p[i-1][j] &&p[i][j] > p[i+1][j] &&p[i][j] > p[i][j-1] &&p[i][j] > p[i][j+ 1])
{
cout<
7-9 用天平找小球 (10 point(s))
三个球A、B、C,大小形状相同且其中有一个球与其他球重量不同。要求找出这个不一样的球。
输入格式:
输入在一行中给出3个正整数,顺序对应球A、B、C的重量。
输出格式:
在一行中输出唯一的那个不一样的球。
#include
#include
#include
#include
#include
using namespace std;
int main()
{
int m, n, k;
cin>>m>>n>>k;
if(m - n == 0)
{
cout<<"C";
}
if(m - k == 0)
{
cout<<"B";
}
if(k - n == 0)
{
cout<<"A";
}
}
7-10 字符串转换成十进制整数 (15 point(s))
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
输入格式:
输入在一行中给出一个以#结束的非空字符串。
输出格式:
在一行中输出转换后的十进制数。题目保证输出在长整型范围内。
#include
int main()
{
char a;
int flag=1,mark=1,sum=0;
while(scanf("%c",&a),a!='#')
{
if(a>='0' && a<='9')
{
flag=0;
sum=sum*16+a-'0';
}
else if(a>='a' && a<='f')
{
flag=0;
sum=sum*16+a-'a'+10;
}
else if(a>='A' && a<='F')
{
flag=0;
sum=sum*16+a-'A'+10;
}
else if(a=='-' && flag==1) mark=0;
}
if(sum==0) printf("0");
else
{
if(mark==0) printf("-");
printf("%d\n",sum);
}
return 0;
}