赞
踩
输入一个三位数,然后把该数的百位和个位对调,输出对调后的数字。
对于一个三位数,我们可以通过数学运算分离出百位、十位和个位:
对调百位和个位后,重新组合这三个数字得到新的三位数。
#include <iostream>
using namespace std;
int main() {
int num;
cin >> num; // 从输入读取一个三位数
// 提取百位、十位和个位
int hundreds = num / 100;
int tens = (num / 10) % 10;
int units = num % 10;
// 对调百位和个位
int swappedNum = units * 100 + tens * 10 + hundreds;
// 输出对调后的结果
cout << swappedNum << endl;
return 0;
}
int hundreds = num / 100;
计算百位数字。int tens = (num / 10) % 10;
计算十位数字。int units = num % 10;
计算个位数字。units
成为新的百位,hundreds
成为新的个位,tens
保持不变作为十位。units * 100 + tens * 10 + hundreds
来组合新的三位数。这段程序通过简单的数学运算实现了三位数的百位和个位的对调,并能够准确地输出对调后的数值。
已知某班有男同学 x 位,女同学 y 位,男生平均分是87分,女生平均分是85分。根据给定的男女同学人数,计算全体同学的平均分并保留四位小数。
为了计算全班的平均分:
#include <iostream>
#include <iomanip> // 包含用于格式化输出的库
using namespace std;
int main() {
int x, y; // x代表男生人数,y代表女生人数
cin >> x >> y; // 输入男女同学人数
// 男女生平均分已知
int avgMale = 87, avgFemale = 85;
// 计算男女生总分
int totalMaleScore = x * avgMale;
int totalFemaleScore = y * avgFemale;
// 计算全班总分
int totalScore = totalMaleScore + totalFemaleScore;
// 计算全班平均分
double averageScore = static_cast<double>(totalScore) / (x + y);
// 输出平均分,保留4位小数
cout << fixed << setprecision(4) << averageScore << endl;
return 0;
}
cin
读取男生和女生的人数。cout << fixed << setprecision(4)
控制输出格式,确保平均分保留四位小数。这段代码通过基本的数学运算和适当的类型转换(使用 static_cast<double>
保证在除法时不丢失精度),有效地计算出了全班同学的平均分,并且以四位小数的精度输出了结果。
在一次歌手大奖赛中,6名评委给一位参赛者打分。全体评委的平均分为9.6分。如果去掉一个最高分,则平均分变为9.4分;如果去掉一个最低分,则平均分变为9.8分。求如果同时去掉一个最高分和一个最低分后,这名参赛者的平均分是多少?
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
// 计算初始总分
double totalScore = 6 * 9.6;
// 计算去掉一个最高分和最低分的总分
double totalWithoutHighest = 5 * 9.4;
double totalWithoutLowest = 5 * 9.8;
// 推算最高分和最低分
double highestScore = totalScore - totalWithoutHighest;
double lowestScore = totalScore - totalWithoutLowest;
// 计算去除最高和最低分后的总分
double totalFinal = totalScore - highestScore - lowestScore;
// 计算新的平均分
double finalAverage = totalFinal / 4;
// 输出结果,保留两位小数
cout << fixed << setprecision(2);
cout << finalAverage << endl;
return 0;
}
setprecision(2)
控制输出精度为两位小数,符合题目要求。这种解题方法通过算术计算和对题目信息的解析来有效地求解,确保输出准确。
使用海伦公式计算给定三边长的三角形的面积。海伦公式利用三角形的三条边长求取面积,公式为:
[ s = \sqrt{p(p-a)(p-b)(p-c)} ]
其中 ( p ) 是半周长,计算公式为:
[ p = \frac{a+b+c}{2} ]
#include <iostream>
#include <iomanip> // 包含用于格式化输出的库
#include <cmath> // 包含用于计算平方根的库
using namespace std;
int main() {
double a, b, c;
cin >> a >> b >> c; // 从输入读取三角形的三边长
// 计算半周长
double p = (a + b + c) / 2.0;
// 使用海伦公式计算面积
double area = sqrt(p * (p - a) * (p - b) * (p - c));
// 输出面积,保留3位小数
cout << fixed << setprecision(3) << area << endl;
return 0;
}
cin
读取三角形的三条边长。sqrt
函数和海伦公式计算三角形的面积。cout << fixed << setprecision(3)
控制输出格式,确保面积输出为三位小数。这段代码通过对三边长的简单数学运算计算出三角形的面积,并准确地按照要求格式输出。
给定两个双精度浮点数 (a) 和 (b),要求计算它们相除的余数。这里的余数 (r) 的定义是:(a = k \times b + r),其中 (k) 是使得 (r) 最小的整数,且 (0 \leq r < b)。
要计算浮点数相除的余数,我们可以使用以下方法:
这种计算余数的方法遵循定义:(a = k \times b + r),且确保 (0 \leq r < b)。
#include <iostream>
#include <cmath> // 包括用于计算floor和fmod的库
#include <iomanip> // 包括用于格式化输出的库
using namespace std;
int main() {
double a, b;
cin >> a >> b; // 从输入读取两个双精度浮点数
// 计算整数部分k
int k = static_cast<int>(floor(a / b));
// 计算余数r
double r = fmod(a, b);
// 输出余数,保留4位小数
cout << fixed << setprecision(4) << r << endl;
return 0;
}
cin
读取两个浮点数 (a) 和 (b)。floor
函数计算 (a / b) 的整数部分 (k)。这里使用 floor
确保 (k) 是向下取整,符合 (k \times b \leq a) 的条件。fmod
函数计算 (a) 除以 (b) 的余数 (r)。fmod
直接计算浮点数除法的余数,确保结果的精确性。cout << fixed << setprecision(4)
控制输出格式,确保余数输出为四位小数。这段代码能够准确地计算出两个浮点数相除的余数,并以指定的精度格式输出。
给定一个球的半径 ( r ),用公式 ( V = \frac{4}{3} \pi r^3 ) 计算球的体积。这里使用 ( \pi = 3.14 )。输出球的体积,并保留两位小数。
要计算球的体积,我们首先需要球的半径 ( r )。使用给定的公式:
[ V = \frac{4}{3} \pi r^3 ]
其中 ( \pi ) 取值为 3.14,这是数学中常用的圆周率近似值。通过计算这个公式,我们可以得到球的体积。然后,输出结果时保留两位小数。
#include <iostream>
#include <iomanip> // 包括用于格式化输出的库
using namespace std;
int main() {
double r; // 球的半径
cin >> r; // 从输入读取球的半径
const double pi = 3.14; // 圆周率的近似值
double volume = (4.0 / 3.0) * pi * r * r * r; // 计算球的体积
// 输出球的体积,保留两位小数
cout << fixed << setprecision(2) << volume << endl;
return 0;
}
cin
读取球的半径 ( r )。pi
作为圆周率的近似值。cout << fixed << setprecision(2)
控制输出格式,确保体积输出保留两位小数。这段代码能够准确地计算和输出一个球的体积,结果精确到小数点后两位。该程序简洁有效,符合数学计算的要求,并确保了输出的准确性和可读性。
输入一个三位数 ( n ),要求将这个数反向输出。例如,输入 358,应输出 853。
要将一个三位数反向输出,可以通过数学方法或字符串操作实现。这里采用数学方法,分解出每一位数字,然后重新组合成反向的数字:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int n;
cin >> n; // 读取一个三位数
// 提取个位、十位和百位
int units = n % 10;
int tens = (n / 10) % 10;
int hundreds = n / 100;
// 重新组合数字,反向输出
int reversedNumber = units * 100 + tens * 10 + hundreds;
// 输出反向的数字,保持三位输出
cout << setfill('0') << setw(3) << reversedNumber << endl;
return 0;
}
cin
读取输入的三位数。cout
输出结果,使用 setw(3)
和 setfill('0')
确保输出为三位数,即使前面有0也会显示,符合题目要求。这段程序不仅能够准确地反向输出一个三位数,而且还能保证输出格式正确,即使是像100这样的数字也能正确输出为001。
一只大象要喝 20 升水才能解渴,但是只有一个特定尺寸的圆桶可用来盛水。已知桶的高度为 ( h ) 厘米,底面半径为 ( r ) 厘米,求大象至少需要多少桶水才能解渴。
首先,需要根据圆桶的尺寸计算出桶的体积。体积公式为:
[ V = \pi r^2 h ]
其中 ( V ) 是体积,( r ) 是半径,( h ) 是高度,且 (\pi \approx 3.14159)。
#include <iostream>
#include <cmath> // 包含用于数学计算的库
using namespace std;
int main() {
int h, r;
cin >> h >> r; // 读取桶的深度和半径
const double pi = 3.14159; // 圆周率的近似值
double volumePerBucket = pi * r * r * h; // 单个桶的体积(立方厘米)
double litersPerBucket = volumePerBucket / 1000.0; // 单个桶的体积转换为升
int bucketsNeeded = ceil(20.0 / litersPerBucket); // 计算所需的桶数
cout << bucketsNeeded << endl; // 输出所需的桶数
return 0;
}
cin
读取输入的高度 ( h ) 和半径 ( r )。ceil
函数确保结果向上取整,因为即使只超出一点,也需要额外一桶水。这个程序能够准确地根据给定的桶尺寸计算出大象解渴所需的最小桶数,并且以整数形式输出。
给定两个点 A(Xa, Ya) 和 B(Xb, Yb),计算线段 AB 的长度并保留到小数点后三位。
线段的长度可以通过两点间的欧几里得距离公式计算:
[ \text{Distance} = \sqrt{(Xb - Xa)^2 + (Yb - Ya)^2} ]
其中 (Xa, Ya) 是点 A 的坐标,(Xb, Yb) 是点 B 的坐标。
#include <iostream>
#include <cmath> // 包括用于计算平方根的库
#include <iomanip> // 包括用于格式化输出的库
using namespace std;
int main() {
double Xa, Ya, Xb, Yb;
cin >> Xa >> Ya; // 读取点A的坐标
cin >> Xb >> Yb; // 读取点B的坐标
// 计算两点间的欧几里得距离
double distance = sqrt((Xb - Xa) * (Xb - Xa) + (Yb - Ya) * (Yb - Ya));
// 输出距离,保留3位小数
cout << fixed << setprecision(3) << distance << endl;
return 0;
}
cin
读取两个点的坐标。sqrt
函数计算两点间的距离。cout << fixed << setprecision(3)
控制输出格式,确保距离输出保留三位小数。这个程序能够准确地计算出两点间的距离,并以精确到小数点后三位的格式输出,满足题目要求。
给定平面上一个三角形的三个顶点坐标 ((x1, y1), (x2, y2), (x3, y3)),计算这个三角形的面积并保留到小数点后两位。
三角形的面积可以使用向量叉乘公式计算,当给定三个顶点坐标时,面积 (A) 可以通过以下公式计算:
[ A = \frac{1}{2} \left| x1(y2 - y3) + x2(y3 - y1) + x3(y1 - y2) \right| ]
这个公式是基于线性代数中的行列式来计算平行四边形的面积的一半,其中 ( (x1, y1), (x2, y2), (x3, y3) ) 是三角形的顶点坐标。
#include <iostream>
#include <cmath> // 包括用于计算绝对值的库
#include <iomanip> // 包括用于格式化输出的库
using namespace std;
int main() {
double x1, y1, x2, y2, x3, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3; // 读取三个顶点的坐标
// 使用叉乘公式计算三角形的面积
double area = abs(x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2.0;
// 输出面积,保留两位小数
cout << fixed << setprecision(2) << area << endl;
return 0;
}
cin
读取三个顶点的坐标。abs
函数确保面积为正值。cout << fixed << setprecision(2)
控制输出格式,确保面积输出保留两位小数。这段代码能够准确地计算出三角形的面积,即使顶点坐标以不同的顺序输入也能正确处理,因为公式的结果始终是正的。输出结果精确到小数点后两位。
给定等差数列的前两项 (a_1) 和 (a_2),要求计算第 (n) 项的值。
等差数列的第 (n) 项 (a_n) 可以通过以下公式计算:
[ a_n = a_1 + (n-1) \cdot d ]
其中 (d) 是公差,可由前两项得出:
[ d = a_2 - a_1 ]
通过这个公式,我们可以直接求出第 (n) 项的值。
#include <iostream>
using namespace std;
int main() {
int a1, a2, n;
cin >> a1 >> a2 >> n; // 读取输入的等差数列的前两项和项数
// 计算公差
int d = a2 - a1;
// 计算第n项
int an = a1 + (n - 1) * d;
// 输出第n项
cout << an << endl;
return 0;
}
cin
读取等差数列的前两项 (a_1) 和 (a_2) 以及项数 (n)。这段代码能够准确地计算出等差数列的任何一项,无论数列的进展如何,确保了算法的简单性和效率。
给定两个正整数 ( A ) 和 ( B ),计算它们的乘积 ( A \times B )。
由于输入的两个数 ( A ) 和 ( B ) 的范围分别在 1 到 50000 之间,直接计算乘积是安全的,因为最大的乘积是 ( 50000 \times 50000 = 2500000000 ),这在 C++ 的 int
数据类型范围内(可达到约 21 亿)。因此,直接读取两个数,计算它们的乘积,并输出结果即可。
#include <iostream>
using namespace std;
int main() {
int A, B;
cin >> A >> B; // 从输入读取两个正整数 A 和 B
// 计算 A 和 B 的乘积
int product = A * B;
// 输出乘积结果
cout << product << endl;
return 0;
}
cin
读取两个正整数 ( A ) 和 ( B )。cout
输出计算得到的乘积。这段代码简洁且高效地实现了题目要求,可以准确地计算并输出两个正整数的乘积。考虑到乘积的数据范围,使用 int
类型足够处理可能的最大输入。
输入一个非负整数 ( n ),求 ( 2^n ) 的值。
这个问题可以通过简单的位移操作解决。在计算机科学中,左移一位相当于乘以2。因此,将数字1左移 ( n ) 位即可得到 ( 2^n )。这种方法比直接使用幂运算更快且直接。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n; // 从输入读取指数 n
// 使用位移操作计算 2^n
int result = 1 << n; // 将1左移n位
// 输出结果
cout << result << endl;
return 0;
}
cin
读取输入的指数 ( n )。1 << n
计算 ( 2^n )。位移操作在这里非常适用,因为它直接在二进制层面上将1向左移动 ( n ) 位,从而快速得到结果。cout
输出结果。这段代码高效地计算了 ( 2^n ) 并输出,充分利用了位运算的优势,特别是在计算幂的问题上,位运算比传统的乘法或幂函数更为高效。
给定一箱苹果的总数 ( n ),一条虫子每 ( x ) 小时会吃掉一个苹果,计算在 ( y ) 小时后剩下多少个完整的苹果。
根据提供的代码,逻辑如下:
ceil(y / x)
计算在 ( y ) 小时内虫子可以吃掉的苹果数,确保即使 ( y/x ) 不是整数时也能正确地向上取整,表示虫子在该时间内至少可以吃掉这么多苹果。代码已经整合上述逻辑,具体如下:
#include <iostream>
#include <cmath> // 使用cmath而非math.h,因为cmath是C++中更现代的库
using namespace std;
int main() {
int n; // 苹果总数
double x, y; // x 是虫子每吃掉一个苹果的时间间隔,y 是总时间
cin >> n >> x >> y; // 从输入读取数据
int sum; // 计算剩余的苹果数
sum = n - ceil(y / x); // 向上取整计算虫子吃掉的苹果数并从总数中减去
if (sum < 0) sum = 0; // 如果计算出的苹果数为负,则设为 0
cout << sum; // 输出剩余的苹果数
return 0;
}
这段代码确保了在任何情况下都不会出现剩余苹果数为负的情况,并且考虑到了吃苹果时间可能不整除总时间的情况。使用 ceil
函数确保每次都至少计算出虫子会吃掉的苹果数,从而不会低估虫子的食量。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。