对C++代码进行练习,用函数来封装,使其更加简洁明了,练习题分别如下
函数类方法练习
1.求两个整数之间的较大值
int FindMax(int x,int y)2.求两个实数的和
double Add(double a,double b)3.判断一个整数是否为质数
int JudgePrime(int n)4.画出一条由30个减号组成的横线
void DrawLine()5.求两个整数的最大公约数
int Gcd (int a,int b)6.统计出 m 到 n 之间的水仙花数
int CountNarcissus(int m,int n)7.求出 m 到 n 之间所有的同时被5和7整除的奇数和
int SumOdd(int m ,int n)
/*
函数类方法练习
1.求两个整数之间的较大值
int FindMax(int x,int y)
2.求两个实数的和
double Add(double a,double b)
3.判断一个整数是否为质数
int JudgePrime(int n)
4.画出一条由30个减号组成的横线
void DrawLine()
5.求两个整数的最大公约数
int Gcd (int a,int b)
6.统计出 m 到 n 之间的水仙花数
int CountNarcissus(int m,int n)
7.求出 m 到 n 之间所有的同时被5和7整除的奇数和
int SumOdd(int m ,int n)
*/
#include <iostream>
#include <cmath> // 用于 sqrt 函数
using namespace std;
class huashu{
public:
void max(){//第1题
int a, b;
printf("请输入两个要比较的整数: ");
scanf("%d %d", &a, &b);
if (a > b) {
printf("较大值为: %d\n", a);
} else {
printf("值相等为: %d\n", b);
}
}
void sum(){//第2题
double a, b;
printf("请输入待求和的两个实数: ");
scanf("%lf %lf", &a, &b);
printf("两个数的和为: %.2f\n", a + b);
}
void zhishu(int x){//第3题
printf("判断是否为质数的值:\n");
if (x <= 1) {
printf("输入的值 %d 不是质数。\n", x);
}
if ((x%x) != 0){
printf("输入的值%f不是质数",x);
}
// 检查是否能被 2 到 sqrt(x) 之间的数整除
bool isPrime = true;
for (int i = 2; i <= sqrt(x); ++i) {
if (x % i == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
printf("输入的值 %d 是质数。\n", x);
} else {
printf("输入的值 %d 不是质数。\n", x);
}
}
void DrawLine(){//第4题
printf("画出一条由30个减号组成的横线:\n");
for(int i = 0; i < 30; ++i){
printf("-");
}
}
void Gcd(int a,int b){//第5题
printf("求两个整数的最大公约数: %d\t%d",a,b);
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
printf("\n最大公约数为:%d\t",a);
}
void Gcd1() { // 第5题 求两个整数的最大公约数
int a, b;
printf("求两个整数的最大公约数:\n");
scanf("%d %d", &a, &b); // 读取输入
// 欧几里得算法
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
printf("最大公约数为:%d\t", a);
}
void CountNarcissus() {
int m, n;
printf("\n请输入待统计水仙花数范围[m, n]: ");
scanf("%d %d", &m, &n);
int count = 0;
for (int num = m; num <= n; ++num) {
if (num == 0) continue; // 排除0
int temp = num;
int digits = 0; // 计算位数
while (temp > 0) {
digits++;
temp /= 10;
}
temp = num;
int sum = 0;
while (temp > 0) {
int digit = temp % 10;
int power = (int)pow(digit, digits); // 计算digit的digits次方
sum += power;
temp /= 10;
}
if (sum == num) {
printf("发现水仙花数: %d\n", num);
count++;
}
}
printf("总计找到 %d 个水仙花数\n", count);
}
void CountNarcissus1() {
int m, n;
printf("\n请输入待统计水仙花数范围[m, n]: ");
scanf("%d %d", &m, &n);
for (int num = m; num <= n; ++num) {
if (num == 0 || num == 1) continue; // 0和1特殊处理
int digits = (int)log10(num) + 1;
int sum = 0, temp = num;
while (temp > 0) {
int digit = temp % 10;
sum += (int)pow(digit, digits);
temp /= 10;
}
if (sum == num) {
printf("水仙花数: %d\n", num);
// 计数逻辑根据需求保留
}
}
}
void SumOdd() {//第7题 求被5和7整除的奇数和,并将各奇数打印到集合
int m, n;
printf("\n请输入求被5和7整除的奇数和范围[m, n]: ");
scanf("%d %d", &m, &n);
int sum = 0;
for (int num = m; num <= n; ++num) {
printf("%d ", num); // 实时输出符合条件的数
if (num % 35 == 0 && num % 2) sum += num;
}
printf("奇数和: %d\n", sum);
}
};
int main(){
huashu obj;
// obj.max();
// obj.sum();
// obj.zhishu(23);
// obj.DrawLine();
// obj.Gcd(55,895);
// obj.Gcd1();
// obj.CountNarcissus();
// obj.CountNarcissus1();
obj.SumOdd();
return 0;
}
整理不易,诚望各位看官点赞 收藏 评论 予以支持,这将成为我持续更新的动力源泉。若您在阅览时存有异议或建议,敬请留言指正批评,让我们携手共同学习,共同进取,吾辈自当相互勉励!