【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】

目录😋

任务描述

相关知识

 一、循环控制 / 跳转语句的使用

1. 循环控制语句(for 循环)

2. 循环控制语句(while 循环)

3. 跳转语句(break 语句)

4. 跳转语句(continue 语句)

二、循环嵌套语句

1. 基本概念

2. for 循环嵌套

3. while 循环嵌套

4. do - while 循环嵌套

5. 注意事项

编程要求

测试说明

通关代码

测试结果


任务描述

本关任务:运用枚举法求解硬币等额兑换的程序。


相关知识

为了完成本关任务,你需要掌握:

  1. 循环控制/跳转语句
  2. 循环嵌套语句;

 一、循环控制 / 跳转语句的使用

1. 循环控制语句(for 循环)
  • 基本原理for循环是一种常用的循环结构,它允许您指定一个初始化表达式、一个循环条件和一个更新表达式。语法格式为for(初始化表达式; 循环条件; 更新表达式)。初始化表达式在循环开始时执行一次,用于初始化循环变量。循环条件在每次循环迭代开始时进行检查,如果为真,则执行循环体中的代码。更新表达式在每次循环体执行完后执行,用于更新循环变量。
  • 示例代码
    #include <stdio.h>
    int main() {// 打印1到10的数字for (int i = 1; i <= 10; i++) {printf("%d ", i);}printf("\n");return 0;
    }
    
2. 循环控制语句(while 循环)
  • 基本原理while循环在循环开始时检查循环条件。只要条件为真,就会执行循环体中的代码。语法格式为while(循环条件)。循环条件是一个表达式,它返回一个布尔值(真或假)。在循环体中,通常需要包含一些能够改变循环条件的语句,否则可能会导致无限循环。
  • 示例代码
    #include <stdio.h>
    int main() {int i = 1;while (i <= 10) {printf("%d ", i);i++;}printf("\n");return 0;
    }
    
3. 跳转语句(break 语句)
  • 基本原理break语句用于立即跳出当前循环(forwhiledo - while)或switch语句。当程序执行到break语句时,循环或switch语句会立即终止,程序控制流将跳转到循环或switch语句后的下一条语句。
  • 示例代码(在循环中使用 break)
    #include <stdio.h>
    int main() {for (int i = 1; i <= 10; i++) {if (i == 5) {break;}printf("%d ", i);}printf("\n");return 0;
    }
    
4. 跳转语句(continue 语句)
  • 基本原理continue语句用于跳过当前循环迭代的剩余部分,直接开始下一次循环迭代。当程序执行到continue语句时,循环体中continue语句之后的代码将不会被执行,而是直接跳转到循环的更新表达式(对于for循环)或循环条件检查(对于whiledo - while循环)。
  • 示例代码(在循环中使用 continue)
    #include <stdio.h>
    int main() {for (int i = 1; i <= 10; i++) {if (i == 5) {continue;}printf("%d ", i);}printf("\n");return 0;
    }

二、循环嵌套语句

1. 基本概念

循环嵌套是指在一个循环语句的循环体中又包含另一个循环语句。在 C 语言中,for循环、while循环和do - while循环都可以相互嵌套。它主要用于处理具有多重循环结构的问题,例如二维数组的遍历、打印各种有规律的图案等。

2. for 循环嵌套
  • 语法结构

最常见循环嵌套结构是for循环嵌套for循环。其基本形式如下:

for(初始化表达式1; 条件表达式1; 更新表达式1) {// 外层循环体for(初始化表达式2; 条件表达式2; 更新表达式2) {// 内层循环体}
}

下面的代码打印了一个简单的乘法口诀表:

#include <stdio.h>
int main() {int i, j;for(i = 1; i <= 9; i++) {for(j = 1; j <= i; j++) {printf("%d*%d=%d\t", j, i, i * j);}printf("\n");}return 0;
}

其中,外层for循环控制行数(i从 1 到 9),内层for循环控制每行乘法口诀的列数(j从 1 到当前行号i)。每次内层循环结束后,会输出一个换行符,形成了一个完整的乘法口诀表。

3. while 循环嵌套
  • 语法结构

基本形式如下:

while(条件表达式1) {// 外层循环体while(条件表达式2) {// 内层循环体}
}

例如,下面的代码用于计算两个数的最大公因数,使用的是辗转相除法(欧几里得算法),可以用while循环嵌套来实现:

#include <stdio.h>
int main() {int a, b, temp;printf("请输入两个整数:");scanf("%d %d", &a, &b);while (b!= 0) {temp = a % b;a = b;b = temp;}printf("最大公因数是:%d\n", a);return 0;
}

这里,外层while循环用于不断更新ab的值,直到b变为 0,内层的操作(计算余数并更新ab)在每次外层循环迭代时都会执行。

4. do - while 循环嵌套
  • 语法结构

基本形式如下:

do {// 外层循环体do {// 内层循环体} while(条件表达式2);
} while(条件表达式1);

例如,下面的代码可以用于模拟一个简单的游戏关卡选择界面,假设游戏有多个章节,每个章节有多个关卡,用户可以选择章节和关卡:

#include <stdio.h>
int main() {int chapter, level;do {printf("请选择章节(1 - 3):");scanf("%d", &chapter);if (chapter >= 1 && chapter <= 3) {do {printf("请选择章节 %d中的关卡(1 - 5):", chapter);scanf("%d", &level);if (level >= 1 && level <= 5) {printf("你选择了章节 %d的关卡 %d\n", chapter, level);} else {printf("无效的关卡选择。\n");}} while (level < 1 || level > 5);} else {printf("无效的章节选择。\n");}} while (chapter < 1 || chapter > 3);return 0;
}

其中,外层do - while循环用于确保用户选择了有效的章节(1 - 3),内层do - while循环用于确保用户在选定的章节中选择了有效的关卡(1 - 5)。

5. 注意事项
  • 循环嵌套时,要特别注意内层循环和外层循环的控制变量。它们应该相互独立,避免在内层循环中意外修改外层循环的控制变量,除非这是有意为之并且经过仔细考虑的逻辑。
  • 随着循环嵌套层数的增加,程序的复杂度也会增加。因此,在编写循环嵌套代码时,要确保代码的可读性,必要时添加注释来解释代码的功能和意图。同时,要注意循环嵌套可能带来的性能问题,例如过多的嵌套可能导致程序运行时间过长或者占用过多的内存资源。

编程要求

根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码。


测试说明

平台会对你编写的代码进行测试:

预期输出:

1fen:  5 ,2fen: 10 ,5fen: 15
1fen:  5 ,2fen: 35 ,5fen:  5
1fen: 10 ,2fen: 20 ,5fen: 10
1fen: 15 ,2fen:  5 ,5fen: 15
1fen: 15 ,2fen: 30 ,5fen:  5
1fen: 20 ,2fen: 15 ,5fen: 10
1fen: 25 ,2fen: 25 ,5fen:  5
1fen: 30 ,2fen: 10 ,5fen: 10
1fen: 35 ,2fen: 20 ,5fen:  5
1fen: 40 ,2fen:  5 ,5fen: 10
1fen: 45 ,2fen: 15 ,5fen:  5
1fen: 55 ,2fen: 10 ,5fen:  5
1fen: 65 ,2fen:  5 ,5fen:  5
一共有13种

开始你的任务吧,祝你成功!


通关代码

/*6.要将一元钱换成1分、2分和5分的硬币,每种硬币的个数大于0,且为5的倍数,
编写程序计算并输出有多少种换法。*/
#include<stdio.h>
main(){int i,j,k,n=0;/************************begin***********************/for(i=1;i<100;i++){for(j=1;j<=50;j++){for(k=1;k<20;k++){if(i+2*j+5*k==100 && i%5==0 && j%5==0 && k%5==0){n++;printf("1fen: %2d ,2fen: %2d ,5fen: %2d\n",i,j,k);}}}}  /************************end************************/printf( "一共有%d种",n);
}

测试结果

在这里插入图片描述

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

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

相关文章

【Multisim用74ls92和90做六十进制】2022-6-12

缘由Multisim如何用74ls92和90做六十进制-其他-CSDN问答 74LS92、74LS90参考

计算机的错误计算(二百)

摘要 用三个大模型计算 exp(123.456). 结果保留10位有效数字。三个大模型的输出均是错误的&#xff0c;虽然其中一个给出了正确的 Python代码。 例1. 计算 exp(123.456). 保留10位有效数字。 下面是与第一个大模型的对话。 以上为与一个大模型的对话。 下面是与另外一个大模…

自行下载foremos命令

文章目录 问题描述其他小伙伴的成功解决方案&#xff0c;但对我不适用解决思路失败告终 最终解决成功解决思路解决步骤 问题描述 在kali系统终端中输入foremost&#xff0c;显示无此命令 其他小伙伴的成功解决方案&#xff0c;但对我不适用 解决思路 正常来说使用命令 apt-g…

docker 安装influxdb

docker pull influxdb mkdir -p /root/influxdb/data docker run -d --name influxdb -p 8086:8086 -v /root/influxdb/data:/var/lib/influxdb influxdb:latest#浏览器登录&#xff1a;http://192.168.31.135:8086&#xff0c;首次登录设置用户名密码&#xff1a;admin/admin1…

Leetcode打卡:我的日程安排表II

执行结果&#xff1a;通过 题目 731 我的日程安排表II 实现一个程序来存放你的日程安排。如果要添加的时间内不会导致三重预订时&#xff0c;则可以存储这个新的日程安排。 当三个日程安排有一些时间上的交叉时&#xff08;例如三个日程安排都在同一时间内&#xff09;&#…

创龙3588——debian根文件系统制作

文章目录 build.sh debian 执行流程build.sh源码流程 30-rootfs.sh源码流程 mk-rootfs-bullseys.sh源码流程 mk-sysroot.sh源码流程 mk-image.sh源码流程 post-build.sh 大致流程系统制作步骤 build.sh debian 执行流程 build.sh 源码 run_hooks() {DIR"$1"shiftf…

拟声 0.60.0 | 拟态风格音乐播放器,支持B站音乐免费播放

「拟声」是一款音乐播放器&#xff0c;不仅支持音视频的本地播放&#xff0c;还提供了账号注册功能&#xff0c;登录后可享受自动同步歌单、歌词等。它支持播放绝大多数音频格式&#xff0c;具备固定输出采样率、独占输出、内置均衡器和音调调整等功能。同时&#xff0c;它也支…

计算机网络 (16)数字链路层的几个共同问题

一、封装成帧 封装成帧是数据链路层的一个基本问题。数据链路层把网络层交下来的数据构成帧发送到链路上&#xff0c;以及把接收到的帧中的数据取出并上交给网络层。封装成帧就是在一段数据的前后分别添加首部和尾部&#xff0c;构成了一个帧。接收端在收到物理层上交的比特流后…

Linux Shell 脚本编程基础知识篇—awk的条件判断(3)

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周五了&#xff0c;又是一周过去了&#x1f606; 本文是有关Linux shell脚本编程的awk命令的条件语句&#xff0c;后续我会不断增加相关内容 ~~ 回顾:【awk字符串函数和内置变量】 更多Linux 相关内容请点击&#x1f449;【Li…

小程序学习07—— uniapp组件通信props和$emit和插槽语法

目录 一 父组件向子组件传递消息 1.1 props &#xff08;a&#xff09;传递静态或动态的 Prop &#xff08;b&#xff09;单向数据流 二 子组件通知父组件 2.1 $emit &#xff08;a&#xff09;定义自定义事件 &#xff08;b&#xff09;绑定自定义事件 三 插槽语法…

【深度学习进阶】基于CNN的猫狗图片分类项目

介绍 基于卷积神经网络&#xff08;CNN&#xff09;的猫狗图片分类项目是机器学习领域中的一种常见任务&#xff0c;它涉及图像处理和深度学习技术。以下是该项目的技术点和流程介绍&#xff1a; 技术点 卷积神经网络 (CNN): CNN 是一种专门用于处理具有类似网格结构的数据的…

【pytorch-lightning】架构一览

pytorch-lightning是基于pytorch的一个套壳项目&#xff0c;适配pytorch的版本同步更新速度很快。 它将训练的几个主要流程模块化&#xff0c;减少重复工作&#xff0c;同时让支持分布式训练&#xff0c;不同平台的训练迁移变得更加简单。 官网链接

AWS K8s 部署架构

Amazon Web Services&#xff08;AWS&#xff09;提供了一种简化的Kubernetes&#xff08;K8s&#xff09;部署架构&#xff0c;使得在云环境中管理和扩展容器化应用变得更加容易。这个架构的核心是AWS EKS&#xff08;Elastic Kubernetes Service&#xff09;&#xff0c;它是…

【Vue】vue项目中命名规范(结合上一篇项目结构)

组件命名规范&#xff1a; 多单词命名&#xff1a; 避免使用单个单词命名组件&#xff0c;因为这可能会导致命名冲突。相反&#xff0c;应该使用描述性的多单词命名&#xff0c;如 UserProfile、SettingsPanel 等。 使用帕斯卡命名法&#xff1a; 组件名称应该以大写字母开头&…

node.js之---事件循环机制

事件循环机制 Node.js 事件循环机制&#xff08;Event Loop&#xff09;是其核心特性之一&#xff0c;它使得 Node.js 能够高效地处理大量并发的 I/O 操作。Node.js 基于 非阻塞 I/O&#xff0c;使用事件驱动的模型来实现异步编程。事件循环是 Node.js 实现异步编程的基础&…

信息科技伦理与道德1:绪论

1 问题描述 1.1 信息科技的进步给人类生活带来的是什么呢&#xff1f; 功能&#xff1f;智能&#xff1f;陪伴&#xff1f;乐趣&#xff1f;幸福&#xff1f; 基于GPT-3的对话Demo DeepFake 深伪技术&#xff1a;通过神经网络技术进行大样本学习&#xff0c;将个人的声音、面…

uniapp 自定义类微信支付键盘 (微信小程序)

效果图 代码: <view class"popups popupsB"><view class"appreciatePrice"><view class"appreciatePriceTitle">赞赏金额</view><view class"appreciatePriceInput flex ac">&#xffe5;<input typ…

电子电气架构 --- 中央处理器HPC及软件架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…

大模型 LangChain 开发框架:Runable 与 LCEL 初探

大模型 LangChain 开发框架&#xff1a;Runable 与 LCEL 初探 一、引言 在大模型开发领域&#xff0c;LangChain 作为一款强大的开发框架&#xff0c;为开发者提供了丰富的工具和功能。其中&#xff0c;Runnable 接口和 LangChain 表达式语言&#xff08;LCEL&#xff09;是构…

Flash Attention V3使用

Flash Attention V3 概述 Flash Attention 是一种针对 Transformer 模型中注意力机制的优化实现&#xff0c;旨在提高计算效率和内存利用率。随着大模型的普及&#xff0c;Flash Attention V3 在 H100 GPU 上实现了显著的性能提升&#xff0c;相比于前一版本&#xff0c;V3 通…