当前位置: 首页 > 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.lryc.cn/news/479375.html

相关文章:

  • 【JavaEE】常见锁策略、CAS
  • Logstash 安装与部署(无坑版)
  • 鸿蒙开发:ArkUI Toggle 组件
  • 使用Matlab神经网络工具箱
  • 【面试题】Hive 查询:如何查找用户连续三天登录的记录
  • 高活跃社区 Doge 与零知识证明的强强联手,QED 重塑可扩展性
  • qt QAbstractTableModel详解
  • 掌握 Navicat 数据库结构设计 | 提升工作效率的秘诀
  • Ollama AI 框架缺陷可能导致 DoS、模型盗窃和中毒
  • vue 3:监听器
  • Java学习路线:Maven(四)Maven常用命令
  • 服务器数据恢复—分区结构被破坏的reiserfs文件系统数据恢复案例
  • lua入门教程:type函数
  • Java图片转word
  • 立体视觉的核心技术:视差计算与图像校正详解
  • PaddleNLP的FAQ问答机器人
  • 2024年12月中国多场国际学术会议,EI检索录用!
  • 日语学习的难易程度
  • java-web-web后端知识小结
  • 常见的排序算法(二)
  • spark的RDD分区的设定规则
  • 【点云网络】voxelnet 和 pointpillar
  • HAL库硬件IIC驱动气压传感器BMP180
  • 探索Python音频处理的奥秘:Pydub库的魔法
  • LeetCode 热题100(七)【链表】(2)
  • 计算机网络 TCP/IP体系 网络层
  • 迈入国际舞台,AORO M8防爆手机获国际IECEx、欧盟ATEX防爆认证
  • 实习作假:阿里健康实习做了RABC中台,还优化了短信发送流程
  • Unity中IK动画与布偶死亡动画切换的实现
  • java导出word文件(手绘)