C基础寒假练习(2)

一、输出3-100以内的完美数,(完美数:因子和(因子不包含自身)=数本身

复制代码
#include <stdio.h>

// 函数声明
int isPerfectNumber(int num);

int main() 
{
    printf("3-100以内的完美数有:\n");
    for (int i = 3; i <= 100; i++)
    {
        if (isPerfectNumber(i)) 
        {
            printf("%d\n", i);
        }
    }
    return 0;
}

// 判断是否为完美数的函数
int isPerfectNumber(int num) 
{
    int sum = 1; // 1是所有正整数的因子
    for (int i = 2; i * i <= num; i++) 
    {
        if (num % i == 0) 
       {
            if (i * i != num) 
            {
                sum += i + num / i;
            }
                else 
              {
                sum += i;
              }
       }
    }
    return sum == num && num != 1;
}

以下是对代码的详细解释:

  1. 函数声明:

    int isPerfectNumber(int num);

这行代码声明了一个名为isPerfectNumber的函数,该函数接受一个整数参数并返回一个整数。

  1. 主函数:

    int isPerfectNumber(int num)
    {
    int sum = 1; // 1是所有正整数的因子
    for (int i = 2; i * i <= num; i++)
    {
    if (num % i == 0)
    {
    if (i * i != num)
    {
    sum += i + num / i;
    }
    else
    {
    sum += i;
    }
    }
    }
    return sum == num && num != 1;
    }

这个函数用于判断一个数是否为完美数。具体步骤如下:

• 初始化sum为1,因为1是所有正整数的因子。

• 使用一个循环从2开始遍历到sqrt(num),检查每个数是否是num的因子。

• 如果i是num的因子,并且i*i不等于num,则将i和num/i都加到sum中。如果i*i等于num,则只加一次i。

• 最后,检查sum是否等于num且num不等于1。如果条件成立,则返回1(表示是完美数),否则返回0(表示不是完美数)。

二、百钱买百鸡问题,一百元钱去买鸡,公鸡5元,母鸡3元,三只小鸡1元,问买一百只鸡,有多少种买法。

复制代码
#include <stdio.h>

int main()  
{
    int rooster, hen, chick;
    int count = 0; // 用于记录符合条件的组合数

    for (rooster = 0; rooster <= 20; rooster++) 
   { // 公鸡最多只能买20只(5*20=100)
        for (hen = 0; hen <= 33; hen++) 
       { // 母鸡最多只能买33只(3*33=99)
            chick = 100 - rooster - hen; // 小鸡的数量由总数100减去公鸡和母鸡的数量得到
            if (chick % 3 == 0 && (5 * rooster + 3 * hen + chick / 3) == 100) 
           { // 检查是否符合条件
                printf("Rooster: %d, Hen: %d, Chick: %d\n", rooster, hen, chick);
                count++;
            }
        }
    }

    printf("Total combinations: %d\n", count);
    return 0;
}

代码解释:

  1. 变量声明:

• rooster:表示公鸡的数量。

• hen:表示母鸡的数量。

• chick:表示小鸡的数量。

• count:用于记录符合条件的组合数。

  1. 循环结构:

• 外层循环遍历公鸡的数量,从0到20(因为每只公鸡5元,所以最多只能买20只)。

• 内层循环遍历母鸡的数量,从0到33(因为每只母鸡3元,所以最多只能买33只)。

• 计算小鸡的数量为100 - rooster - hen。

  1. 条件判断:

• 检查小鸡的数量是否是3的倍数(因为三只小鸡1元)。

• 检查总价是否等于100元。

  1. 输出结果:

• 如果符合条件,打印当前组合并增加计数器。

• 最后输出符合条件的组合总数。

运行这段代码,你将得到所有符合条件的组合以及组合的总数。

相关推荐
地平线开发者14 分钟前
CLIP 的训练机制:从对比学习到图文对齐
深度学习·算法·自动驾驶
PaperAccept40 分钟前
【研知有术论文发表】材料科学一区期刊,影响因子30+的纳米科技SCI,审稿严格但有效率
大数据·数据结构·科技·量子计算
hetao17338371 小时前
2026-11-02 hetao1733837 的刷题记录
c++·算法
Geektec1 小时前
IMU 选型完全指南:从硬件参数到算法融合的系统工程视角
算法·imu·陀螺仪·加速度计·元器件选型
CQU_JIAKE1 小时前
11.2【A】
算法
Tairitsu_H1 小时前
[C++高阶数据结构·图论下] 最短路径:为什么“挑最小的”一定正确?
数据结构·c++·图论
Godspeed Zhao2 小时前
从零开始学AI21——决策树
算法·决策树·机器学习
开开心心就好2 小时前
网页图片批量下载工具,输入链接就保存
服务器·算法·leetcode·支持向量机·pdf·ocr·1024程序员节
Tairitsu_H2 小时前
[C++高阶数据结构·图论上] 最小生成树:为什么“选边”和“选点”是两条路?
数据结构·c++·图论·最小生成树
Navigator_Z3 小时前
LeetCode //C - 1313. Decompress Run-Length Encoded List
c语言·算法·leetcode