11.07学习

news/2024/11/8 18:23:59 标签: 学习

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

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.niftyadmin.cn/n/5744278.html

相关文章

MySQL分组查询

问题&#xff1a;查询员工表中,每个不同部门分别的平均工资 分组查询&#xff1a;group by关键字实现分组,group by放在where条件语句之后,order by放置中group by的后面,一会儿还会学到的having关键字,总体的循序先后为&#xff1a; where条件 , group by 分组语句 , having…

关于Redis

Redis 基础 什么是 Redis&#xff1f; Redis &#xff08;REmote DIctionary Server&#xff09;是一个基于 C 语言开发的开源 NoSQL 数据库&#xff08;BSD 许可&#xff09;。与传统数据库不同的是&#xff0c;Redis 的数据是保存在内存中的&#xff08;内存数据库&#xf…

004-Kotlin界面开发快速入水之TicTacToe

程序界面和效果 快速入水 要学习一样跟程序设计有关的东西&#xff0c;最好的办法始终是把手打湿&#xff0c;整一个能够运行&#xff0c;可以实验的东西出来。 也只有在程序开发中&#xff0c;我们才能想一个魔法师而不是魔术师&#xff0c;我们真的能够创造一个东西。而且编…

工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置

工作流初始错误 泛微提交流程提示_泛微协同办公平台E-cology8.0版本后台维护手册(11)–系统参数设置...-CSDN博客 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明 工作流初始错误 泛微提交流程提示_泛微OA 工作流WebService接口使用说明-CSDN博客 工作…

EL表达式和JSTL表达式(详解)

1.EL表达式&#xff1a; 导包&#xff1a; isELIgnored"false"就可以用了&#xff0c;这个包是用的tomcat内置的,如果不行的话&#xff0c;就需要导包 <% page contentType"text/html;charsetUTF-8" isELIgnored"false" language"jav…

Java Iterator 实现杨辉三角

一、问题描述 杨辉三角定义如下&#xff1a; 1/ \1 1/ \ / \1 2 1/ \ / \ / \1 3 3 1/ \ / \ / \ / \1 4 6 4 1/ \ / \ / \ / \ / \ 1 5 10 10 5 1 把每一行看做一个list&#xff0c;试写一个 Iterator&#xff0c;不断输出下一行的 list&#xf…

中安OCR电子行驶证、驾驶证识别,助力便捷出行与智慧交通

随着数字化技术在各行各业的深入应用&#xff0c;交通管理领域也迈入了新的时代。OCR电子行驶证和电子驾驶证的推出&#xff0c;不仅提升了车辆及驾驶证件管理的效率&#xff0c;更大大方便了车主出行。电子证件的普及&#xff0c;使得交通管理从“实体化”逐渐走向“数字化”&…

【LeetCode】【算法】437. 路径总和

LeetCode 437. 路径总和 题目描述 给定一个二叉树的根节点 root &#xff0c;和一个整数 targetSum &#xff0c;求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始&#xff0c;也不需要在叶子节点结束&#xff0c;但是路径方向必须是向下的&a…