C语言基础------练习1
1.输出3-100以内的完美数,(完美数:因子和(因子不包含自身)=数本身)
代码运行结果:
代码解析:
//循环遍历3到100之间的数
for (num = 4; num <= 100; num++)
{
//从4开始遍历到100,因为3不是完美数。
//初始化因子和
sum = 0;
//初始化因子和为0。
//寻找因子并求和
for (int i = 1; i <= num / 2; i++)
{
if (num % i == 0)
{
sum += i;
}
}
//使用内层循环从1遍历到 num / 2,寻找 num 的因子。
//如果 i 是 num 的因子(即 num % i == 0),则将其加到 sum 中。
//判断是否为完美数
if (sum == num)
{
printf("%d ", num);
}
//如果因子和 sum 等于 num,则 num 是完美数,输出该数。
//输出结果
printf("\n");
//输出换行符,使输出更整洁。
2.百钱买百鸡问题,一百元钱去买鸡,公鸡5元,母鸡3元,三只小鸡1元,问买一百只鸡,有多少种买法
代码运行结果:
代码解析:
//定义变量
int x, y, z; // x: 公鸡数量, y: 母鸡数量, z: 小鸡数量
//循环遍历公鸡数量
for (x = 0; x <= 20; x++)
{ // 公鸡最多买20只,因为5*20=100
//公鸡的价格是5元,所以最多可以买20只公鸡。
//循环遍历母鸡数量
for (y = 0; y <= 33; y++)
{ // 母鸡最多买33只,因为3*33=99
//母鸡的价格是3元,所以最多可以买33只母鸡。
//计算小鸡数量
z = 100 - x - y; // 小鸡的数量
//小鸡的数量由总鸡数减去公鸡和母鸡的数量决定。
//判断是否满足条件
if (z % 3 == 0 && 5 * x + 3 * y + z / 3 == 100)
{
printf("公鸡: %d 只, 母鸡: %d 只, 小鸡: %d 只\n", x, y, z);
}
//小鸡的数量必须是3的倍数,因为每3只小鸡1元。
//总价格必须等于100元,即 5 * x + 3 * y + z / 3 == 100。