本文已参与「新人创作礼」活动,一起开启掘金创作之路。
4.3
- 公鸡每只5元,一百块最多买20只,所以循环限制到20,母鸡和小鸡也是如此,价格最多都是100元
- 不只是价格要刚好100,三种鸡的数量加在一起也要100才满足条件
- 这里的 k 为买小鸡花的价格,所以在计算数量的时候要乘以三
#include <stdio.h>
int main()
{
int i = 0,j = 0,k = 0;
for (i = 0; i <= 20; ++i)
{
for (j = 0; j <= 33; ++j)
{
for (k = 0; k <= 100; ++k)
{
if (i + j + k * 3 == 100 && i * 5 + j * 3 + k == 100)
{
printf("cock:%d hen:%d chick:%d\n",i,j,k * 3);
}
}
}
}
return 0;
}
4.8
- 百位数不可能为0,所以从1开始循环,其他的从1开始循环
- 三位数,每一位都要枚举,所以是三重循环
- 满足条件输出即可
pow(x,y)用于计算 x 的 y 次方
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0,j = 0,k = 0;
for (i = 1;i <= 9; ++i)
{
for (j = 0; j <= 9; ++j)
{
for (k = 0; k <= 9; ++k)
{
if (pow(i,3) + pow(j,3) + pow(k,3) == i * 100 + j * 10 + k)
{
printf("%d\n",i * 100 + j * 10 + k);
}
}
}
}
return 0;
}
4.11 没有要求长度为 n 行的时候,直接输出即可 若是要求任意的 n 行,每一行总共输出的空格数为 n / 2 - i + 2 ,i 为行数
#include <stdio.h>
#include <math.h>
int main()
{
printf(" *\n");
printf(" ***\n");
printf(" *****\n");
printf(" *******\n");
printf("*********\n");
printf(" *******\n");
printf(" *****\n");
printf(" ***\n");
printf(" *\n");
return 0;
}
2021.11.16 增 当 4.11 的题目要求为任意 n 的菱形时,为以下情况
- 分为上半部分和下半部分输出
- 只需要处理输出 * 之前的空格就可以了
- 使用变量 t 来控制每一行所需要输出的空格量,第一行的总空格量是 n / 2 的一半,后面每一行的空格量在第一行的基础上递减,直到中间行
- t 在上半部分是递减,在下半部分是递增
- 由于处理到中间那一行的时候,t 是 0,所以下半部分循环范围不 + 1 就处理不到最后一行
- 由于菱形的行数是奇数,所以需要判断输入为偶数的情况,这种情况不合要求,不应执行程序,提示错误信息后直接退出
#include <iostream>
using namespace std;
int main()
{
int n = 0;
cin >> n;
if (n % 2 == 0)
{
cout << "error !" << endl;
return 0;
}
int t = n / 2;
for (int i = 1; i <= n / 2; ++i)
{
for (int j = 1; j <= t; ++j)
{
cout << " ";
}
for (int k = 1; k <= n - t * 2;++k)
{
cout << "*";
}
cout << endl;
--t;
}
for (int i = 1; i <= n / 2 + 1; ++i)
{
for (int j = 1; j <= t; ++j)
{
cout << " ";
}
for (int k = 1; k <= n - t * 2;++k)
{
cout << "*";
}
cout << endl;
++t;
}