吉林大学超星MOOC学习通高级语言程序设计 C++ 实验02 分支与循环程序设计(2021级)(2)

2023-11-20

5. 爱因斯坦阶梯

题目编号:Exp02-Basic10,GJBook3-04-15

题目名称:爱因斯坦阶梯

问题描述:设有阶梯,不知其数,但知:每步跨2阶,最后剩1阶;每步跨3阶,最后剩2阶;每步跨5阶,最后剩4阶;每步跨7阶,正好到楼顶。编程序求最少共有多少阶。

输入:无

输出:台阶数目

样例:无。详见输入输出说明。

#include <iostream>

using namespace std;

int main()
{
    int a;

    for (a = 7;;a += 14)
    {
        if ((a % 3 == 2) && (a % 5 == 4))
        {
            cout << a;
            break;
        }
    }

    return 0;

}

 将数学的思想与算法结合将会简化运算

由“每步跨7阶,正好到楼顶”和“每步跨2阶,最后剩1阶”得知,a不仅为7的倍数,而且a一定为奇数,所以我们没必要在for循环中加上(a%2==1)(a为奇数)的条件;

随后应该注意的是,题目要求“编程序求最少共有多少阶”,基于此,我们要在输出第一个a后退出for循环。

6. 嵌套函数

题目编号:Exp02-Basic05

题目名称:嵌套函数

题目描述:编写程序,当x=1.0、2.0、…、20.0时,计算如下函数到5层嵌套。F(x)=1+1/(1+1/(1+1/(1+1/(1+1/x))))
 

输入:一个浮点数表示x的值,输入保证x不为零。

输出:一个浮点数F(x)的值,保留小数点后3位。


样例:

1
1.625

看到有的同学直接把这个嵌套函数复制进代码然后打印输出,个人不是很推荐这种做法(没有对循环结构进行强化,而且治标不治本,如果输出y个嵌套呢?),所以我们还是来写for循环吧

#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    double x = 1.0, y = 1.0;
    cin >> x;

    if (x != 0)
    {
        for (int i = 0;i < 5;i++)
        {
            y = 1 + 1.0 / x;
            x = y;
        }

        cout << fixed << setprecision(3) << y;
    }
    
    return 0;

}

7. 括号统计

题目编号:Exp02-Basic02

题目名称:括号统计

题目描述:编程序,判断给定以字符‘@’结束的字符序列中‘(’与‘)’、‘[’与‘]’、‘{’与‘}’的个数是否相等。

输入:输入一串以字符‘@’结束的字符序列,其间可能含有若干空白字符。

输出:个数不相等的括号(按花括号、方括号、圆括号的顺序);如果三种括号的个数都相等,输出NULL。


样例1:

输入:{a+b*c+(d/e-f]}}@
输出:{}[]()

样例2:

输入:{a  +  b*c+(d/e-f]}@
输出:[]()

#include <iostream>

using namespace std;

int main()
{
    char ch=0;
    int a1 = 0, a2 = 0, b1 = 0, b2 = 0, c1 = 0, c2 = 0;//计数器

    while(ch!='@')
    {
        cin >> ch;
        if (ch == '(') a1++;
        if (ch == ')') a2++;
        if (ch == '[') b1++;
        if (ch == ']') b2++;
        if (ch == '{') c1++;
        if (ch == '}') c2++;

    } 

    if (a1 != a2) cout << "()";
    if (b1 != b2) cout << "[]";
    if (c1 != c2) cout << "{}";
    if((a1==a2)&&(b1==b2)&&(c1==c2)) cout << "NULL";

    return 0;

}

看到上面那段代码,老观众肯定跳起来说:“什么?难道你不再爱for循环了吗?”,哈哈哈,其实不然

while循环对于不知道循环次数的情况时非常好用,这也是for循环的一个小小的缺点

8. (程序题)

题目编号:Exp02-Enhance04,GJBook3-04-14

题目名称:字母矩阵

题目描述:用循环语句控制打印如下图形,其中输出的每个字母占用2个字符宽度(空格在前,字母在后)。

字符图形.jpg

  

输入:无

输出:如上图字母矩阵

说明:请同学们根据字母、位置的规律实现该程序。打表爽一时,考试两行泪~

 闲话少叙,直接上代码

#include <iostream>

using namespace std;

int main()
{
    cout << " A B C D E F G H I" << endl;

    cout << " B C D E F G H I A" << endl;

    cout << " C D E F G H I A B" << endl;

    cout << " D E F G H I A B C" << endl;

    cout << " E F G H I A B C D" << endl;

    cout << " F G H I A B C D E" << endl;

    cout << " E F G H I A B C D" << endl;

    cout << " D E F G H I A B C" << endl;

    cout << " C D E F G H I A B" << endl;

    cout << " B C D E F G H I A" << endl;

    cout << " A B C D E F G H I" << endl;

    return 0;

}

 搞错了,重来!不会真的有同学按照上面那种方式打表吧,不会吧不会吧

那我们还是用循环语句来写吧

#include <iostream>

using namespace std;

int main()
{
    char arr[18] = {'A','B','C','D','E','F','G','H','I','A','B','C','D','E','F','G','H','I' };

    for (int i = 0;i < 6;i++)//行数
    {
        //行的内容
        for (int j = i;j < 9 + i;j++)
        {
            cout << " "<<arr[j];
        }
        cout << endl;
    }

    for (int i = 5;i >0;i--)
    {
        for (int j = i-1;j <i+8;j++)
        {
            cout << " "<<arr[j];
        }
        cout << endl;
    }
    
    return 0;

}

数组的巧妙定义

可以看到,在定义数组时没有选择A到I,而是从A到I再从A到I,哈哈哈哈哈哈哈哈哈

这样做其实是为了避免再写一个循环左移的函数

for循环还是一样,外层定义行,内层定义行的内容

特别注意,输出每一行的内容时,要确保输出9个字符

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

吉林大学超星MOOC学习通高级语言程序设计 C++ 实验02 分支与循环程序设计(2021级)(2) 的相关文章

  • 将复选框添加到 UniformGrid

    我正在尝试将复选框动态添加到 wpf 中的统一网格中 但看起来网格没有为它们分配足够的空间 所以它们都有点互相重叠 这就是我将它们添加到后面的代码中的方法 foreach string folder in subfolders PathCh
  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 指针问题(仅在发布版本中)

    不确定如何描述这一点 但我在这里 由于某种原因 当尝试创建我的游戏的发布版本进行测试时 它的敌人创建方面不起作用 Enemies e level1 3 e level1 0 Enemies sdlLib 500 2 3 128 250 32
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 指针减法混乱

    当我们从另一个指针中减去一个指针时 差值不等于它们相距多少字节 而是等于它们相距多少个整数 如果指向整数 为什么这样 这个想法是你指向内存块 06 07 08 09 10 11 mem 18 24 17 53 7 14 data 如果你有i
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • C++ fmt 库,仅使用格式说明符格式化单个参数

    使用 C fmt 库 并给定一个裸格式说明符 有没有办法使用它来格式化单个参数 example std string str magic format 2f 1 23 current method template
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问

随机推荐

  • python教程05-算术运算符的基本使用、赋值运算符的使用、比较运算符的使用、逻辑运算符的使用

    python教程 小白入门 2020 7 18 学习目标 文章目录 python教程 小白入门 2020 7 18 P31 算术运算符的基本使用 P32 字符串里的算术运算符 P33 赋值运算符的使用 P34 赋值运算符的特殊场景 P35
  • 通过python程序调取摄像头画面

    目录 1 方法 2 演示代码 3 总结 1 方法 想要调取摄像头画面有这么几个前提 需要使用网络摄像头并且支持RTSP协议 摄像头要和你的电脑在同一个局域网下 需要知道摄像头的账号 密码 IP地址 RTSP协议是一种网络传输协议 不同的摄像
  • Java8中将list转换为用逗号隔开的字符串的几种方法

    1 使用谷歌的Joiner转换 引用guava包 1 public static
  • Go语言包管理(一)

    Go语言中的包 我们在使用其他语言 比如Java Python 都有类似包的概念 Go也不例外 其核心思想即为分组和模块化 人的大脑对庞大和复杂的事情很难掌控 可以对其采用分而治之的策略 使其模块化 从而更容易管理 如下是标准库中net包的
  • C++中的头文件和源文件的学习

    文章来源 博客园http www cnblogs com lidabo archive 2012 04 17 2454568 html 一 C 编译模式重点内容 通常 在一个C 程序中 只包含两类文件 cpp文件和 h文件 其中 cpp文件
  • Nvidia Apex安装与简单使用

    降低训练精度提高batch大小 512 512的图片在8G的显存上batch只能为1 2 使用了apex后可以增大到10 只支持pytorch 官网地址 NVIDIA apex 官方说支持Ubuntu系统 Windows只是实验性的 但是我
  • 这些mysql基础命令、基础知识还记得吗?(面试,学习,复习都可以)一万三千字总结

    mysql知识清单 详细 互联网通信 一 什么是互联网通信 二 互联网通信角色 三 通信模型 MySql关系型数据库服务器 一 介绍 二 名词解释 三 数据库服务器分类 四 卸载mysql服务器 五 基本信息 六 MySql服务器配置 七
  • Linux 桌面应用程序

    调研 要在Linux下开发具有图形界面的桌面应用程序 我们有许多选择 当然 除了语言方面的考虑外 我们更多的是考虑窗口部件工具箱 以前称为控件库或组件库 的选择 这将在很大程度上影响我们的开发效率 如果考虑到跨平台应用 选择Java的Swi
  • php array_diff 二位数组,PHP比较二维数组,求大神赐教

    一个参与活动名单的二维数组 arr1 array array name gt 张三 phone gt 1354459845 address gt 一街5号 array name gt 李四 phone gt 1323439845 addre
  • eclipse导入项目,项目名出现红叉的情况

    今天用eclipse导入同事发给我的一个项目之后 项目名称上面出现红叉 但是其他地方都没有红叉 仅仅是在项目名称上面有红叉 于是上网查了查资料记下来 1 导入项目之前 请确认工作空间编码已设置为utf 8 window gt Prefere
  • 想写一个安全服务工程师的培训教材或者手册

    最近有个朋友搞了个公司 打算找人接安服项目 让我找点安全培训的教材 看了一大圈的书籍目录感觉都比较片面 或者专注一个方面 对于一些几乎0基础的应届生或实习生来说不太能够在几个月时间内上手项目 csdn 知乎和百度上其他类似网站的0基础培训思
  • 【Shell牛客刷题系列】SHELL2 打印文件的最后5行:优雅的解决方案~

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 首先学习用于查看文件尾部内容的tail命令 然后给
  • iPhone: There is no SDK with the name or path iphoneos XXX

    for ever 2010 10 25 环境 MAC OS 10 6 4 老的iPhone 项目 使用最新的 XCode 3 2进行编译 报错 iPhone There is no SDK with the name or path iph
  • vue中组件的划分(重点)

    vue中组件的划分 重点 组件的职能划分 如果要将 Vue 组件按照职能划分 我们可以将其分为两种类型 容器组件和展示组件 容器组件和展示组件的概念来自于 Redux 文档 那么首先什么是容器组件呢 顾名思义 它是一个容器性质的组件 我们可
  • 如何在ubuntu安装powershell

    在Ubuntu上安装PowerShell可以通过以下步骤来完成 1 安装依赖软件 可以使用以下命令安装所需的依赖软件 sudo apt get install curl libunwind8 gettext apt transport ht
  • 使用postman怎么都访问不到项目,也不报错

    使用postman怎么都访问不到项目 也不报错 可能问题1 本地路径没有对应你访问的访问路径 在你的C盘下面的C Windows System32 drivers etc这个路径下找到host文件 你127 0 0 1 对应的是什么路径 你
  • 设计模式(不懂)

    面试中经常问到设计模式 我才对这个东西了解了一下 才发现他是没有开发的新大陆 是oo设计的更高级别 能把设计模式搞懂 那oo你就搞的差不多了 随便看了还是很有意思的 虽然不怎么懂 百科名片 相关书籍 设计模式 Design pattern
  • 在 spawn 的子进程中保持命令行颜色

    本文首发于我的博客 转载请注明出处 https kohpoll github io blo 最近在用子进程运行 gulpfile js 的时候发现终端上的颜色全部没有了 很是奇怪 经过一些研究 最终解决了问题 同时也总结了一些相关知识 希望
  • 锋利的jQuery(五)--jQuery对表单、表格的操作及更多应用

    5 1表单应用 一个表单有3个基本组成部分 1 表单标签 包含处理表单数据所用的服务器端程序URL以及数据提交到服务器的方法 2 表单域 包含文本框 密码框 隐藏域 多行文本框 复选框 单选框 下拉选择框和文件上传框等 3 表单按钮 包括提
  • 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验02 分支与循环程序设计(2021级)(2)

    5 爱因斯坦阶梯 题目编号 Exp02 Basic10 GJBook3 04 15 题目名称 爱因斯坦阶梯 问题描述 设有阶梯 不知其数 但知 每步跨2阶 最后剩1阶 每步跨3阶 最后剩2阶 每步跨5阶 最后剩4阶 每步跨7阶 正好到楼顶