pta(浙大第四版)五道经典练习题②

news2024/9/21 13:40:52

目录

①、递归正序输出整数

②、递归逆序整数并返回

③、递归实现十进制转二进制

④、英语单词排序(​编辑)

⑤、输出月份英文名


①、递归正序输出整数

题述:给一个正整数n,请利用递归按顺序输出它的每位数,输出一位数就换一下行

思路:与递归逆序输出整数大差不差,思路转变一下就可以

#include <stdio.h>

void printdigits(int n)
{
    if (n / 10 == 0)
    {
        printf("%d\n", n % 10);
        //当只有一位数的时候,开始输出
    }
    else
    {
        printdigits(n / 10);
        printf("%d\n", n % 10);
        //把这两行代码位置交换一下就会成为逆序输出,否则就是正序输出
        //本题这么写是正序输出

    }
}

int main()
{
    int n;

    scanf("%d", &n);
    printdigits(n);

    return 0;
}

②、递归逆序整数并返回

题述:递归实现逆序输出整数:编写实现对一个整数进行逆序处理的递归函数,函数需要有返回值,其值为逆序后的数据

思路:这道题难就难在你这个函数要返回这个逆序后的数,其次为逆序,正序会了,逆序只要调整一下思路就会了。那么如何返回逆序的数呢?怎么在每次函数调用时保持这个逆序后的数呢?用全局变量!

#include<stdio.h>
#include<math.h>
int temp = 0;//全局变量
int reverse(int n)
{
	int cnt = 0, count = -1;
	int t = n;
	while (t)
	{//求位数会改变原数,所以要用临时数据保存来求位数
		t /= 10;
		count++;
	}
	if (n / 10 == 0)
	{
		temp += n % 10;
	}
	else
	{
		cnt = pow(10, count--);
		temp += cnt * ( n % 10);
		reverse(n / 10);
	}
	return temp;
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	printf("逆序后的数为%d\n", reverse(n));
	return 0;
}

③、递归实现十进制转二进制

题述:输入一个正整数n,设计dectbin函数,利用递归原理将十进制转为二进制

思路:递归终止条件应该是n/2==0为真时,因为正好可以实现逆序输出,然后返回上一个函数调用,再打印n%2,一直递归,直到回到最原始的状态n。函数调用完毕

​
#include <stdio.h>

void dectobin(int n)
{
    if (n / 2 == 0)
    {//函数终止条件,也就是这个10进制分解到最后需要开始输出
     //因为这样正好可以保证是逆序输出的
        printf("%d", n % 2);
        return;
    }
    else
    {
        dectobin(n/2);
        printf("%d", n % 2);
    }
}

int main()
{
    int n;

    scanf("%d", &n);
    dectobin(n);

    return 0;
}

​

④、英语单词排序(

题述: 英语单词排序:输入若干有关颜色的英语单词(单词数小于20,每个单词不超过10个字母),每行一个。以“#”作为输入结束标志,对这些单词按长度从小到大排序后输出。如果长度相同,按照输入的顺序不变。

思路:

1、创建二维数组,因为可以拆成,最多有20个元素的一维数组(因为你最多输入20个单词),其中每个单词最多10个字母,也就是这个一维数组长度设置为10。

2、再创建一个数组,他也是10个长度,因为排大小的时候,这个数组可以临时用来放数据

3、涉及字符串的比较问题,那么就不能用>或<号来直接比较,必须用字符串比较函数strcmp,用冒泡排序完成比较,(通过调用strlen函数比较大小,来决定是否换位置)

#include<stdio.h>
#include<string.h>

int main()
{
	char word[20][10];//等价于20个一维数组,每个数组10个元素
	char temp[10];
	int i = 0, j = 0, k = 0;
	for (i = 0; i < 20; i++)
	{
		gets(word[i]);
		if (strcmp(word[i], "#") == 0)
			break;//到了结束符直接退出就好
	}
	//冒泡排序
	for (j = 0; j < i - 1; j++)
	{
		for (k = 0; k < i - 1 - j; k++)
		{
			if (strlen(word[k]) > strlen(word[k + 1]))
			{//通过长度比较大小,改变word数组中的位置
			//完全不需要再创建一个长度数组
				strcpy(temp, word[k]);
				strcpy(word[k], word[k + 1]);
				strcpy(word[k + 1], temp);
			}
		}
	}
	for (j = 0; j < i; j++)
	{
		printf("%s\n", word[j]);
	}
	return 0;
}

⑤、输出月份英文名

题述:输出月份英文名:输入一个月份,输出对应的英文名称,要求用指针数组表示12个月的英文名称。如果月份不合法,函数直接返回NULL

思路:写一个函数,接收月份。然后通过创建指针数组保存所有的月份,然后返回对应的月份,函数返回类型char*

#include <stdio.h>

char* getmonth(int n)
{
    char* month[13] = {NULL,
  "January",
  "February",
  "March",
  "April",
  "May",
  "June",
  "July",
  "August",
  "September",
  "October",
  "November",
  "December" };
    if (n <= 0 || n > 12)
    {
        return NULL;
    }
    else
    {
        return month[n];
    }
}

int main()
{
    int n;
    char* s;

    scanf("%d", &n);
    s = getmonth(n);
    if (s == NULL) printf("wrong input!\n");
    else printf("%s\n", s);

    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【NovelAI 小说SD批量生成 文生图/视频克隆】环境配置和使用方法

【样品】《谜影之夜》文生图全自动版SD一键成片 操作步骤&环境配置地址&#xff1a; 【NovelAI】月产10000全自动批量原创小说短视频支持文生图和视频克隆 该文章面向购买脚本的付费用户&#xff0c;提供所有问题以及解决办法。使用 notepad 打开对应的文件即可&#xff0c…

深度学习部署(Pytorch+windows)

目录 NVIDA GPU驱动 NVIDA GPU驱动 查看电脑显卡类型&#xff08;电脑——属性——设备管理器——显示适配器&#xff09; 进入NVIDA官方网站&#xff08;官方驱动 | NVIDIA&#xff09;下载对应驱动&#xff0c; 接下来默认安装即可。 安装完成之后&#xff0c;查看自己的…

GitHub项目免费教你提示工程,全中文教学,小白也能懂

转载自 | 量子位 量子位 | 公众号 QbitAI 这个GitHub开源项目&#xff0c;打算手把手教你成为一名提示工程师。 理论与实例结合&#xff0c;浅显易懂&#xff0c;可以免费学习&#xff0c;关键还是中文&#xff01; 如果觉得GitHub界面看起来不方便&#xff0c;还可以到搭建…

文心领航走进大模型时代,从Q1财报看百度价值重估机遇

大模型风头不减&#xff0c;真正的“灵魂选手”在此刻交出了一季度成绩单&#xff0c;让市场看到了“AI巨头”的本色。 北京时间5月16日美股盘前&#xff0c;百度发布了2023Q1财报。财报显示&#xff0c;其营收和利润双双超市场预期&#xff0c;整体经营质量大幅度提高。在经济…

基于卷积的图像分类识别(四):GoogLeNet (V1~V4 Xception)

本专栏介绍基于深度学习进行图像识别的经典和前沿模型&#xff0c;将持续更新&#xff0c;包括不仅限于&#xff1a;AlexNet&#xff0c; ZFNet&#xff0c;VGG&#xff0c;GoogLeNet&#xff0c;ResNet&#xff0c;DenseNet&#xff0c;SENet&#xff0c;MobileNet&#xff0c…

JavaWeb学习-MyBatis-入门

JavaWeb学习-MyBatis-入门 快速入门准备工作配置Mybatis(数据库连接)编写程序mappertest 配置SQL提示JDBC介绍概述案例 数据库连接池概述连接池切换Druid连接池 lombok工具介绍maven坐标案例 来源 快速入门 准备工作 创建SpringBoot工程 数据库表usercreate table user (id …

flume 进阶 自定义source(十)

需求 每隔五秒输出5次数据 pom文件 <dependencies><dependency><groupId>org.apache.flume</groupId><artifactId>flume-ng-core</artifactId><version>1.9.0</version></dependency></dependencies>代码 pac…

NETALAND惊艳上线,平行云助力元宇宙大玩家网易闪亮登场

近日&#xff0c;网易传媒旗下全新的泛娱乐体验空间NETALAND惊艳上线。NETALAND以其近乎于电影质感的场景&#xff0c;趣味的互动模式&#xff0c;流畅、沉浸的交互体验&#xff0c;给营销行业带来了一份新答卷。 NETALAND整合了网易传媒强大的元宇宙技术和丰富的内容生态&…

【Jenkins】新手安装、运行Jenkins(详细教学)

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、…

【c语言】Union共用体

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c语言系列专栏&#xff1a;c语言之路重点知识整合 &#x…

如何将 O2OA 集成到企业微信实现微信办公

O2OA 平台拥有配套的原生开发的安卓和 IOS 移动 APP&#xff0c;可以以自建应用的方式集成到企业微信&#xff0c;同步企业微信的企业通讯录作为本地组织人员架构&#xff0c;并且可以将待办等通知直接推送到企业微信进行消息提醒。本篇主要介绍如何将 O2OA 集成到企业微信实现…

4年外包出来人废了,5次面试全挂....

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;毕业于普通二本院校非计算机专业&#xff0c;18年跨专业入行测试&#xff0c;第一份工作在湖南某软件公司&#xff0c;做了接近4年的外包测试工程师&#xff0c;今年年初&#xff0c;感觉自己不能够再这样下去了&…

开心档之Java 抽象类

Java 抽象类 目录 Java 抽象类 抽象类 Employee.java 文件代码&#xff1a; AbstractDemo.java 文件代码&#xff1a; 继承抽象类 Salary.java 文件代码&#xff1a; AbstractDemo.java 文件代码&#xff1a; 抽象方法 Salary.java 文件代码&#xff1a; 抽象类总结…

2023海外网红营销策略揭秘:打造品牌曝光的7大技巧

随着全球互联网的普及&#xff0c;海外网红营销成为越来越多出海品牌的首选策略之一。然而&#xff0c;要在海外市场成功打造品牌形象并吸引目标受众并不容易。本文Nox聚星将详细介绍几项关键技巧&#xff0c;帮助您在海外市场中成功实施网红营销。 一、深入了解目标市场 在海…

如何避免软件bug?优化你的测试流程和设计用例方法就对啦!

目录 引言 一、测试流程 二、测试用例设计方法 等价类 边界值 场景设计法 判定表 错误推测法 结语 引言 对于大多数软件开发者和测试人员而言&#xff0c;避免出现bug是一项非常重要的任务。但是&#xff0c;在实际的开发过程中&#xff0c;我们经常容易忽略一些细节…

【Spring Boot】Spring Boot配置文件与Spring Boot日志文件

文章目录 1. 什么是Spring Boot&#xff1f;2. 如何创建Spring Boot项目&#xff1f;3. 验证Spring Boot项目的创建3.1 补充添加依赖3.2 代码示例 4. Spring Boot配置文件4.1 配置文件的作用4.2 配置文件的格式4.2.1 properties的语法4.2.2 yml的语法4.2.3 properties与yml的对…

性能测试工具的选购细节

近年来&#xff0c;随着软件技术的不断发展&#xff0c;为了保证软件系统的稳定性、可靠性和高效性&#xff0c;在软件开发过程中越来越多地使用性能测试工具。但是&#xff0c;如何选择一款合适的性能测试工具并不是一件容易的事情。下面是一些性能测试工具的选购细节&#xf…

Python学习笔记 - 探索5种数据类型

Python作为一门易学且功能强大的编程语言&#xff0c;吸引了众多编程爱好者。在学习Python的过程中&#xff0c;了解其数据类型是十分重要的。这里将向大家介绍Python中的五种常见数据类型&#xff0c;分别是&#xff1a;整数、浮点数、字符串、列表和字典&#xff0c;并且将通…

【华为新版模拟器eNSP Lite实验界面一览,赶紧来学习】

eNSP Lite是华为新开发的数据通信领域网络环境模拟软件&#xff0c;用于支持数通领域的考试认证、网络环境模拟和技术学习而开发的新版模拟器。相比于旧版模拟器eNSP的本地部署模式&#xff0c;新版模拟器eNSP Lite基于云端部署的模式使得软件在使用的过程中变得更加灵活&#…

使用Socket技术进行数据传输、传输文件;浏览器访问Socket服务器

文章目录 计算机网络基础IP地址和端口TCP和 UDP Socket技术使用Socket进行数据传输使用Socket传输文件使用浏览器访问Socket服务器 计算机网络基础 利用通信线路和通信设备&#xff0c;将地理位置不同的、功能独立的多台计算机互连起来&#xff0c;以功能完善的网络软件来实现…