int i = 100, x = 0, y = 0; while (i > 0) {
i--;
x = i % 8; if (x == 1)
y++;
}
cout << y << endl; return 0; }
输出:_________
3. #include
using namespace std;
int main() {
int a[6] = {1, 2, 3, 4, 5, 6}; int pi = 0; int pj = 5; int t , i;
while (pi < pj)
{ t = a[pi]; a[pi] = a[pj]; a[pj] = t; pi++; pj--; }
for (i = 0; i < 6; i++)
cout << a[i] << \cout << endl; return 0; }
输出:_________
4. #include
using namespace std;
int main() {
int i, length1, length2; string s1, s2;
s1 = \
s2 = \length1 = s1.size(); length2 = s2.size();
for (i = 0; i < length1; i++)
if (s1[i] >= 'a' && s1[i] <= 'z')
s1[i] -= 'a' - 'A';
for (i = 0; i < length2; i++)
if (s2[i] >= 'a' && s2[i] <= 'z')
s2[i] -= 'a' - 'A';
if (s1 == s2)
cout << \else if (s1 > s2)
cout << \else
cout << \return 0; }
输出:_________
四、完善程序(共 2 题,每题 14 分,共计 28 分)
1. (读入整数)请完善下面的程序,使得程序能够读入两个 int 范围内的整数,
并将这两个整数分别输出,每行一个。(第一、五空 2.5 分,其余 3 分)
输入的整数之间和前后只会出现空格或者回车。输入数据保证合法。
例如:
输入:
123 -789
输出:
123
-789
#include
int readint() {
int num = 0; // 存储读取到的整数 int negative = 0; // 负数标识 char c; // 存储当前读取到的字符 c = cin.get();
while ((c < '0' || c > '9') && c != '-')
c = (1) ;
if (c == '-')
negative = 1; else
(2) ;
c = cin.get(); while ( (3) ) {
(4) ; c = cin.get(); }
if (negative == 1)
(5) ;
return num; }
int main()
{ int a, b;
a = readint(); b = readint();
cout << a << endl << b << endl; return 0; }
2. (郊游活动)有 n 名同学参加学校组织的郊游活动,已知学校给这 n 名同学
的郊游总经费为 A 元,与此同时第 i 位同学自己携带了 Mi 元。为了方便郊 游,活动地点提供 B(≥n)辆自行车供人租用,租用第 j 辆自行车的价格为 Cj 元,每位同学可以使用自己携带的钱或者学校的郊游经费,为了方便账务管 理,每位同学只能为自己租用自行车,且不会借钱给他人,他们想知道最多 有多少位同学能够租用到自行车。(第四、五空 2.5 分,其余 3 分)
本题采用二分法。对于区间[l, r],我们取中间点 mid 并判断租用到自行 车的人数能否达到 mid。判断的过程是利用贪心算法实现的。 #include
int n, B, A, M[MAXN], C[MAXN], l, r, ans, mid; bool check(int nn)
{ int count = 0, i, j; i = (1) ; j = 1; while (i <= n) { if ( (2) )
count += C[j] - M[i]; i++; j++; } return (3) ;
}
void sort(int a[], int l, int r) {
int i = l, j = r, x = a[(l + r) / 2], y; while (i <= j) {
while (a[i] < x) i++; while (a[j] > x) j--; if (i <= j) {
y = a[i]; a[i] = a[j]; a[j] = y; i++; j--;
}
}
if (i < r) sort(a, i, r); if (l < j) sort(a, l, j); }
int main() { int i;
cin >> n >> B >> A;
for (i = 1; i <= n; i++) cin >>
M[i];
for (i = 1; i <= B; i++) cin >>
C[i];
sort(M, 1, n); sort(C, 1, B); l = 0;
r = n;
while (l <= r) {
mid = (l + r) / 2;
if ( (4) ) {
ans = mid;
l = mid + 1;
} else
r = (5) ;
}
cout << ans << endl; return 0; }
参考答案
一.选择题
DCDCD CBBCA DBDAD BAACC 二.问题求解 1. 72
2. 1(2分) 11(3分) 三.阅读程序写结果 1. 6,1,3 2. 13
3. 6,5,4,3,2,1, 4. =
四.完善程序
1.
(1)cin.get()
(2)num=c-‘0’ 或 num=c-48
(3)c>=’0’&&c<=’9’ 或 c>=48&&c<=57 (4) num=num*10+c-'0' 或 num=num*10+c-48 (5) num=-num 或 return-num 2.
(1) n-nn+1
(2) M[i]