[C语言]典型例题:小蚂蚁爬橡皮筋、买汽水问题、导致单词块、菱形打印……

1、小蚂蚁爬橡皮筋问题

假设橡皮筋长4m,小蚂蚁从一端爬向另一端每天爬1m,且每爬了1m,橡皮筋会立马拉伸4m,在理想条件下,小蚂蚁需要爬多少天可以到达橡皮筋的另一端?

不仔细想,我们很可能认为小蚂蚁永远爬不完橡皮筋,实则不然;因为橡皮筋是均匀拉伸的,并不是一端延伸,也就是说小蚂蚁的位置信息在不断发生变化。直接看代码:

#include<stdio.h>
int main()
{int day = 0;double length = 4;//橡皮筋初始长度double position = 0;//小蚂蚁位置信息while (position < length){day++;position++;double n = position / length;拉伸前蚂蚁爬行所占橡皮筋长度的比例length += 4;position = n * length;//拉伸后小蚂蚁的位置信息}printf("%d\n", day);return 0;
}

 

2、买汽水问题

 假设一瓶汽水一元钱,喝完汽水后会有空瓶子,每两个空瓶子,可以换一瓶汽水,循环往复一共可以喝多少瓶汽水?

#include<stdio.h>
int main()
{int money = 0;scanf("%d", &money);int total = money;int empty = money;while (empty >= 2){total += empty / 2;//每两个空瓶换一瓶汽水empty = empty / 2 + empty % 2;}printf("%d\n", total);return 0;
}

 3、将一句话倒置,标点不逆置

比如:i like beijing.经过函数变为:beijing.i like(不是逆序)

#include<stdio.h>
#include<string.h>
void reverse(char* left, char* right)
{while (left < right){char tmp = *left;*left = *right;*right = tmp;left++;right--;}
}
int main()
{char arr[101] = { 0 };gets_s(arr);//逆序整个字符串char* left = arr;char* right = arr + strlen(arr) - 1;//起始位置地址加上字符串长度地址即时最后一个元素地址reverse(left, right);//逆序每个单词char* start = arr;//用每一个start表示第一个单词的起始位置while (*start!='\0'){char* end = start;//end表示每个单词结束,先让他从start开始while (*end != ' '&&*end!='\0'){end++;}reverse(start, end - 1);if(*end!='\0')end++;start = end;}printf("%s\n", arr);
}

4、最小公倍数

这个题有多种解法,在这里我就用我认为最简单的方法

#include<stdio.h>
int main()
{int a = 0;int b = 0;scanf("%d %d", &a, &b);int x = 0;int m = a * b;while (x = a % b)//求最大公约数{a = b;b = x;}printf("%d\n", m / b);
}

5、打印菱形

这个题很显然是可以用暴力拆解去做的,但会显得很挫,我们可以把它拆解成两部分:上半部分和下半部分。

上半部分:空格数=line-1-i,星号数=2*i+1

下半部分:空格数=i+1,星号数=(line-i-1)*2-1

根据规律,写出相应代码:

#include<stdio.h>
int main()
{//上半部分int line = 0;scanf("%d", &line);int i = 0;for (i = 0; i < line; i++)//打印每一行{int j = 0;//每一行内容for (j = 0; j < line - 1 - i; j++){printf(" ");}for (j = 0; j < 2 * i + 1; j++){printf("*");}printf("\n");}//下半部分for (i = 0; i < line - 1; i++){int j = 0;for (j = 0; j <= i; j++){printf(" ");}for (j = 0; j < 2 * (line -1-i) - 1; j++){printf("*");}printf("\n");}return 0;
}

6、水仙花数的打印

什么是”水仙花数“?

也被称作超完全数字不变数、自恋数、字幂数,它是指一个n位数(n>=3),其每个位上那个数字的n次幂之和等于他本身。比如:153就是一个水仙花数,因为3^3+5^3+1^3=153。

在这里我们推广到所有自然数集。

#inclde<stdio.h>
#include<math.h>
int main()
{int i = 0;for (i = 0; i <= 10000; i++){//判断i是否为"水仙花数"//计算i是几位数-n//得到i的每一位,计算他的n次方之和-int count = 0;int tmp = i;int sum = 0;while (tmp){tmp /= 10;count++;}tmp = i;while (tmp){sum += pow(tmp % 10, count);tmp /= 10;}ew25if (sum == i){printf("%d ", i);}}return 0;
}

总结 :

解决此类问题的关键在于将问题分块话,一步一步解决当前的问题,最后从整体的角度解决问题。

欢迎大家在评论区留言!

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661570.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C#】基础知识

0.参考 C#语言入门详解 1.几种打印hello_world的方式 1.1 console控制台 新建一个console&#xff0c;直接打印&#xff1a; Console.WriteLine("Hello_world");启动一闪而过&#xff0c;在vs调试中选择开始执行不调试&#xff08;without debug&#xff09;。 …

基于FPGA的数字信号处理(5)--Signed的本质和作用

前言 Verilog中的signed是一个很多人用不好&#xff0c;或者说不太愿意用的一个语法。因为不熟悉它的机制&#xff0c;所以经常会导致运算结果莫名奇妙地出错。其实了解了signed以后&#xff0c;很多时候用起来还是挺方便的。 signed的使用方法主要有两种&#xff0c;其中一种…

CentOS 环境 JDK 安装

1.jdk下载 &#xff08;1&#xff09;官网Java jdk 历史版本 http://www.oracle.com/technetwork/java/javase/archive-139210.html 选择以下x86 64位版本 &#xff08;2&#xff09;国内 编程宝库 java jdk镜像 地址&#xff1a; http://www.codebaoku.com/jdk/jdk-index…

# 从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(3)

从浅入深 学习 SpringCloud 微服务架构&#xff08;七&#xff09;Hystrix&#xff08;3&#xff09; 一、hystrix&#xff1a;通过 Actuator 获取 hystrix 的监控数据 1、Hystrix 的监控平台介绍&#xff1a; 1&#xff09;Hystrix 除了实现容错功能&#xff0c;Hystrix 还…

RUSLE模型:一种新的土壤侵蚀强度计算方法

随着全球土地资源的日益枯竭和环境污染的加剧&#xff0c;对土壤侵蚀的研究变得愈发重要。土壤侵蚀不仅对农业生产和生态环境造成了严重影响&#xff0c;还直接威胁着人类的生存环境。因此&#xff0c;寻找一种精准可靠的土壤侵蚀强度计算方法具有重要意义。 ​ 近年来&#xf…

企业计算机服务器中了rmallox勒索病毒怎么处理,rmallox勒索病毒处理建议

在网络技术不断发展的时代&#xff0c;网络在企业中的应用广泛&#xff0c;可以为企业带来更多的便利&#xff0c;大大提升了企业的生产效率&#xff0c;但网络作为虚拟世界&#xff0c;在为企业提供便利的同时&#xff0c;也为企业数据安全带来严重威胁。近期&#xff0c;云天…

区块链技术:DAPP开发

随着科技的飞速发展&#xff0c;区块链技术逐渐渗透到各个领域&#xff0c;其中DAPP&#xff08;去中心化应用&#xff09;的发展尤为引人注目。作为一种新型的应用程序&#xff0c;DAPP正在重塑未来商业生态&#xff0c;其潜力无可估量。 一、DAPP的定义和特点 DAPP是指基于…

【MySQL精炼宝库】数据库的约束 | 表的设计 | 聚合查询 | 联合查询

目录 一、数据库约束 1.1 约束类型&#xff1a; 1.2 案例演示&#xff1a; 二、表的设计 2.1 一对一: 2.2 一对多: 2.3 多对多: 2.4 内容小结&#xff1a; 三、新增 四、查询 4.1 聚合查询&#xff1a; 4.1.1 聚合函数&#xff1a; 4.1.2 GROUP BY子句&#xff1a…

【电路笔记】-RC振荡器电路

RC振荡器电路 文章目录 RC振荡器电路1、概述2、RC 相移网络3、基本RC振荡器电路4、运算放大器RC振荡器5、运算放大器相位滞后RC振荡器电路6、RC振荡器示例11、概述 RC 振荡器使用放大器和 RC 反馈网络的组合,由于级之间的相移而产生输出振荡。 当单级晶体管放大器作为共发射…

pycharm中文件误删或者误操作,怎么恢复

恢复pycharm中文件误删或者误操作 恢复方法&#xff1a;1.xxxx.py文件误删2.xxxx.py文件内操作 在日常学习或练手时总会有一些迷之操作&#xff0c;一些文件被误删或者一些文件越改越糟&#xff0c;想要恢复操作之前的文件。 恢复方法&#xff1a; 1.选则误删文件的上级目录&…

【yolov8】yolov8剪枝训练流程

yolov8剪枝训练流程 流程&#xff1a; 约束剪枝微调 一、正常训练 yolo train model./weights/yolov8s.pt datayolo_bvn.yaml epochs100 ampFalse projectprun nametrain二、约束训练 2.1 修改YOLOv8代码&#xff1a; ultralytics/yolo/engine/trainer.py 添加内容&#…

【LocalAI】(10):在autodl上编译embeddings.cpp项目,转换bge-base-zh-v1.5模型成ggml格式,本地运行main成功

1&#xff0c;关于 localai LocalAI 是一个用于本地推理的&#xff0c;与 OpenAI API 规范兼容的 REST API。 它允许您在本地使用消费级硬件运行 LLM&#xff08;不仅如此&#xff09;&#xff0c;支持与 ggml 格式兼容的多个模型系列。支持CPU硬件/GPU硬件。 【LocalAI】&…