基础编程练习题(一)

非常基础的题目(后面还会更新)

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;
}

你可能感兴趣的:(基础编程练习)