【c语言函数精选题】

embedded/2025/3/6 8:24:49/

c语言函数精选题

  • 一、易错概念题
    • 1.1💡建立函数的目的
    • 1.2💡函数的定义
    • 1.3💡return语句
    • 1.4💡函数的参数
    • 1.5💡复合语句声明变量
  • 二、代码填空题
    • 2.1💡四舍五入
    • 2.2💡二分法求方程根
    • 2.3💡输出菱形
    • 2.4💡求三个数的最小公倍数
    • 2.4💡两个整数最大公约数

🔍计算机二级,考研复试,期末复习…
在这里插入图片描述

一、易错概念题

1.1💡建立函数的目的

在这里插入图片描述

A 选项:函数调用本身会有一定的开销,比如参数传递、栈操作等,在某些情况下甚至可能降低程序执行效率,建立函数的主要目的不是提高执行效率,该选项错误。
B 选项:将程序中实现特定功能的代码封装成函数,使程序结构更加清晰,每个函数完成一个独立的功能,就像一个个模块,方便理解和维护,从而提高了程序的可读性,该选项正确。
C 选项:虽然函数可以复用代码,但在实际程序中,函数定义和调用的相关代码也会占用一定篇幅,不一定能减少程序篇幅,该选项错误。
D 选项:函数只是程序逻辑结构的一种组织方式,对程序文件所占内存大小没有直接的减少作用,程序文件大小主要和代码量、编译后的目标格式等因素有关,该选项错误。
答案B

建立函数的目的:
提高可读性和可维护性 实现代码复用 模块化编程 增强程序逻辑性


1.2💡函数的定义

在这里插入图片描述

A 选项:double fun(int x, int y) ,这是一个标准的函数定义形式,返回值类型为double,函数名为fun,形参列表中包含两个int类型的参数x和y,符合 C 语言函数定义规则,该选项正确。
B 选项:double fun(int x;int y) ,在形参列表中,参数之间应该用逗号分隔,而不是分号,该选项错误。
C 选项:double fun(int x, int y); ,函数声明末尾需要加分号,但函数定义末尾不能加分号,该选项错误。
D 选项:double fun(int x, y); ,第二个参数y没有指定类型,不符合函数定义中形参需明确类型的要求,该选项错误。
答案A

声明有分号,定义无分号!!!


1.3💡return语句

在这里插入图片描述

A 选项:如果函数的返回值类型不是void ,即使函数中没有return语句,它依然有返回值,只是这个返回值是不确定的,所以该选项错误。
B 选项:函数不会返回若干个系统默认值,没有这样的规则,该选项错误。
C 选项:没有return语句,函数无法按照用户期望返回特定值,因为函数执行结束后,其返回值区域的值是不确定的,该选项错误。
D 选项:当函数返回值类型不是void且没有return语句时,函数会返回一个不确定的值,这是因为函数结束时,其返回值所在的内存区域未被正确赋值,该选项正确。
答案 D

再学一个知识:在早期的 C 语言(如 C89 标准)中,当函数值类型缺省定义时,该函数值隐含的类型是int型。

1.4💡函数的参数

在这里插入图片描述

A 选项:在 C 语言中,函数调用时,实参可以是常量(如5 、'a’等)、变量(已定义的合法变量)或表达式(如3 + 5 、a * b等),该选项正确。
B 选项:形参是在函数定义时用于接收实参传递过来的值的参数,它只能是变量,不能是常量或表达式。常量没有存储地址,无法接收实参传递的数据,表达式也不具备接收数据的功能,所以该选项错误。
C 选项:实参可以为任意类型,只要在调用函数时的类型匹配正确即可,比如int 、float 、char 、指针类型等,该选项正确。
D 选项:为了保证数据传递的正确性,形参应与其对应的实参类型一致(或存在合理的类型转换关系),否则可能导致数据错误或程序运行异常,该选项正确。
答案B

实参多样常变表,类型任意皆可行。
形参只能是变量,类型要与实参应 。


1.5💡复合语句声明变量

在这里插入图片描述

在 C 语言中,在函数的复合语句(通常由花括号 {} 括起来)中定义的变量,其作用域仅限于该复合语句内部。当程序执行离开这个复合语句时,该变量的生命周期结束,不能在复合语句之外被访问,所以该变量只在该复合语句中有效,该选项正确。
答案A

普通变量的生存空间就是那个大括号{}!


二、代码填空题

2.1💡四舍五入

在这里插入图片描述

对于【1】处:
题目要求对value中的值进行四舍五入计算,在 C 语言中,可以使用(int)(value + 0.5)来实现对浮点数value的四舍五入并转换为整数,所以【1】处应填(int)(value + 0.5) 。
对于【2】处:
需要判断计算后的值val与ponse是否相等,若相等则显示"Well done!!",所以判断条件应该是val == ponse,故【2】处应填val == ponse。

2.2💡二分法求方程根

在这里插入图片描述

【1】 f( r) * f(n)<0:
在二分法求根过程中,每次取区间[m, n]的中点r=(m + n)/2 。判断f( r)与f(n)的乘积的符号是为了确定根所在的区间。
若f( r)* f(n)<0,根据零点存在定理(如果函数y = f(x)在区间[a, b]上的图象是连续不断的一条曲线,并且有f(a)·f(b)<0,那么函数y = f(x)在区间(a, b)内有零点),可知根在区间[r, n]内,此时应将r赋值给m,即m = r,来缩小根所在的区间范围。
【2】 n - m<0.001:
这里n - m表示当前根所在区间的长度。题目要求绝对误差不超过0.001,当区间长度小于0.001时,就认为找到了满足精度要求的近似根,此时可以跳出循环 。

二分法求方程根的基本思想是:对于区间[m, n]上连续不断且f(m) * f(n) < 0的函数y = f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值。

2.3💡输出菱形

在这里插入图片描述
在这里插入图片描述

【1】处:
观察输出图形可知,每一行的数量是有规律变化的。当i = 0时,第一行有1个;i = 1时,第二行有3个* ;i = 2时,第三行有5个* 。可以总结出规律,第i行*的数量为2 * i + 1。所以此处应填2 * i + 1。
【2】处:
在main函数中,第一个for循环for(i = 0; i < 3; i++) 是用于控制上半部分图形的输出。要输出对应的图形,需要调用函数a,所以此处应填a(i)。
【3】处:
第二个for循环for(i = 3; i >= 0; i–) 是用于控制下半部分图形的输出,同样需要调用函数a来输出对应的图形,所以此处应填a(i)。

2.4💡求三个数的最小公倍数

在这里插入图片描述
在这里插入图片描述

【1】处:
在max函数中,其功能是找出三个数x、y、z中的最大值。已经判断了x是否为最大值,接下来要判断y是否为最大值,条件应该是y > x && y > z,所以此处应填y > x && y > z。
【2】处:
在main函数中,通过不断让x0(三个数中的最大值)乘以i得到一个新的数j,然后判断j是否能同时被输入的三个数x1、x2、x3整除,如果能整除,那么j就是这三个数的最小公倍数,此时可以跳出循环。判断整除可以使用取余运算,条件为j % x1 == 0 && j % x2 == 0 && j % x3 == 0,所以此处应填j % x1 == 0 && j % x2 == 0 && j % x3 == 0。

三个数最小公倍数求解思路:
找出最大值:
max函数通过一系列条件判断找出输入的三个数x、y、z中的最大值。
寻找最小公倍数:
利用一个无限循环while(1) ,从i = 1开始,让最大值x0乘以i得到j(即j = x0 * i)。
然后通过判断j能否同时被原来的三个数x1、x2、x3整除(即【2】处的条件j % x1 == 0 && j % x2 == 0 && j % x3 == 0)。如果能整除,说明j是这三个数的公倍数,并且由于是从i = 1逐步递增寻找,找到的第一个满足条件的j就是最小公倍数,此时跳出循环。如果不能整除,则i自增 1(i = i + 1),继续寻找下一个可能的公倍数。

2.4💡两个整数最大公约数

在这里插入图片描述

【1】处:
该函数使用辗转相除法求最大公约数,在进行辗转相除之前,需要保证num1是较大的数,num2是较小的数。如果num1小于num2,就需要交换它们的值。所以此处应填<。
【2】处:
辗转相除法的核心是用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是 0 为止。此时的除数就是两个数的最大公约数。在循环中,当余数不为 0 时,就继续进行辗转相除操作,所以循环条件应该是b != 0。

辗转相除法求最大公约数!


http://www.ppmy.cn/embedded/170437.html

相关文章

电子制造中塑胶件测量困境破解:一体化测量方案登场

在电子制造领域&#xff0c;塑胶件广泛应用于电子产品的外壳、内部结构件等关键部位。从智能手机轻薄的外壳&#xff0c;到笔记本电脑精密的散热模组框架&#xff0c;塑胶件的质量直接关系到电子产品的性能、外观以及用户体验。而在塑胶件生产流程里&#xff0c;完成倒模后的尺…

神经网络|(十一)|神经元和神经网络

【1】引言 前序已经了解了基本的神经元知识&#xff0c;相关文章链接为&#xff1a; 神经网络|(一)加权平均法&#xff0c;感知机和神经元-CSDN博客 神经网络|(二)sigmoid神经元函数_sigmoid函数绘制-CSDN博客 神经网络|(三)线性回归基础知识-CSDN博客 把不同的神经元通过…

MySQL零基础教程16—表连接进阶

复习表别名 之前已经学习过&#xff0c;查询的时候可以使用as来对检索的列进行重命名&#xff0c;这样可以让sql更加简介&#xff0c;增强易读性&#xff08;as可以省略&#xff09; 此外&#xff0c;使用表别名还可以支持在一条select语句中&#xff0c;一个表是被多次使用 …

解决最长无重复子串问题

在编程面试中&#xff0c;字符串处理常常是考察算法能力的重要部分。今天&#xff0c;我们将探讨一个经典问题——最长无重复子串问题&#xff0c;并给出 Python 代码实现。 问题描述 给定一个字符串 s&#xff0c;你需要找到其中最长的无重复字符的子串&#xff0c;并返回它…

PyTorch :梯度详解

PyTorch 中的 torch.Tensor 梯度详解 PyTorch 是一个广泛使用的深度学习框架&#xff0c;它以其动态计算图和强大的自动微分&#xff08;Autograd&#xff09;机制而闻名。在训练神经网络时&#xff0c;梯度计算是反向传播算法的核心。 目录 Tensor 与 requires_grad 属性动态…

office或者word排版中,复制/黏贴进来文字不会自动换行,如何处理?

李升伟 整理 一、思考与分析 在Office或Word中复制粘贴文字时&#xff0c;文字不会自动换行&#xff0c;需要处理这个问题。首先&#xff0c;我得回想一下常见的原因和解决方法。可能的情况有很多&#xff0c;比如文本带有硬回车、段落格式设置问题&#xff0c;或者文本框的自…

鸿蒙HarmonyOS-Navagation基本用法

Navagation基本用法 Navigation组件是路由导航的根视图容器&#xff0c;一般作为Page页面的根容器使用&#xff0c;其内部默认包含了标题栏&#xff0c;内容栏和公工具栏&#xff0c;其中内容区默认首页显示导航内容&#xff08;Navigation的子组件&#xff09;或非首页显示&am…

在Windows实现将Docker Desktop安装至非系统盘(2025年3月测试有效)

前提条件&#xff1a; 需要提前安装好WSL2。 一、下载 下载链接&#xff1a;Docker Desktop: The #1 Containerization Tool for Developers | Dockerhttps://www.docker.com/products/docker-desktop/二、安装 默认安装会安装到C盘&#xff08;C:\你的用户名\AppData\Loca…