[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.mzph.cn/pingmian/5524.shtml

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

相关文章

Scikit-Learn回归树

Scikit-Learn回归树 1、决策树1.1、什么是决策树1.2、决策树学习的步骤1.3、决策树算法 1、决策树 决策树&#xff08;DTs&#xff09;是一种用于回归和分类的有监督学习方法。通常&#xff0c;决策树用于分类问题&#xff1b;当决策树用于回归问题时&#xff0c;称为回归树。回…

【C++】:日期类的实现 -- 日期计算器

前言 1.日期类是一种十分经典的类型。对于C的初学者&#xff0c;它能够帮助我们融会贯通许多C的基础知识&#xff0c;它涉及许多的基础语法&#xff0c;比如引用&#xff0c;函数重载&#xff0c;传值/传参返回&#xff0c;构造函数&#xff0c;运算符重载&#xff0c;const成…

【Python小练】求斐波那契数列第n个数

题目 输出斐波那契数列第n个数。 分析 首先我们要知道&#xff0c;斐波那契数列&#xff0c;这个数列从第三位开始等于前两个数的和&#xff0c;要知道数列第n个数&#xff08;n>2&#xff09;&#xff0c;就要知道其前两相的值&#xff0c;着就需要用到递归了。来看一下吧…

C语言实验-循环结构和选择结构

一&#xff1a; 求和:1(14)(149)(14916)…(14916…n2)? 其中n的值由键盘输入&#xff1b; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int sum 0;int n 0;printf("请输入一个整数");scanf("%d", &n);for (int i 0; i &l…

Apache中如何配置 ws 接口

Apache中如何配置 wss 接口 在Apache中配置WebSockets的支持&#xff0c;你需要使用mod_proxy_wstunnel模块&#xff0c;该模块是Apache的一个代理模块&#xff0c;它允许你代理WebSocket请求。 以下是配置步骤的简要说明和示例&#xff1a; 确保你的Apache服务器安装了mod_…

【最大公约数 排序】2344. 使数组可以被整除的最少删除次数

本文涉及知识点 最大公约数 排序 LeetCode2344. 使数组可以被整除的最少删除次数 给你两个正整数数组 nums 和 numsDivide 。你可以从 nums 中删除任意数目的元素。 请你返回使 nums 中 最小 元素可以整除 numsDivide 中所有元素的 最少 删除次数。如果无法得到这样的元素&a…

【高质量】2024五一数学建模C题保奖思路+代码(后续会更新)

你的点赞收藏是我后续更新的最大动力&#xff01; 一定要点击文末的卡片&#xff0c;那是获取资料的入口&#xff01; 你是否在寻找数学建模比赛的突破点&#xff1f; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024 年五一数学建模&#xff08;C题&#xff09;…

1700java进销存管理系统Myeclipse开发sqlserver数据库web结构java编程计算机网页项目

一、源码特点 java web进销存管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为sqlser…

Vue通过下拉框选择字典值,并将对应的label以及value值提交到后端

产品品种从字典中获取 产品性质也是从字典中获取 字典当中的保存 dict_type表 dict_data表 在表单提交的方法中 1.因为做的产品性质是多选&#xff0c;它会以数组的方式提交&#xff0c;所以需要先将Json格式转变为String JSON.stringify(this.form.nature) 2.提交表单&…

【Linux网络编程】DNS、ICMP、NAT技术、代理服务器+网络通信各层协议总结

DNS、ICMP、NAT技术、代理服务器网络通信总结 1.DNS2.ICMP协议2.1ping命令2.2traceroute命令 3.NAT技术4.NAT和代理服务器5.网线通信各层协议总结 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&…

vue3 依赖-组件tablepage-vue3版本1.0.3更新内容

github求⭐ 可通过github 地址和npm 地址查看全部内容 vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例-汇总 vue3 依赖-组件tablepage-vue3说明文档&#xff0c;列表页快速开发&#xff0c;使用思路及范例&#xff08;Ⅰ&#…

JAVAEE—servlet的概念及使用,使用servlet接口实现一个表白墙

文章目录 servlet的概念静态页面和动态页面servlet的作用 写出一个servlet程序目录的创建设置smart tomcat编写helloworld servlet的概念 首先我们要搞明白什么是servlet&#xff0c;servlet是一种实现动态页面的技术&#xff0c;他是由tomcat提供给程序员的一组API可以帮助程…

【学习笔记二十九】EWM较特殊的业务场景

一、供应商寄售业务相关 1.创建寄售物料、寄售信息记录以及寄售的采购订单 2.创建交货单 3.维护入库交货 行项目里存在C寄售的标识 4.创建上架的仓库任务并确定 查看仓位库存&#xff0c;发现仓位库存里存在寄售标识C以及寄售库存所有方 5.寄售转自有 ①首先MIGO里进行寄…

【吊打面试官系列】Java高并发篇 - Java 中的同步集合与并发集合有什么区别?

大家好&#xff0c;我是锋哥。今天分享关于 【Java 中的同步集合与并发集合有什么区别&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Java 中的同步集合与并发集合有什么区别&#xff1f; 同步集合与并发集合都为多线程和并发提供了合适的线程安全的集合&…

微隔离实施五步法,让安全防护转起来

前言 零信任的最核心原则→最小权限 安全的第一性原理→预防 零信任的最佳实践→微隔离 “零信任”这个术语的正式出现&#xff0c;公认是在2010年由Forrester分析师John Kindervag最早提出。时至今日&#xff0c;“零信任”俨然已成安全领域最热门的词汇&#xff0c;做安全…

想要接触网络安全,应该怎么入门学习?

作为一个网络安全新手&#xff0c;首先你要明确以下几点&#xff1a; 我刚入门网络安全&#xff0c;该怎么学&#xff1f;要学哪些东西&#xff1f;有哪些方向&#xff1f;怎么选&#xff1f;这一行职业前景如何&#xff1f; 其次&#xff0c;如果你现在不清楚学什么的话&…

物联网实战--平台篇之(二)基础搭建

目录 一、Qt工程创建 二、数据库知识 三、通信协议 四、名词定义 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 一、Qt工程…

如何使用ChatGPT进行高效的中文到科学英文翻译?

如何使用ChatGPT进行高效的中文到科学英文翻译 在全球化加速的今天&#xff0c;科学交流往往需要跨越语言障碍。特别是在科研领域&#xff0c;有效地将中文研究成果转化为精准的科学英语描述&#xff0c;对于学术发表和国际合作尤为关键。AI翻译工具如ChatGPT可以在这一过程中…

ubuntu入门

基础命令 cd 切换命令 ls 查看当前目录下所有的文件 cp a.c b.c 拷贝a.c 到 b.c touch a.c 创建a.c文件 mkdir file 创建文件夹file rm file 删除文件 rmdir 删除test文件夹 rmdir test/ mv 移动文件 mv a.c b.c 把a.c 替换成b.c ifconfig 查看电脑网络信息 rm xx 删…

虹科Pico汽车示波器 | 免拆诊断案例 | 起动机免拆诊断故障 2 例

电磁开关、换向器烧蚀及炭刷磨损均会导致起动机偶尔不工作&#xff0c;使发动机偶尔无法起动。由于故障是偶发的&#xff0c;且没有故障代码&#xff0c;这往往会让维修人员无从下手&#xff0c;而用Pico示波器测量起动电流&#xff0c;就会让这些“亚健康状态”一目了然。 案例…