当前位置: 首页 > news >正文

11.07学习

一、三中代码解决鸡兔同笼问题

1.直接解方程

#include <stdio.h>

 

int main() {

int heads, feet, chickens, rabbits;

printf("请输入总头数:");

scanf("%d", &heads);

printf("请输入总脚数:");

scanf("%d", &feet);

 

// 检查是否有解

if (feet % 2 != 0 || heads * 4 < feet || heads * 2 > feet) {

printf("无解\n");

} else {

rabbits = (feet - heads * 2) / 2; // 兔子数量

chickens = heads - rabbits; // 鸡的数量

printf("鸡的数量:%d\n", chickens);

printf("兔子的数量:%d\n", rabbits);

}

return 0;

}

 

 

2.循环穷举法

#include <stdio.h>

 

int main() {

int heads, feet, chickens, rabbits;

printf("请输入总头数:");

scanf("%d", &heads);

printf("请输入总脚数:");

scanf("%d", &feet);

 

for (chickens = 0; chickens <= heads; chickens++) {

rabbits = heads - chickens;

if (2 * chickens + 4 * rabbits == feet) {

printf("鸡的数量:%d\n", chickens);

printf("兔子的数量:%d\n", rabbits);

return 0;

}

}

printf("无解\n");

return 0;

}

 

 

3.函数封装解方程

#include <stdio.h>

 

// 函数声明

void solveChickenAndRabbit(int heads, int feet);

 

int main() {

int heads, feet;

printf("请输入总头数:");

scanf("%d", &heads);

printf("请输入总脚数:");

scanf("%d", &feet);

solveChickenAndRabbit(heads, feet);

return 0;

}

 

// 函数定义

void solveChickenAndRabbit(int heads, int feet) {

int rabbits, chickens;

// 检查是否有解

if (feet % 2 != 0 || heads * 4 < feet || heads * 2 > feet) {

printf("无解\n");

} else {

rabbits = (feet - heads * 2) / 2; // 兔子数量

chickens = heads - rabbits; // 鸡的数量

printf("鸡的数量:%d\n", chickens);

printf("兔子的数量:%d\n", rabbits);

}

}

 

二、韩信点兵

#include <stdio.h>

 

int main() {

int x;

// 假设兵数不超过3000,这是一个合理的上限

for (x = 0; x < 3000; x++) {

if (x % 5 == 1 && x % 6 == 5 && x % 7 == 4 && x % 11 == 10) {

printf("x = %d\n", x);

// 找到答案后可以退出循环

break;

}

}

return 0;

}

这段代码通过穷举法,检查每个数字是否满足题目中给出的条件,即按1到5报数余1,按1到6报数余5,按1到7报数余4,按1到11报数余10。一旦找到符合条件的数字,就打印出来并退出循环

 

三、无限循环

在C语言中,实现无限循环主要有以下几种方式:

1. while循环: 使用 while(1) 或者 while(条件) ,其中条件总是为真,从而形成无限循环。

while(1) {

// 循环体

}

2. for循环: 使用 for(;;) ,这是一个没有初始化、条件和迭代表达式的循环,因此会无限执行。

for(;;) {

// 循环体

}

3. goto语句: 使用 goto 语句跳转到循环的开始,但通常不推荐使用 goto ,因为它会使代码难以理解和维护。

loop:

// 循环体

goto loop;

4. 递归函数: 通过递归调用自身,可以实现无限循环,但需要注意栈溢出的问题。

void infinite_loop() {

// 循环体

infinite_loop();

}

5. 死循环检测: 在某些情况下,可能需要检测死循环,这可以通过设置一个理论上不可能达到的条件来实现。

while(0) {

// 循环体

}

6. 条件表达式: 使用条件表达式,使得循环条件总是为真。

while(true) {

// 循环体

}

7. 无限循环的退出: 在无限循环中,通常需要某种机制来退出循环,比如检测到特定条件后使用 break 语句。

while(1) {

if (some_condition) {

break;

}

// 循环体

}

8. 信号处理: 在多进程或多线程环境中,可以通过信号处理来退出无限循环。

9. 中断: 在嵌入式编程中,可以通过硬件中断来退出无限循环。

使用无限循环时,需要特别注意程序的健壮性和资源管理,确保程序能够在需要时安全退出循环。

 

 


http://www.mrgr.cn/news/68137.html

相关文章:

  • 别名路径联想设置
  • 【C++】父类参数有默认值时子类构造函数列表中可以省略该参数
  • PCL截取ROI
  • Hive 查询各类型专利 Top 10 申请人及对应的专利申请数
  • qt QHttpMultiPart详解
  • <Project-20 YT-DLP> 给视频网站下载工具 yt-dlp/yt-dlp 加个页面 python web
  • 泷羽sec学习打卡-shodan扫描7
  • 初识Java EE和Spring Boot
  • Java 类和对象(下)
  • windows安装nvm并配置换源
  • 机器学习4_支持向量机_核函数——MOOC
  • 深入理解 TCP 的握手与挥手机制:为何握手 3 次,挥手 4 次?
  • 算法题求解-给定一个整数序列,要求将序列中所有负数都放于所有非负数之前
  • windows 进程降权和提权代码示例(2) c++
  • Redis设计与实现 学习笔记 第十六章 Sentinel
  • 重构代码之参数化方法
  • 法语je vais bien
  • Linux(CentOS)运行 jar 包
  • Java入门14——动态绑定(含多态)
  • C# String系列(3):StringBuilder有诸多优势,它能代替String吗?
  • 信息安全工程师(80)网络安全测评技术与工具
  • YOLOv11融合IncepitonNeXt[CVPR2024]及相关改进思路
  • STM32学习之I2C的简介与学习
  • 蓝牙 SPP 协议详解及 Android 实现
  • 基于STM32的贪吃蛇游戏教学
  • 在JS中, 0 == [0] 吗