题目1
#include <iostream>
using namespace std;
void f(int &i) {
i = i - 2;
}
int main() {
int i = 6, k = 14;
do {
switch (i) {
case 6:
case 1:
cout << i + k << endl;
break;
case 2:
cout << i << endl;
case 5:
cout << i + 1 << endl;
break;
default:
cout << k + 3 * i << endl;
}
f(k);
--i;
} while (k > 0);
return 0;
}
题目2
#include <iostream>
using namespace std;
void modify(int &x, int y) {
x = x / 2;
y = y + 3;
}
int main() {
int a = 8, b = 20;
while (b >= 8) {
switch (a) {
case 4:
cout << a * 2;
break;
case 2:
cout << a - 1;
case 3:
cout << b / 2;
break;
default:
cout << a + b % 3;
}
modify(a, b);
b -= 4;
cout << "-";
}
cout << "END" << endl;
return 0;
}
题目3
#include <iostream>
#include <cctype>
using namespace std;
class MachtNix {
private:
char c;
public:
MachtNix(char c) {
this->c = c;
cout << "+" << c << endl;
}
~MachtNix() {
cout << "-" << c << endl;
}
};
MachtNix x('G');
int main() {
MachtNix x('M');
for (int k = 0; k < 2; k++) {
MachtNix x('F' + k);
if (k > 0) {
MachtNix x('i');
}
}
MachtNix y('Y');
return 0;
}
题目4
#include <bits/stdc++.h>
using namespace std ;
int add(int i) {
short result = 32767 + i;
/*
short 2字节 16位 -32768 ~ 32767
int 4字节 32位 -21473648~21473647
*/
return result;
}
bool greater5(int a) {
unsigned int b = 5;
if (a > b) {
return true;
} else {
return false;
}
}
unsigned int dec(unsigned int i) {
i--;
return i;
}
int main() {
//3个函数改错
return 0;
}
题目5
#include <iostream>
using namespace std;
// 函数 f:按值传递参数 k
// 对 k 的修改不会影响外部变量
void f(int k) {
for (int i = 0; i < 5; i++) {
k = k - 1; // 修改的是形参 k 的副本
}
// 函数结束后,k 被销毁,外部无影响
}
// 函数 g:递归函数,参数为指针 i 和整数 a
// 通过指针修改外部变量,并递归累加
int g(int* i, int a) {
(*i) -= 1; // 通过指针将 *i 减 1(副作用)
if (a == 0) {
return *i; // 终止条件:返回当前 *i
} else {
return *i + g(i, a - 1); // 递归调用,累加每次修改后的 *i
}
}
// 函数 h:按引用传递 k
// 直接修改外部变量 k
void h(int& k) {
for (int i = 0; i < 4; i++) {
k = k * 2; // 每次乘以 2,共 4 次 → k *= 16
}
}
// 主函数
int main() {
int k = 5;
// Step 1: 调用 f(k) —— 值传递,无副作用
f(k);
cout << k << endl; // 输出:5
// Step 2: 调用 g(&k, 3) —— 指针传递,递归修改 k
cout << g(&k, 3) << endl;
// Step 3: 调用 h(k) —— 引用传递,k 被放大 16 倍
h(k);
cout << k << endl;
return 0;
}
题目6 代码改错!!!
#include <iostream
using std::cout;
int main() {
int k[] = {1, 6, 4, 3, 5, 2};
int result = 0
for (int i = 0; i < 7; i++) {
resutl += k[i];
}
cout << "result = " << result << endl;
return 0;
}
题目7
#include <iostream>
using namespace std;
void adjust(int &val) {
val = val - 5;
}
int main() {
int x = 5, y = 15;
do {
y -= 3;
switch (x) {
case 5:
cout << x + y;
adjust(x);
// 注意:没有 break!
case 0:
cout << x;
break;
case 1:
cout << y - x;
break;
default:
cout << y / x;
}
x++;
cout << ",";
} while (y > 0);
cout << "STOP" << endl;
return 0;
}
题目8
#include <iostream>
using namespace std;
void f(int i) {
i = i - 2; // 修改的是形参 i(局部变量),不影响外部
}
int main() {
int i = 7, k = 12;
do {
k -= 2;
switch (i) {
case 6:
case 1:
cout << i + k;
break;
case 2:
cout << i;
// 注意:这里没有 break!
case 5:
cout << i + 1;
break;
default:
cout << k + 3 * i;
}
f(k); // 调用函数 f,但无影响
--i; // i 减 1
cout << ",";
} while (k > 0);
cout << endl;
return 0;
}
题目9
题目1
题目10
—— 本文来自火龙信奥(义乌睿码科技):义乌青少年信息学奥赛与编程教育平台,专注 CSP-J/S、NOIP、GESP 竞赛培训,线上线下融合教学,助力编程升学。网址:hlcoding.com