第10章基础知识练习(自测)
章前总览 覆盖:for 语法、循环次数、循环体内改循环变量、递推累加。先作答再提交;含代码题已完整展示。
怎么用:
- 选择题 21 道 + 判断题 11 道。
- 算次数时逐步模拟初值、条件、更新。
- 错题回到 B52–B55 复习。
每题选一个选项。判断题选「正确」或「错误」。
循环体只有一条语句时可以不加花括号;多条才必须用 {}。
for (int i = 1; i <= 16; _______)
cout << 1;i+=3 时取值 1,4,7,10,13,16 共 6 次;其余次数不对。
for (int i = 1; i <= 8; _______)
cout << i;i*=2 输出 1,2,4,8。
int cnt = 0;
for (int i = 1; i <= 5; i++)
cnt = cnt + 1;
cout << cnt;循环 5 次,每次 +1,cnt=5。
int tnt = 0;
for (int i = 1; i < 5; i += 2)
tnt = tnt + i;
cout << tnt;i 取 1、3,和为 4。
int n = 1234, s = 0;
for (; n; n /= 10)
s += __________;
cout << s << endl;n%10 取个位,再平方累加。
int n = 5, s = 1;
for (; n = 0; n--)
s *= n;
cout << s << endl;条件写成赋值 n=0,值为 0(假),循环体一次也不执行,s 仍为 1。
cin >> N;
cnt = 0;
for (int i = 1; i < N; i++)
cnt += 1;
cout << cnt;i 从 1 到 N-1,共 N-1 次。N=2 时输出 1 不是 0,故 A 错。
cnt = 0;
for (int i = 1; i < 10; i++) {
cnt += 1;
i += 2;
}
cout << cnt;循环体内再 i+=2,实际大约隔 3 递增,共执行 3 次。
int arr[] = (2,6,3,5,4,8,1,0,9,10};
for (int i = 0; i < 10; i++)
cout << arr[i] << " ";
cout << i << endl;数组初始化括号写法错误,且循环外使用 i 也可能越界作用域,整体无法通过编译。
cnt = 0;
for (i = 10; i > 3; i -= 3)
cnt = cnt + i;
cout << cnt;i 取 10、7、4,和为 21。
for (int i = -10; i < 10; i++)
cout << i << " ";i 从 -10 到 9,共 20 次。
int Sum = 0, i = 0;
for (; i < 10; )
Sum += i++;
cout << i << " " << Sum;累加 0~9 得 45,结束后 i=10。
int cnt = 0;
for (int i = 0; i * i < 64; i += 2)
cnt++;
cout << cnt;i=0,2,4,6(8*8=64 不满足),共 4 次。
int Sum = 0;
for (int i = 0; i < 10; i++)
Sum += i;
cout << Sum;0+1+…+9=45。
int N = 0;
for (int i = 0; i < 10; i++)
N += 1;
cout << N;循环 10 次,每次 +1,N=10。
int count = 0, i, s;
for (i = 0, s = 0; i < 20; i++, count++)
s += i++;
cout << s << " " << count;循环体内外都让 i 自增,实际累加偶数 0+2+…+18=90,count=10。
int N = 0, i;
for (i = 1; i < 10; i++)
N += 1;
cout << (N + i);N 加了 9 次为 9,结束后 i=10,9+10=19。
int tnt = 0;
for (int i = 0; i < 100; i++)
tnt += i % 10;
cout << tnt;每 10 个数个位和为 0+…+9=45,共 10 组 → 450。
cnt = 0;
for (int i = 1; i < 10; i++)
cnt += i++;
cout << cnt;累加奇数 1+3+5+7+9=25(循环体内后置自增)。
int tnt = 0;
for (int i = -1000; i < 1000; i++)
tnt += i;
cout << tnt << endl;−999~999 两两抵消为 0,再加 −1000,结果为 −1000。
for (int i = 1; i <= 100; i *= 2)
cout << 1;i 按 2 倍增长,大约只循环 7 次,不是 50 次。
三个表达式都可空缺,但分号必须保留。
若一开始条件为假,循环体一次也不执行。
i 取 0,2,4,6,8,描述正确。
条件是 i<10,不会以 10 作为满足条件的循环取值;且末尾分号使循环体为空。
for (int i = 0; i < 10; i++)
Sum += i;
cout << Sum;Sum 未定义/未初始化,不能保证输出 45。
for (int i = 1; i < 10; i += 3)
cout << i << endl;输出 1、4、7,最后一次是 7。
for (int i = 0; i < 10; i += 3)
cout << i; // L2i 取 0,3,6,9,输出执行 4 次。
for (int _ = 0; _ < 100; _++)
cout << "*" << endl;下划线可以作为标识符,这段代码合法。
for (int i = 3; i < 5; i += 2)
printf("%d ", i);只输出 3;之后 i 变为 5,条件 i<5 不成立。
for (int i = 0; i < 10; i++)
cout << (i * 2 < i * i) << " ";布尔值经 cout 输出为 0/1,不会打印单词 true。