C4-1 最大公约数
(100/100 分数)
题目描述
求两个正整数a 和 b的最大公约数。
要求使用c++ class编写程序。
输入描述
两个正整数a,b,并且1=<a,b <=10000
输出描述
a和b的最大公约数
样例输入
1000 1000
样例输出
1000
#include <iostream>
using namespace std;
class Integer {
private:
int _num;
public:
//构造函数
Integer(int num) {
_num = num;
}
//计算当前Integer 和 b之间的最大公约数
int gcd(Integer b) {
int c = b._num, d;
_num>c ? d = c : d = _num;
while ((_num%d != 0) || (c%d != 0))
d--;
return d;
}
};
int main() {
int a, b;
cin >> a >> b;
Integer A(a);
Integer B(b);
cout << A.gcd(B) << endl;
return 0;
}
C4-2 反转整数
(100/100 分数)
题目描述
对于输入的一个正整数,输出其反转形式
要求使用c++ class编写程序。
输入描述
一个正整数a ,且1=<a<=1,000,000,000
输出描述
a的反转形式
样例输入
1011
样例输出
1101
#include<iostream>
using namespace std;
class Integer {
private:
int _num;
//getLength()函数获取_num长度
int getLength() {
int i=0;
int b = _num;
while (b != 0) {
b = b/ 10;
i++;
}
return i;
}
public:
//Integer类构造函数
Integer(int num) {
_num = num;
}
//反转_num
int inversed() {
int t = getLength();
int tmp = _num;
int a = 0;
for (int i = 0; i < t; i++) {
a = a * 10 + tmp % 10;
tmp /= 10;
}
return a;
}
};
int main() {
int n;
cin >> n;
Integer integer(n);
cout << integer.inversed() << endl;
return 0;
}
C4-3 一元二次方程求解
(100/100 分数)
题目描述
对于一元二次方程ax^2 + bx + c = 0,解可以分为很多情况。
若该方程有两个不相等实根,首先输出1,换行,然后从小到大输出两个实根,换行;
若该方程有两个相等实根,首先输出2,换行,然后输出这个这个实根,换行;
若该方程有一对共轭复根,输出3,换行;
若该方程有无解,输出4,换行;
若该方程有无穷个解,输出5,换行;
若该方程只有一个根,首先输出6,换行,然后输出这个跟,换行;
要求使用c++ class编写程序。
#include <iostream>
#include<math.h>
#include <stdio.h>
using namespace std;
class Equation {
private:
int _a, _b, _c;
public:
Equation(int a, int b, int c) {
_a = a;
_b = b;
_c = c;
}
void solve();
};
void Equation::solve() {
if (_a == 0) {
if (_b == 0)
{
if (_c == 0) cout << "5" << endl;
else cout << "4" << endl;
}
else {
cout << "6" << endl;
printf("%.2f\n", (float)-_c / _b);
}
}
else {
int theta;
theta = _b * _b - 4 * _a*_c;
double j = (-_b - sqrt(theta)) / 2.0 / _a;
double k = (-_b + sqrt(theta)) / 2.0 / _a;
if (theta >= 0) {
if (theta > 0) {
cout << "1" << endl;
if(j<k)
printf("%.2f %.2f\n", j, k);
else
printf("%.2f %.2f\n", k, j);
}
else {
cout << "2" << endl;
printf("%.2f\n", -_b / 2.0 / _a);
}
}
else cout << "3" << endl;
}
}
int main() {
int a, b, c;
cin >> a >> b >> c;
Equation tmp(a, b, c);
tmp.solve();
return 0;
}
本文通过三个具体的C++编程案例,介绍了如何使用面向对象的方法解决数学问题,包括求解最大公约数、反转整数及一元二次方程求解。每个案例都提供了完整的代码实现,旨在帮助读者理解C++类的使用和数学问题的编程解决策略。
2122

被折叠的 条评论
为什么被折叠?



