2021.11.10 C语言课后作业

101 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

4.3

  1. 公鸡每只5元,一百块最多买20只,所以循环限制到20,母鸡和小鸡也是如此,价格最多都是100元
  2. 不只是价格要刚好100,三种鸡的数量加在一起也要100才满足条件
  3. 这里的 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

  1. 百位数不可能为0,所以从1开始循环,其他的从1开始循环
  2. 三位数,每一位都要枚举,所以是三重循环
  3. 满足条件输出即可

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 的菱形时,为以下情况

  1. 分为上半部分和下半部分输出
  2. 只需要处理输出 * 之前的空格就可以了
  3. 使用变量 t 来控制每一行所需要输出的空格量,第一行的总空格量是 n / 2 的一半,后面每一行的空格量在第一行的基础上递减,直到中间行
  4. t 在上半部分是递减,在下半部分是递增
  5. 由于处理到中间那一行的时候,t 是 0,所以下半部分循环范围不 + 1 就处理不到最后一行
  6. 由于菱形的行数是奇数,所以需要判断输入为偶数的情况,这种情况不合要求,不应执行程序,提示错误信息后直接退出
#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;
	}