南京理工大学C++程序设计基础期末考试上机测试题组2答案详细解析
南京理工大学C++程序设计基础期末考试上机测试题组2答案详细解析
·
三角数(100分)
计算大于等于n的下一个三角数。所谓“三角数”就是某个数量的点能排列成一个对称三角形,如1、3、6、10、15、21、28、36、45...。
输入一个整数n, n>=1。
输出一个整数m,大于等于n的下一个三角数。注意保证输出结果在整型范围内。
#include <bits/stdc++.h> // 包含所有标准库(实际使用中建议只包含需要的标准库)
using namespace std; // 使用标准命名空间,简化代码书写
int main() {
long long n, i; // 定义长整型变量 n(目标值)和 i(循环计数器)
cin >> n; // 从标准输入读取一个长整型值 n
// 使用循环寻找满足条件的最大 i
for (i = 0; (1 + i) * i / 2 < n; i++) {
// 循环条件:检查三角形数 (1 + i) * i / 2 是否小于 n
// 三角形数是前 i 个自然数的和,公式为 i * (i + 1) / 2
}
// 输出满足条件的最大三角形数 (1 + i) * i / 2
cout << (1 + i) * i / 2;
return 0; // 程序正常结束
}
-
输入:
- 从标准输入读取一个长整型值
n
。
- 从标准输入读取一个长整型值
-
计算:
- 使用
for
循环来查找最大的i
,使得(1 + i) * i / 2
(即第i
个三角形数)小于n
。 i
从 0 开始递增,直到(1 + i) * i / 2
大于或等于n
。
- 使用
-
输出:
- 输出满足条件的最大三角形数,即
(1 + i) * i / 2
。
- 输出满足条件的最大三角形数,即
空心菱形(100分)
打印边长为n的空心菱形。
输入一行一个整数n(1<=n<=50)。
打印边长为N的空心菱形(空心菱形的打印形式见样例),每行均以'*'结尾,每行的’*’之前如果需要用空格补齐对齐,’*’之后不要有多余的空格。
#include <bits/stdc++.h> // 包含所有标准库(实际使用中建议只包含需要的标准库)
using namespace std; // 使用标准命名空间,简化代码书写
int main() {
int n, i, j, k; // 定义整型变量 n(输入的大小),i, j 和 k(循环计数器)
cin >> n; // 从标准输入读取一个整数 n
// 打印上边界的 +
cout << setw(n) << "+" << endl;
// 打印中间的部分,逐行增加 +
for (i = 1; i < n - 1; i++) {
// 打印每行的第一个 +
cout << setw(n - i) << "+";
// 打印每行的第二个 +
cout << setw(2 * i) << "+" << endl;
}
// 打印下边界的 +,宽度为 2*n-2
cout << "+" << setw(2 * n - 2) << "+" << endl;
// 打印底部的中间部分,逐行减少 +
for (i = 1; i < n - 1; i++) {
// 打印每行的第一个 +
cout << setw(i + 1) << "+";
// 打印每行的第二个 +,根据宽度设置
cout << setw(-2 * i + 2 * n - 2) << "+" << endl;
}
// 打印下边界的 +
cout << setw(n) << "+" << endl;
return 0; // 程序正常结束
}
-
输入:
- 从标准输入读取一个整数
n
,表示图形的大小。
- 从标准输入读取一个整数
-
输出图形:
- 上边界: 打印一个由一个
+
组成的行,其宽度为n
。 - 中间部分的上半部分: 逐行打印,每行由两个
+
组成,左侧+
的位置逐行右移,右侧+
的位置逐行增加。 - 下边界: 打印一个由两个
+
组成的行,中间的空格宽度为2 * n - 2
。 - 中间部分的下半部分: 逐行打印,每行由两个
+
组成,左侧+
的位置逐行右移,右侧+
的位置逐行减少。 - 下边界: 打印一个由一个
+
组成的行,其宽度为n
- 上边界: 打印一个由一个
1求a+aa+aaa+…+aa…a的值(100分)
求a+aa+aaa+…+aa…a的值,其中a是一个数字,最后一个a有n位。
依次输入正整数a和n,其中1<=a<=9,1<=n<=18
输出格式:
输出a+aa+aaa+…+aa…a的值
#include <bits/stdc++.h> // 包含所有标准库(实际使用中建议只包含需要的标准库)
using namespace std; // 使用标准命名空间,简化代码书写
int main() {
long long int a, i, j, n, s = 0; // 定义长整型变量 a(初始值)、i(循环计数器)、j(保存初始值的副本)、n(循环次数)、s(累加和)
cin >> a >> n; // 从标准输入读取两个长整型值,a(起始数字)和 n(重复次数)
j = a; // 将 a 的值赋给 j,j 用于保存 a 的初始值
// 循环 n 次,每次将当前的 a 累加到 s 中
for (i = 1; i <= n; i++) {
s = s + a; // 将当前的 a 加到总和 s 中
a = j + a * 10; // 更新 a 为当前 a 乘以 10 后加上 j,形成下一个要累加的数
}
cout << s; // 输出累加和 s
return 0; // 程序正常结束
}
-
输入:
- 从标准输入读取两个长整型值
a
和n
。a
是起始数字。n
是累加次数。
- 从标准输入读取两个长整型值
-
处理逻辑:
- 通过
j = a
保存a
的初始值,用于在循环中计算新的a
值。 - 在循环中,每次将当前的
a
加到累加和s
中。 - 更新
a
为当前a
乘以 10 后加上初始值j
,以生成下一个要累加的数字。
- 通过
-
输出:
- 输出累加和
s
,即将所有生成的数字之和
- 输出累加和
更多推荐
所有评论(0)