首页 > 编程语言 >南京理工大学C++程序设计基础期末考试上机测试题组3答案详细解析

南京理工大学C++程序设计基础期末考试上机测试题组3答案详细解析

时间:2024-08-22 18:27:05浏览次数:9  
标签:角谷 理工大学 测试题 int long 偶数 C++ 步数 输入

角谷步数(100分)

任意的正整数,比如 5, 我们从它开始,如下规则计算: 如果是偶数,则除以2,如果是奇数,则乘以3再加1。如此循环,最终必会得到“1”! 比如 5 的处理过程是: 5 16 8 4 2 1 一个正整数经过多少步才能变成1, 称为角谷步数。对于5而言,步数也是5;对于1,步数为0。

输入一个整数n(1<n<300)。

输出n的角谷步数

#include <bits/stdc++.h>  // 引入整个标准库
using namespace std;      // 使用标准命名空间,避免在使用标准库函数时加上 std:: 前缀

int main() {
    long long int n, i = 0;  // 声明两个 long long int 类型的变量:n(用于存储输入值)和 i(用于计数步骤)
    
    cin >> n;  // 从标准输入读取一个整数,并赋值给变量 n

    // 当 n 不等于 1 时循环
    while (n != 1) {
        // 检查 n 是否为偶数
        if (n % 2 == 0) {
            n = n / 2;  // 如果是偶数,将 n 除以 2
        } else {
            n = n * 3 + 1;  // 如果是奇数,将 n 乘以 3 然后加 1
        }
        i++;  // 步骤计数器加 1
    }

    cout << i;  // 输出将 n 转换为 1 所需的步骤数
    
    return 0;  // 返回 0,表示程序成功结束
}
  1. 主函数:

    • long long int n, i = 0;: 声明了两个 long long int 类型的变量。n 用来存储输入的整数,i 用来记录步骤的数量。
    • cin >> n;: 从标准输入读取一个整数并赋值给变量 n
  2. 循环:

    • while (n != 1): 当 n 不等于 1 时,循环继续执行。
    • if (n % 2 == 0): 判断 n 是否为偶数。如果是,则执行 n = n / 2
    • else: 如果 

标签:角谷,理工大学,测试题,int,long,偶数,C++,步数,输入
From: https://blog.csdn.net/2301_80700168/article/details/141393437

相关文章

  • C++小程序:1.0 混合运算小程序(原创)
    自编小程序,还有一些困惑,不太稳定,欢迎私信或评论,提供建议、bug和不足之处。代码:#include<bits/stdc++.h>#include<windows.h>#include<ctime>usingnamespacestd;voidclean();stringnandu();voidxunhuan();voidshuju();longlonga,b,c,cishu,xuanze,cf_a,cf_......
  • Visual C++ 下载安装教程(微软常用运行库合集|dll报错必装)
    前言MicrosoftVisualC++Redistributable(简称MSVC,VB/VC,系统运行库)是Windows操作系统应用程序的基础类型库组件。此版VisualC++运行库组件合集(微软常用运行库合集)由国内封装爱好者@Dreamcast打包而成,整合VisualC++组件安装包运行库所有版本,提供图形安装界面,可自选更新VC++版......
  • [C++]括号使用小技巧
    1.前言  对于一般的赋值语法,例如inta=0;  但你知道吗?使用括号可以同时写很多类型,编译器一般默认括号内最后一个类型为赋值类型,例如//编译器会选择最后一位进行赋值inta=(100,200,300,0);  此时,a的值就是0。2.改变函数返回值  有如下三个函数,返回值类型分别......
  • C++ SPFA算法解析
    前言将了解C++求最短路中SPFA的算法SPFASPFA的一些说明SPFA:适用于权值有负值,且没有负圈的图的单源最短路径,论文中的复杂度O(kE),k为每个节点进入Queue的次数,且k一般<=2,但此处的复杂度证明是有问题的,其实SPFA的最坏情况应该是O(VE).!引例:输入格式给出一个有向图,请输出从......
  • C++ 中几种类型转换
    C++中常用的类型除了隐式转换,还有显示转换,如:static_cast,dynamic_cast,const_cast,reinterpret_cast。其中隐式转换如常见的double、int、bool、float等类型之间的转换。显示转换的用法具体如下:一、static_cast:静态转换使用条件:(1)用于不同类型之间的转换,相当于隐式转换......
  • C++版的Minecraft
    非常垃圾的c++版Mc.#include<bits/stdc++.h>#include<windows.h>#include<conio.h>usingnamespacestd;typedefstructFrame{COORDposition[2];}Frame;voidColor(inta){//白if(a==0)SetConsoleTextAttribute(GetStdHandle(STD_O......
  • 【C++】定义类型别名的三种方式及其优缺点:typedef,#define 和 using
    引言类型别名是一种给已存在的类型创建一个新名字的方式。这个新的名字(别名)和原类型在语义上是完全相等的,可以在任何原类型可以使用的地方使用。类型别名并不创建一个新的类型,只是为了提高代码的可读性和可维护性。在C++中,可以使用typedef,#define或者using来定义别名。每......
  • C++(typename)
    目录1.指定依赖于模板参数的类型2.定义嵌套依赖类型3.关键点:4.示例:5.需要注意的地方:总结:在C++中,typename是一个关键字,通常用于模板编程。它主要用于以下两种场景:1.指定依赖于模板参数的类型当你在模板中使用依赖于模板参数的类型时,C++编译器有时无法确定你是否指的是......
  • 【C++】类和对象(上)
    前言:上一章讲到C++入门的基础知识,是为了增加对C++的了解,为了更好的学习接下来的内容,本章讲到类和对象(上)。类是一种抽象的数据类型,它定义了一组具有相同属性和行为的对象的模板。[!NOTE]问题:C语言和C++语言的主要区别?C语言是面向过程的语言,C++是面向对象的语言。C语......
  • 关于C++函数返回值的拷贝优化问题
    在传统C++程序中,如果函数的返回值是一个对象的话,可能需要对函数中的局部对象进行拷贝。如果该对象很大的话,则程序的效率会降低。在C++11以后,出现的移动语义(MoveSemantic)及拷贝优化(CopyElision)都是解决这个问题的方法。本文试图以一个最简单的例子来说明这个问题。案例下面来看......