#CS41014. 阅读程序10-数论14

阅读程序10-数论14

阅读程序

注意:切勿用电脑直接运行代码得出答案,请用大脑+笔+纸运行代码答题,否则是在浪费你的时间。

第10节:数论

第14题【NOIP】2013

#include <iostream>
using namespace std;
int main() {
04	const int SIZE = 100;
	int n, f, i, left, right, middle, a[SIZE];
	cin>>n>>f;
07	for (i = 1; i <= n; i++)
08		cin>>a[i];
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=i; j++)
11			if(a[i]>=a[j]) {
				t=a[i];
				a[j]=a[i];
				a[i]=t;
			}
	}
	left = 1;
	right = n;
	do {
		middle = (left + right) / 2;
		if (f <= a[middle])
			right = middle;
		else
			left = middle + 1;
	} while (left < right);
	cout<<left<<endl;
	return 0;
}

●判断题

(1)将第04行的程序移动到02、03行的中间,程序能够正常运行。

{{ select(14-1) }}

  • 正确
  • 错误

(2)将第11行的“=”删除,运行结果会改变。

{{ select(14-2) }}

  • 正确
  • 错误

(3)将第07行的“i=1;i<=n;”改为“i=0;i<n;”运行结果不会改变。

{{ select(14-3) }}

  • 正确
  • 错误

(4)若第08行输入n个相同的数字,程序最后输出的left值为1。

{{ select(14-4) }}

  • 正确
  • 错误

(5)当n=5,f=7,a={8,4,7,5,6}时,则结果为()。

{{ select(14-5) }}

  • 3
  • 4
  • 5
  • 7

(6)输人仍是第(5),将第11行的“>="改为"<=",则结果为()

{{ select(14-6) }}

  • 3
  • 4
  • 5
  • 7