#K4010. C4.03 STL

C4.03 STL

一、程序阅读。

#include<bits/stdc++.h>
#include<vector>
using namespace std;
vector<int> a;
int n;
int main()
{
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		int d;
		cin>>d;
		a.push_back(d);
	}
	int n=a.size();
	while(1)
	{
		int d;
		d=a[n-1];
		a.insert(a.begin()+0,d);
		for(int i=0; i<n; i++)
		{
			cout<<a[i]<<" ";
		}
		cout<<endl;
		if(a[n-1]==n)
		{
			break;
		}
	}
	return 0;
}

判断题

  1. 第13行a.push_back()函数,实现了在vector<int> a的第一个位置添加元 素。 {{ select(1) }}
  1. 第19行d=a[n-1],得到了vector<int> a倒数第二个元素。 {{ select(2) }}
  1. 定义动态数组vector<int> a(10)动态数组每个元素默认值等于0。 {{ select(3) }}
  1. 定义动态数组vector<int> a(10),数组长度就不能动态增加了。 {{ select(4) }}

选择题

  1. 执行程序后输入下列数据,输出的结果为?
10
1 7 6 5 8 4 3 9 10 2

{{ select(5) }}

  • 2 1 7 6 5 8 4 3 9 10
  • 7 6 5 8 4 3 9 10 2 1
  • 5 8 4 3 9 10 2 1 7 6
  • 4 3 9 10 2 1 7 6 5 8

二、程序填空

题目描述

(枚举因数)从小到大打印正整数 n 的所有正因数。试补全枚举程序.

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin >> n;
	vector<int> fac;
	fac.reserve((int)ceil(sqrt(n)));
	int i;
	for (i = 1; i * i < n; ++i)
	{
		if (___①___)
		{
			fac.push_back(i);
		}
	}
	for (int k = 0; k < fac.size(); ++k)
	{
		cout <<___②___<< " ";
	}
	if (___③___)
	{
		cout <<___④___<< " ";
	}
	for (int k = fac.size() - 1; k >= 0; --k)
	{
		cout <<)___⑤___<< " ";
	}
	return 0;
}
  1. 第①处应填。( ) {{ select(6) }}
  • n % i == 0
  • n % i == 1
  • n % (i-1) == 0
  • n % (i-1) == 1
  1. 第②处应填。( ) {{ select(7) }}
  • n / fac[k]
  • fac[k]
  • fac[k]-1
  • n / (fac[k]-1)
  1. 第③处应填。( ) {{ select(8) }}
  • (i-1) * (i-1) == n
  • (i-1) * i == n
  • i * i == n
  • i * (i-1) == n
  1. 第④处应填。( ) {{ select(9) }}
  • n-i
  • n-i+1
  • i-1
  • i
  1. 第⑤处应填。( ) {{ select(10) }}
  • n / fac[k]
  • fac[k]
  • fac[k]-1
  • n / (fac[k]-1)