c语言经典例题讲解(输出菱形,喝汽水问题)

目录

一、输出菱形

二、喝汽水问题

方法1:一步一步来

方法二:直接套公式


一、输出菱形

输出类似于下图的菱形:

通过分析:1、先分为上下两部分输出

2.在输出前先输出空格

3.找规律进行输出

可知,可令上半部分line行,下半部分便是line-1行。

找空格的规律:当line为7时,第一行有6个空格,第二行有5个......第七行没有

起始点便是line-1,终止为0
找*规律: 当line为7时,第一行有1个*,第二行有3个......第七行有13个

规律是:line*2-1

复制代码
int main()
{
	int line = 0;
	scanf("%d", &line);
	//开始输出上半部分
	for (int i = 1; i <= line; i++)
	{
		//先输出空格
		for (int j = 1; j <= line - i; j++)
		{
			printf(" ");
		}

		for (int j = 1; j <= 2 * i-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

开始输出下半部分:

复制代码
int main()
{
	int line = 0;
	scanf("%d", &line);
	//开始输出上半部分
	for (int i = 1; i <= line; i++)
	{
		//先输出空格
		for (int j = 1; j <= line - i; j++)
		{
			printf(" ");
		}

		for (int j = 1; j <= 2 * i-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}

	//开始输出下半部分
	for (int i = 1; i <= line - 1; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf(" ");
		}

		for (int j = 1; j <= (line - i) * 2 - 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

总结:我们要注意找到各行空格和*数量与第几行之间的数量关系

二、喝汽水问题

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给n元,可以喝多少瓶汽水

方法1:一步一步来

复制代码
int main()
{
	int n = 0;
	int total = 0;
	scanf("%d", &n);//自己输入钱数
	total = n;
	int bottle = n;//一开始剩的瓶子数是钱数
	while (bottle >= 2)
	{
		total = total + bottle / 2;
		bottle = bottle / 2 + bottle % 2;
	}
	printf("%d", total);
	return 0;
}

需要注意的是 bottle = bottle / 2 + bottle % 2;当n=10时,喝完剩10个瓶子,换5瓶。5瓶能再换2瓶,还剩一个空瓶便是+bottle % 2

方法二:直接套公式

各位多试几组之后便很容易就可以看出最后喝的总瓶数是你钱的2倍减一

可直接打印2*n-1;


第一次题目便到这里,以后还会继续分享的,如有疑惑的地方,各位可以随时问我的。

相关推荐
Coovally AI模型快速验证33 分钟前
当视觉语言模型接收到相互矛盾的信息时,它会相信哪个信号?
人工智能·深度学习·算法·机器学习·目标跟踪·语言模型
电院工程师1 小时前
SIMON64/128算法Verilog流水线实现(附Python实现)
python·嵌入式硬件·算法·密码学
轮到我狗叫了1 小时前
力扣.84柱状图中最大矩形 力扣.134加油站牛客.abb(hard 动态规划+哈希表)牛客.哈夫曼编码
算法·leetcode·职场和发展
丛雨要玩游戏1 小时前
字符函数和字符串函数
c语言·开发语言·算法
八个程序员1 小时前
自定义函数(C++)
开发语言·c++·算法
ad钙奶长高高2 小时前
【C语言】初始C语言
c语言·开发语言·算法
Metaphor6922 小时前
Java 读取 Word 文本框中的文本和图片:Spire.Doc for Java 实践指南
经验分享
侯小啾2 小时前
【17】C语言-gets() 与 fgets() 函数
c语言·开发语言
罗西的思考2 小时前
【Agent】 ACE(Agentic Context Engineering)源码阅读笔记---(3)关键创新
人工智能·算法
抠脚学代码3 小时前
Linux开发-->驱动开发-->字符设备驱动框架
linux·数据结构·驱动开发