C语言PTA练习题(编程求1+3+5+...+n,编程求n的阶乘,爬楼梯,爬楼梯(扩展),猴子吃桃,猴子吃桃(扩展),求算式前n项的和,汉诺塔游戏)

7-1 编程求1+3+5+...+n

输入一个正整数n,编程求1+3+5+...+n

要求:用递归完成。

输入格式:

输入一行,只有一个整数n (1<=n<=9999) 这里n为奇数。

输出格式:

一个正整数,表示结果。

输入样例:

在这里给出一组输入。例如:

9

输出样例:

在这里给出相应的输出。例如:

25

#include<stdio.h>
int digui(int n) {
    if (n == 1) {
        return 1;
    }
    else {
        return digui(n - 2) + n;
    }
}
int main() {
    int n;
    scanf("%d", &n);
    printf("%d\n", digui(n));
    return 0;
}

7-2 编程求n的阶乘

输入一个正整数n,编程求n的阶乘n!。n!=1*2*3*...*n

要求:用递归完成。

输入格式:

输入一行,只有一个整数n (1<=n<=20)。

输出格式:

一行,结果。

输入样例:

在这里给出一组输入。例如:

4

输出样例:

在这里给出相应的输出。例如:

24

#include<stdio.h>
long digui(int n) {
    if (n == 1) {
        return 1;
    }
    else {
        return digui(n-1)*n;
    }
}
int main() {
    int n;
    scanf("%d", &n);
    if(n==0){
        printf("1");
    }else{
            printf("%ld\n", digui(n));
    }

    return 0;
}

7-3 爬楼梯

小明爬楼梯,他可以每步可以走1级或者2级,输入楼梯的级数n,求不同的走法数。

例如:n=3,表示楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级,也可以第一次走两级,第二次走一级,一共3种方法。

要求:用递归完成。

输入格式:

输入一个正整数n,代表楼梯级数,1≤n≤30。

输出格式:

一个正整数,表示一共有多少种不同的走法。

输入样例:

在这里给出一组输入。例如:

5

输出样例:

在这里给出相应的输出。例如:

8
#include<stdio.h>
int digui(int n) {
    if (n == 1) {
        return 1;
    }
    else if (n == 2) {
        return 2;
    }
    else {
        return digui(n-1)+digui(n-2);
    }
}
int main() {
    int n;
    scanf("%d", &n);
    printf("%d\n", digui(n));
    return 0;
}

7-4 爬楼梯(扩展)

小明爬楼梯,他可以每步可以走1级、2级、3级,输入楼梯的级数n,求不同的走法数。

例如:n=3,表示楼梯一共有3级,他可以每次都走一级;或者第一次走一级,第二次走两级;也可以第一次走两级,第二次走一级;还可以一步走3级;一共4种方法。

要求:用递归完成。

输入格式:

输入一个正整数n,代表楼梯级数,1≤n≤30。

输出格式:

一个正整数,表示一共有多少种不同的走法。

输入样例:

在这里给出一组输入。例如:

4

输出样例:

在这里给出相应的输出。例如:

7
#include<stdio.h>
int digui(int n) {
    if (n == 1) {
        return 1;
    }
    else if (n == 2) {
        return 2;
    }
    else if (n == 3) {
        return 4;
    }
    else {
        return digui(n-1)+digui(n-2)+digui(n-3);
    }
}
int main() {
    int n;
    scanf("%d", &n);
    printf("%d\n", digui(n));
    return 0;
}

7-5 猴子吃桃

猴子吃桃子问题:猴子第一天摘下若干个桃子,当即吃了一半还不过瘾,又多吃了一个;第二天又将剩下的桃子吃掉一半又多吃了一个;以后每天早上都吃了前一天剩下的一半零一个。到了第n天想再吃时,见只剩下一个桃子,求第一天共摘了多少个桃子?

要求:用递归实现。

输入格式:

一个整数n(1≤n≤62),表示最后一天第 n 天看到还剩1个桃子。

输出格式:

一个整数,第一天共有多少个桃子

输入样例:

在这里给出一组输入。例如:

10

输出样例:

在这里给出相应的输出。例如:

1534

#include<stdio.h>
long digui(int n) {
    if (n == 1) {
        return 1;
    }
    else {
        return (digui(n-1)+1)*2;
    }
}
int main() {
    int n;
    scanf("%d", &n);
    printf("%ld\n", digui(n));
    return 0;
}

7-6 猴子吃桃(扩展)

猴子第一天摘了X个桃子,当即吃掉了一些桃子,剩下X的平方根个桃子,还不过瘾,又多吃了一个,剩下Y个;第二天又吃掉了一些,剩下Y的平方根个桃子,又多吃一个;以后每天早上都吃到剩下当前的平方根个桃子,再多吃一个。到了第n天想再吃时,见只剩下一个桃子,求第一天共摘了多少个桃子?

要求:用递归完成。

输入格式:

一个整数n(1≤n≤6),表示最后一天第 n 天看到还剩1个桃子。

输出格式:

一个整数,第一天共有多少个桃子

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

25
#include<stdio.h>
long digui(int n) {
    if (n == 1) {
        return 1;
    }
    else {
        return (digui(n-1)+1)* (digui(n - 1) + 1);
    }
}
int main() {
    int n;
    scanf("%d", &n);
    printf("%ld\n", digui(n));
    return 0;
}

7-7 求算式前n项的和

求1+1/2+2/3+3/5+5/8+8/13+13/21……的前n项的和。

要求:用递归完成

输入格式:

第1行:一个整数n(1 <= n <= 30 )。

输出格式:

一行:一个小数,即前n项之和(保留3位小数)。

输入样例:

在这里给出一组输入。例如:

5

输出样例:

在这里给出相应的输出。例如:

3.392

#include<stdio.h>
int main()
{
	int i, n;
	double a = 1, b = 1, c, d, sum = 0;
	scanf("%d", &n);
	if (n >= 1 && n <= 30)
		for (i = 1; i <= n; i++)
		{
			d = a / b;
			sum += d;
			c = a;
			a = b;
			b = c + a;
		}
	printf("%.3f\n", sum);
	return 0;
}

7-8 汉诺塔游戏

汉诺塔(Hanoi Tower)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。面对庞大的数字(移动圆片的次数)18446744073709551615,看来,众僧们耗尽毕生精力也不可能完成金片的移动。

汉诺塔.png

后来,这个传说就演变为汉诺塔游戏:

1.有三根杆子A,B,C。A杆上有若干碟子

2.每次移动一块碟子,小的只能叠在大的上面

3.把所有碟子从A杆全部移到C杆上

经过研究发现,汉诺塔的破解很简单,就是按照移动规则向一个方向移动金片:

如3阶汉诺塔的移动:A→C, A→B, C→B, A→C, B→A, B→C, A→C

输入格式:

一个整数N,表示A柱上有N个碟子(0<n<=10)。

输出格式:

若干行,即移动的最少步骤的每一步(从哪个柱到哪个柱)

最后一行输出最小的移动步数

输入样例:

在这里给出一组输入。例如:

3

输出样例:

在这里给出相应的输出。例如:

A To C
A To B
C To B
A To C
B To A
B To C
A To C
7
#include <stdio.h>
void move(char sour, char dest) {
    printf("%c To %c\n", sour, dest);
}
void towerOfHanoi(int num, char sour, char aux, char dest) {
    if (num == 1) {
        move(sour, dest);
        return;
    }
    towerOfHanoi(num - 1, sour, dest, aux);
    move(sour, dest);
    towerOfHanoi(num - 1, aux, sour, dest);
}

int main() {
    int num;
    scanf("%d", &num);
    towerOfHanoi(num, 'A', 'B', 'C');
    printf("%lld", (1LL << num) - 1);
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用libtorch加载YOLOv8生成的torchscript文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集&#xff0c;使用 LabelMe 工具进行标注&#xff0c;然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件&#xff0c;并自动生成YOLOv8支持的目录结构&#xff0c;包括melon.yaml文件&#xff0c;其内容…

我让gpt4o给我推荐了一千多次书 得到了这些数据

事情是这样的&#xff0c;我们公司不是有个读书小组嘛&#xff0c;但是今年大家都忙于工作&#xff0c;忽视了读书这件事&#xff0c;所以我就想着搞个群机器人&#xff0c;让它明天定时向群里推荐一本书&#xff0c;用来唤起大家对读书的兴趣。但在调试的过程中就发现gpt4o老喜…

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践

基于Vue的前端自定义询问弹框与输入弹框组件的设计与实践 摘要 随着技术的不断进步&#xff0c;前端开发面临越来越多的挑战&#xff0c;其中之一就是如何有效管理复杂的业务逻辑和用户体验。传统的整块应用开发方式在面对频繁的功能变更和用户体验优化时&#xff0c;往往显得…

粤嵌—2024/5/20—三角形最小路径和(✔)

代码实现&#xff1a; int minimumTotal(int **triangle, int triangleSize, int *triangleColSize) {if (triangleSize 1) {return triangle[0][0];}for (int i 1; i < triangleSize; i) {for (int j 0; j < triangleColSize[i]; j) {int x i - 1;int y1 j - 1, y2…

【how2j java应用】

[Log4j] 演示如何使用log4j进行日志输出 1.导入jar包 2.使用Log4j 3.代码说明 LOG4J 配置讲解 在src目录下添加log4j.properties文件 说明 log4j.xml 除了使用log4j.properties&#xff0c;也可以使用xml格式进行配置。 [junit] 通过main方法来进行测试&#xff1a;如果…

《Ai学习笔记》-模型集成部署

后续大多数模型提升速度和精度&#xff1a; 提升速度&#xff1a; -知识蒸馏&#xff0c;以distillBert和tinyBert为代表 -神经网络优化技巧。prune来剪裁多余的网络节点&#xff0c;混合精度&#xff08;fp32和fp26混合来降低计算精度从从而实现速度的提升&#xff09; 提…

OpenCV与PySide6、QT Designer的联合使用

一、一个简单的demo&#xff0c;用QT Designer创建一个QMainWindow&#xff0c;并且放置一个QLabel&#xff0c;用以显示从OpenCV读取到的图像文件。 1、打开QT Designer&#xff0c;新建QMainWindow&#xff0c;放置一个QLabel&#xff0c;命名为label_show&#xff1a; 2、将…

Linux系统命令traceroute详解(语法、选项、原理和实例)

目录 一、traceroute概述 二、语法 1、基本语法 2、命令选项 三、帮助信息 四、示例 1. 使用默认模式&#xff08;ICMP Echo&#xff09;追踪到目标主机 2. 使用UDP模式&#xff08;需要root权限&#xff09;追踪到目标主机 3. 不解析IP地址为主机名&#xff0c;直接显…

Nodejs(文件操作,构建服务器,express,npm)

文章目录 文件操作1.读取文件1&#xff09;步骤2&#xff09;范例 2.写文件1&#xff09;步骤2&#xff09;范例 3.删除文件4.重命名文件夹5删除文件夹 Url1.url.parse()2.url.fomat() Query1.query.parse()2.query.stringfy()3.编码和解码 第三方模块1.nodemailer2.body-parse…

反弹shell详细易懂讲解,看这一篇就够了

文章目录 反弹shell详细易懂讲解&#xff0c;看这一篇就够了一: 基础shell知识什么是shell&#xff0c;bash与shell的区别?通俗解释类型功能常见命令 二: 什么是反弹shell三: 反弹shell类型bash反弹shellNetcat 一句话反弹curl反弹shell正确姿势 wget方式反弹awk反弹 Shellsoc…

Linux环境基础开发工具的使用(yum,vim,gcc/g++,make/Makefile,gdb)

Linux 软件包管理器-yum 什么是软件包及安装方式 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序。 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理…

【InternLM实战营第二期笔记】02:大模型全链路开源体系与趣味demo

文章目录 00 环境设置01 部署一个 chat 小模型02 Lagent 运行 InternLM2-chat-7B03 浦语灵笔2 第二节课程视频与文档&#xff1a; https://www.bilibili.com/video/BV1AH4y1H78d/ https://github.com/InternLM/Tutorial/blob/camp2/helloworld/hello_world.md 视频和文档内容基…

Java进阶学习笔记29——Math、System、Runtime

Math&#xff1a; 代表的是数学&#xff0c;是一个工具类&#xff0c;里面提供的都是对数据进行操作的一些静态方法。 示例代码&#xff1a; package cn.ensourced1_math;public class MathTest {public static void main(String[] args) {// 目标&#xff1a;了解Math类提供…

安全分析[1]之网络协议脆弱性分析

文章目录 威胁网络安全的主要因素计算机网络概述网络体系结构 网络体系结构脆弱性分组交换认证与可追踪性尽力而为匿名与隐私对全球网络基础实施的依赖无尺度网络互联网的级联特性中间盒子 典型网络协议脆弱性IP协议安全性分析IPSec&#xff08;IP Security)IPv6问题 ICMP协议安…

Shell环境变量深入:自定义系统环境变量

Shell环境变量深入&#xff1a;自定义系统环境变量 目标 能够自定义系统级环境变量 全局配置文件/etc/profile应用场景 当前用户进入Shell环境初始化的时候会加载全局配置文件/etc/profile里面的环境变量, 供给所有Shell程序使用 以后只要是所有Shell程序或命令使用的变量…

民国漫画杂志《时代漫画》第23期.PDF

时代漫画23.PDF: https://url03.ctfile.com/f/1779803-1248634922-4eafac?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

Multi-objective reinforcement learning approach for trip recommendation

Multi-objective reinforcement learning approach for trip recommendation A B S T R A C T 行程推荐是一项智能服务&#xff0c;为游客在陌生的城市提供个性化的行程规划。 它旨在构建一系列有序的 POI&#xff0c;在时间和空间限制下最大化用户的旅行体验。 将候选 POI 添…

【C++ 】学习问题及补充

一.自定义类型不初始化直接就赋值&#xff0c;比如string类会怎么样 vectr<string>里已经给每个string对象已经分配好空间&#xff0c;为什么不初始化再赋值会报错 在C中&#xff0c;std::string类是一个动态字符串类&#xff0c;它内部管理着一个字符数组&#xff0c;用…

C++ | Leetcode C++题解之第111题二叉树的最小深度

题目&#xff1a; 题解&#xff1a; class Solution { public:int minDepth(TreeNode *root) {if (root nullptr) {return 0;}queue<pair<TreeNode *, int> > que;que.emplace(root, 1);while (!que.empty()) {TreeNode *node que.front().first;int depth que…

蓝桥杯物联网竞赛_STM32L071_17_DMA收发 不定长DMA接收

前言&#xff1a; 前面已经说过&#xff0c;由于国赛的代码量的增加&#xff0c;cpu在其他代码的时间块会较省赛大大增加&#xff0c;为了减少对cpu的依赖所以学习DMA收发数据 对于串口中断收发来说串口接收数据无法收取不定长数据所以不好用&#xff0c;而DMA有收集不定长数…