2021级C++上机考(物联网、机器人)(上)

*上都是水题,看看就好

一、This is line x

描述

输出m行文字,文字内容是This is line x.

其中x要分别用数字1、2、...、m替换。

输入

只有一组案例。

一个正整数m,表示有m行文字。(m<=30)

输出

输出m行文字,文字内容是This is line x.

其中x要分别用数字1、2、...、m替换。

最后一行文字输出结束后也要换行。

样例输入

3
 

样例输出

This is line 1.

This is line 2.

This is line 3.

关键代码

*****
for (int i = 1; i <= m; i++)
{
	printf("This is line %d.\n", i);
}
*****

解释

一个循环,从第一行输出到第m行,用printf格式输出就好了。

二、高斯求和

描述

高斯从小就可以在几秒内算出来1+2+...+100=5050。现在你可以写代码去算一些更大的数字,比如10+11+...+1000的结果。

现在要计算从a开始一直到b的所有整数的和,请写代码实现。

输入

多组案例。一个正整数n,表示案例的数量。(n<=100)

每组案例由两个正整数a、b组成。(1<=a<=b<=10000)

输出

针对每组案例,输出一个整数,表示从a开始一直到b的所有整数的和。

每组案例输出完要换行。

样例输入

2
1 100
10 1000
 

样例输出

5050

500455

关键代码

*****
int sum = 0;
for (int i = a; i <= b; i++)
{
	sum += i;
}
*****
int ans = (b - a + 1) * (a + b) / 2;
*****

解释

两种方法,第一种是利用循环从a加到b,第二种是利用等差数列的性质求前n项和。

三、星号阵列-20

描述

根据行数和列数,输出星号阵列。要求在列阵的左边输出行编号,阵列的上方输出列编号。

输入

多组案例。一个正整数n,表示案例的数量。(n<=30)

每组案例由两个正整数a和b组成,表示星号阵列的行数和列数。(a<=9, b<=9)

输出

针对每组案例,输出一个星号阵列。要求在列阵的右边输出行编号,阵列的下方输出列编号。

每组案例的最后一行需要照常换行。

样例输入

2
2 3
5 4
 

样例输出

***1

***2

123

****1

****2

****3

****4

****5

1234

关键代码

*****
for (int i = 1; i <= a + 1; i++)
{
	for (int j = 1; j <= b + 1; j++)
	{
		if (j == b + 1 && i <= a)
			cout << i;
		else if (i == a + 1 && j <= b)
			cout << j;
		else if (i <= a && j <= b)
			cout << "*";
	}
	cout << endl;
}
*****

解释

与星号阵列-19有异曲同工之妙,一样是两层循环,外循环表示行,内循环表示列,如果是最后一行,就输出列,如果是最后一列就输出行,然后输出星号。

四、区域范围内数字个数

描述

有m个整数,判断其中有多少个数字在闭区间[a,b]之外。

输入

多组案例。一个正整数n,表示案例的数量。(n<=100)

每组案例先是一个正整数m和两个整数a、b,(m<=100,-10000<=a<=b<=10000)

然后是m个整数。(绝对值均不大于100000)

输出

针对每组案例,输出一个整数,表示这m个整数中不在闭区间[a,b]范围内的数字个数。

每组案例输出完要换行。

样例输入

2
3 -5 5
10 -5 1
3 -5 5
1 2 3
 

样例输出

1

0

关键代码

*****
sort(num, num + m);
int cnt = 0;
for (int i = 0; i < m; i++)
{
	if (num[i] >= a && num[i] <= b)
		cnt++;
	if (num[i] > b)
		break;
}
cout << m - cnt << endl;
*****
for (int i = 1; i <= m; i++)
{
	int x;
	cin >> x;
	if (x<a || x>b)
		cnt++;
}
*****

解释

这题运用了数学中补集的思想,要寻找不在范围内的数字,可以先寻找在范围内的数字然后再拿总个数减一减,为了优化时间,对输入的数字进行排序,然后再查找在此范围内的数字。或者采用边读入边判断的方式,寻找符合要求的个数。

五、孔融让梨

描述

孔融的妈准备了7个梨,有大有小,孔融挑了个最小的梨,然后给哥哥拿了个最大的梨。问剩下的梨有多重?

输入

多组案例。一个正整数n,表示案例的数量。(n<=100)

每组案例有7个正整数,表示7个梨的重量。(均不大于1000)

输出

针对每组案例,输出一个整数,表示剩下的梨的总重量。

每组案例输出完要还换行。

样例输入

2
1 2 3 4 5 6 7
5 5 5 5 5 5 5
 

样例输出

20

25

关键代码

*****
for (int i = 0; i < 7; i++)
{
	cin >> a[i];
	sum += a[i];
}
sort(a, a + 7);
cout << sum - a[0] - a[6] << endl;
*****

解释

先算出七个梨的总重量,再对七个梨进行排序,减去最小的和最大的就是答案。

猜你喜欢

转载自blog.csdn.net/xiaooochaooo/article/details/122378787

相关文章