C语言习题讲解-第九讲- 常见错误分类等

C语言习题讲解-第九讲- 常见错误分类等

  • 1. C程序常见的错误分类不包含:( )
  • 2. 根据下面递归函数:调用函数 ` Fun(2) ` ,返回值是多少( )
  • 3. 关于递归的描述错误的是:( )
  • 4. 计算斐波那契数
  • 5. 递归实现 n 的 k 次方
  • 6. 计算一个数的每位之和(递归实现)
  • 7. 求阶乘
  • 8. 打印一个数的每一位

1. C程序常见的错误分类不包含:( )

C程序常见的错误分类不包含:()

A.编译错误
B.链接错误
C.栈溢出
D.运行时错误

答案:C

解析:

栈溢出是运行时错误的一种,因此C程序不会将栈溢出错误单独列出来,栈溢出包含在运行时错误中。

因此:选择C

2. 根据下面递归函数:调用函数 Fun(2) ,返回值是多少( )

根据下面递归函数:调用函数Fun(2),返回值是多少( )

int Fun(int n)      
{ if(n==5)   return 2;     else     return 2*Fun(n+1);      
}

A. 2
B. 4
C. 8
D. 16

答案:D

解析:

Fun(2)--->返回16return 2*Fun(3)  2*8=16|__Fun(3):8return 2*Fun(4)  2*4=8|__Fun(4):4return 2*Fun(5) 2*2=4|__Fun(5):2  return 2

因此,选择D

3. 关于递归的描述错误的是:( )

关于递归的描述错误的是:( )

A.存在限制条件,当满足这个限制条件的时候,递归便不再继续
B.每次递归调用之后越来越接近这个限制条件
C.递归可以无限递归下去
D.递归层次太深,会出现栈溢出现象

答案:C

解析:

递归的两个条件:

  1. 将问题转化为其子问题,子问题要与原问题具有相同的解法

  2. 递归的出口

A:正确,限制条件即递归的出口,如果限制条件满足,递归程序就可以退出了

B:正确,因为每次递归,都是将原问题进一步缩小,缩小到限制条件时,就可以往回返,直到第一次递归调用

比如:递归求和

int Sum(int N){if(N == 1)return 1;return Sum(N-1)+N;}

假设:求 Sum(4) 的递归调用过程

Sum(4)<----|       ||       |Sum(3)<----|       ||       |Sum(2)<----|       ||       |Sum(1)-----

C:错误,递归不能无限递归下去,否则会造成死循环和栈溢出

D:正确,因为每次递归,相当于都是一次新的函数调用,而每次函数调用系统必须给该函数划分栈帧空间,内部的递归函数没有退出,上层的递归就不能退出,栈帧就会累积许多块,如果累积超过栈的总大小,就会栈溢出。

4. 计算斐波那契数

递归和非递归分别实现求第n个斐波那契数

例如:

输入:5 输出:5

输入:10, 输出:55

输入:2, 输出:1

参考答案:

/*
思路:
一个问题直接求解时不好求解,如果可以将其划分成其子问题,并且子问题和原问题有相同的解法时,就可以使用递归的方式解决
递归的两个条件:1. 将问题划分成其子问题,要求:子问题要与原问题具有相同的解法2. 递归的出口1                 N < 3              
Fac(N)      Fac(N-1) + Fac(N-2)     N >= 3
*/long long Fac(int N)
{if(N < 3)return 1;return Fac(N-1) + Fac(N-2);
}

5. 递归实现 n 的 k 次方

编写一个函数实现 n 的 k 次方,使用递归实现。

参考答案:

/*
思路:1      K==0
Pow(n,K) = Pow(n, K-1)*n*/
int Pow(int n, int k)
{if(k==0)return 1;else if(k>=1){return n*Pow(n, k-1);}
}

6. 计算一个数的每位之和(递归实现)

写一个递归函数 DigitSum(n) ,输入一个非负整数,返回组成它的数字之和

例如,调用 DigitSum(1729) ,则应该返回 1 + 7 + 2 + 9,它的和是 19

输入:1729,输出:19

参考答案:

/*
思路:n    n < 10
DigiSum(n) = DibiSum(n/10)+n%10   // 前n-1位之和+第N位
*/int DigitSum(int n)//1729
{if(n>9)return DigitSum(n/10)+n%10;elsereturn n;
}

7. 求阶乘

递归和非递归分别实现求 n 的阶乘(不考虑溢出的问题)

参考答案:

/*
Fac(N) = 1*2*3*……*N递归方式实现:1    N <= 1
Fac(N)Fac(N-1)*N    N >= 2
*/long long Fac(int N)
{if(N <= 1)return 1;return Fac(N-1)*N;
}/*
循环方式:从1乘到N即可
*/
long long Fac(int N)
{long long ret = 1;for(int i = 2; i <= N; ++i){ret *= i;}return ret;
}

8. 打印一个数的每一位

递归方式实现打印一个整数的每一位

参考答案:

/*
思路:N   N <= 9
Print(N)Print(N-1), 打印N
*/void print(unsigned int n){if(n>9)print(n/10);printf("%d ", n%10);}

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

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

相关文章

A∗算法(A-star algorithm)一种在路径规划和图搜索中广泛使用的启发式搜索算法

A∗A*A∗算法&#xff08;A-star algorithm&#xff09;是一种在路径规划和图搜索中广泛使用的启发式搜索算法&#xff0c;它结合了Dijkstra算法的广度优先搜索思想和启发式算法的效率优势&#xff0c;能够高效地找到从起点到终点的最短路径。 1. 基本原理 A*算法的核心是通过估…

UniappDay06

1.填写订单-渲染基本信息 静态结构&#xff08;分包&#xff09;封装请求API import { http } from /utils/http import { OrderPreResult } from /types/orderexport const getmemberOrderPreAPI () > {return http<OrderPreResult>({method: GET,url: /member/orde…

论文略读:GINGER: Grounded Information Nugget-Based Generation of Responses

SIGIR 2025用户日益依赖对话助手&#xff08;如 ChatGPT&#xff09;来满足多种信息需求&#xff0c;这些需求包括开放式问题、需要推理的间接回答&#xff0c;以及答案分布在多个段落中的复杂查询RAG试图通过在生成过程中引入检索到的信息来解决这些问题但如何确保回应的透明性…

从内部保护你的网络

想象一下&#xff0c;你是一家高端俱乐部的老板&#xff0c;商务贵宾们聚集在这里分享信息、放松身心。然后假设你雇佣了最顶尖的安保人员——“保镖”——站在门口&#xff0c;确保你准确掌握所有进出的人员&#xff0c;并确保所有人的安全。不妨想象一下丹尼尔克雷格和杜安约…

Redis 中 ZipList 的级联更新问题

ZipList 的结构ZipList 是 Redis 中用于实现 ZSet 的压缩数据结构&#xff0c;其元素采用连续存储方式&#xff0c;具有很高的内存紧凑性。ZipList 结构组成如下&#xff1a;zlbytes&#xff1a;4字节&#xff0c;记录整个ziplist的字节数zltail&#xff1a;4字节&#xff0c;记…

【苍穹外卖项目】Day05

&#x1f4d8;博客主页&#xff1a;程序员葵安 &#x1faf6;感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb; 一、Redis入门 Redis简介 Redis是一个基于内存的 key-value 结构数据库 基于内存存储&#xff0c;读写性能高适合存储热点数据&#xff08;热…

语音识别dolphin 学习笔记

目录 Dolphin简介 Dolphin 中共有 4 个模型&#xff0c;其中 2 个现在可用。 使用demo Dolphin简介 Dolphin 是由 Dataocean AI 和清华大学合作开发的多语言、多任务语音识别模型。它支持东亚、南亚、东南亚和中东的 40 种东方语言&#xff0c;同时支持 22 种汉语方言。该模…

视频生成中如何选择GPU或NPU?

在视频生成中选择GPU还是NPU&#xff0c;核心是根据场景需求、技术约束和成本目标来匹配两者的特性。以下是具体的决策框架和场景化建议&#xff1a; 核心决策依据&#xff1a;先明确你的“视频生成需求” 选择前需回答3个关键问题&#xff1a; 生成目标&#xff1a;视频分辨率…

从豆瓣小组到深度洞察:一个基于Python的舆情分析爬虫实践

文章目录 从豆瓣小组到深度洞察:一个基于Python的舆情分析爬虫实践 摘要 1. 背景 2. 需求分析 3. 技术选型与实现 3.1 总体架构 3.2 核心代码解析 4. 难点分析与解决方案 5. 总结与展望 对爬虫、逆向感兴趣的同学可以查看文章,一对一小班教学:https://blog.csdn.net/weixin_…

RustDesk 使用教程

说明&#xff1a; 使用RustDesk 需要在不同的电脑安装对应系统型号的客户端&#xff0c;然后再去云服务器安装一个服务端即可。 1、到网站下载客户端&#xff1a;https://rustdesk.com/zh-cn/ 两台电脑安装客户端。 2、在云服务器安装服务端 1&#xff09;官网教程&#xff1a;…

【C语言网络编程基础】TCP 服务器详解

在网络通信中&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种可靠、面向连接的协议。一个 TCP 服务器正是基于这种协议&#xff0c;为客户端提供稳定的网络服务。本文将详细介绍 TCP 服务器的基本原理和工作流程。 一、什…

一篇就够!Windows上Docker Desktop安装 + 汉化完整指南(包含解决wsl更新失败方案)

前言 在现代软件开发和人工智能应用中&#xff0c;环境的稳定性和可移植性至关重要。Docker 作为一种轻量级的容器化技术&#xff0c;为开发者提供一致的运行环境&#xff0c;使得软件可以在不同平台上无缝运行&#xff0c;极大地提升了开发和部署的效率。无论是本地开发、测试…

设计模式(二十四)行为型:访问者模式详解

设计模式&#xff08;二十四&#xff09;行为型&#xff1a;访问者模式详解访问者模式&#xff08;Visitor Pattern&#xff09;是 GoF 23 种设计模式中最具争议性但也最强大的行为型模式之一&#xff0c;其核心价值在于将作用于某种数据结构中的各元素的操作分离出来&#xff…

USRP X440 和USRP X410 直接RF采样架构的优势

USRP X440 和USRP X410 直接RF采样架构的优势概述什么是直接RF采样&#xff1f;如何实现直接采样&#xff1f;什么情况下应考虑使用直接RF采样架构&#xff1f;概述 转换器技术每年都在发展。主要半导体公司的模数转换器(ADC)和数模转换器(DAC)的采样速率比十年前的产品快了好…

P4568 [JLOI2011] 飞行路线

P4568 [JLOI2011] 飞行路线 题目描述 Alice 和 Bob 现在要乘飞机旅行&#xff0c;他们选择了一家相对便宜的航空公司。该航空公司一共在 nnn 个城市设有业务&#xff0c;设这些城市分别标记为 000 到 n−1n-1n−1&#xff0c;一共有 mmm 种航线&#xff0c;每种航线连接两个城市…

MySQL 中的聚簇索引和非聚簇索引的区别

MySQL 中的聚簇索引和非聚簇索引的区别 总结性回答 聚簇索引和非聚簇索引的主要区别在于索引的组织方式和数据存储位置。聚簇索引决定了表中数据的物理存储顺序&#xff0c;一个表只能有一个聚簇索引&#xff1b;而非聚簇索引是独立于数据存储的额外结构&#xff0c;一个表可以…

全局异常处理,可以捕捉到过滤器中的异常吗?

全局异常处理,可以捕捉到过滤器中的异常吗? 全局异常处理器(如Spring的@ControllerAdvice+@ExceptionHandler)默认无法直接捕获过滤器(Filter)中抛出的异常,这是由过滤器和Spring MVC的执行顺序及职责边界决定的。具体原因和解决方案如下: 一、为什么全局异常处理器默…

市政道路积水监测系统:守护城市雨天出行安全的 “智慧防线”

市政道路积水监测系统&#xff1a;守护城市雨天出行安全的 “智慧防线”柏峰【BF-DMJS】每逢汛期&#xff0c;强降雨引发的城市道路积水问题&#xff0c;不仅会造成交通拥堵&#xff0c;更可能危及行人和车辆安全&#xff0c;成为困扰城市管理的一大难题。传统的积水监测主要依…

搭建HAProxy高可用负载均衡系统

一、HAProxy简介Haproxy 是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。haproxy优点 1. Haproxy支持两种代理模式 TCP&#xff08;四层&#xff09;和HTTP&#xff08;七层&#xff09;&#x…

GO语言 go get 下载 下来的包存放在哪里

在 Go 中&#xff0c;通过 go get&#xff08;或 Go Modules 下的自动下载&#xff09;获取的第三方包&#xff0c;具体存储位置取决于你是否启用了 Go Modules&#xff08;推荐方式&#xff09;。✅ 1. 如果你使用了 Go Modules&#xff08;Go 1.11 默认开启&#xff09;当前 …