C++代码练习--综合函数篇

对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;
}

整理不易,诚望各位看官点赞 收藏 评论 予以支持,这将成为我持续更新的动力源泉。若您在阅览时存有异议或建议,敬请留言指正批评,让我们携手共同学习,共同进取,吾辈自当相互勉励!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值