【C语言】函数相关选择题


前言

关于函数相关的选择题。


题目一:

C语言规定,在一个源程序中,main函数的位置( )

A .必须在最开始

B .必须在库函数的后面

C .可以任意

D .必须在最后

题解:选择C。

  • main函数为C语言中整个工程的程序入口,对于定义位置是没有要求的。
  • main函数有且只有一个,当运行程序时,编译器会自动进行扫描,找到main函数,进入main函数,开始执行代码。

题目二:

关于C语言函数描述正确的是:( )

A .函数必须有参数和返回值

B .函数的实参只能是变量

C .库函数的使用必须要包含对应的头文件

D .有了库函数就不需要自定函数了

题解:选择C。

  • 选项A的错因。C语言中函数可以没有参数和返回值,当没有参数没有返回值时,称为无参无返回值函数,这是C语言允许的,但要注意,函数不能没有函数名。
  • 选项B的错因。C语言中函数的实参可以时变量、常量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。也就是说,当实参为表达式、函数之类的,必须要确认清楚是否有确定的值,如函数当成另一个函数的参数时,需要确认清楚该函数是否有返回值。
  • 选项C是正确的。使用库函数必须要包含对应的头文件。
  • 选项D的错因。在C语言中可以分为两类,分别为库函数和自定义函数,库函数由官方提供,自定义函数由自己提供,自定义函数在C语言中占据举足轻重的地位。

题目三:

以下叙述中不正确的是:( )

A .在不同的函数中可以使用相同名字的变量

B .函数中的形式参数是在栈中保存

C .在一个函数内定义的变量只在本函数范围内有效

D .在一个函数内复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)

题解:选择D。

  • 选项A是正确的。不同的函数就相当于不同的作用域,为独立的空间,使用相同名字变量不受影响。
  • 选项B是正确的。函数中的形参相当于该函数作用域内的局部变量,局部变量是放在栈区保存的。
  • 选项C是正确的。函数内定义的变量为该函数内的局部变量,当出了该函数,会自动销毁。
  • 选项D是错误的。函数内中复合语句中定义的变量只在该复合语句内有效,因为在复合语句内定义的变量,相当于该复合语句内的局部变量,局部变量的作用域为局部范围。具体如下列代码:
//函数内复合语句定义的变量只在复合语句内有效
void fun()
{{int a = 10;}printf("%d\n", a);
}
int main()
{fun();return 0;
}


题目四:

以下关于函数设计不正确的说法是:( )

A .函数设计应该追求高内聚低耦合

B .要尽可能多的使用全局变量

C .函数参数不易过多

D .设计函数时,尽量做到谁申请的资源就由谁来释放

高内聚,低耦合的概念:

  • 耦合:每个模块之间相互联系的紧密程度,模块之间联系越紧密,则耦合性越高,模块的独立性就越差!反之同理
  • 内聚:一个模块中各个元素之间的联系的紧密程度,如果各个元素(语句、程序段)之间的联系程度越高,则内聚性越高,即”高内聚“。

题解:选择B。

  • 选项A是正确的。函数设计的目的就是独立封装功能模块,其它模块出差不会影响该模块,并且模块内各个元素之间的联系紧密,更易于代码的维护。
  • 选项B的错因。函数应该遵循谁创建谁销毁,简单来说就是使用完该函数,函数内的元素应该随着函数进行销毁,如果在函数内尽可能多的全局变量,会造成数据混乱,全局变量的值不够明确。全局变量每个方法都可以访问,很难保证数据的正确性和安全性
  • 选项C是正确的。参数越少越好,否则用户在使用时体验不是很好,还得必须将所有参数完全搞明白才可以使用,并且容混淆。
  • 选项D是正确的。谁申请的谁维护谁释放,否则如果交给外部使用者释放,外部使用者可能不知道或者忘记,就会造成资源泄漏。

题目五:

函数调用exec((vl,v2),(v3,v4),v5,v6);中,实参的个数是:( )

A .3

B .4

C .5

D .6

题解:选择B。

  • 函数的实参可以是变量、常量、表达式、函数等等
  • 本题实参中有两个逗号表达式,逗号表达式的原则为从左到右计算,整个逗号表达式的值为最后一个元素。

题目六:

关于实参和形参描述错误的是:( )

A .形参是实参的一份临时拷贝

B .形参是在函数调用的时候才实例化,才开辟内存空间

C .改变形参就是改变实参

D .函数调用如果采用传值调用,改变形参不影响实参

题解:选择C。

  • 选项A是正确的。实参为调用该函数时的程序真实数据,而在调用函数时,系统会自动给该函数创建与实参同类型的临时变量,该变量称为形参,并且形参有自己的内存空间。
  • 选项B是正确的。在函数调用时,会对形参进行实例化,开辟内存空间。
  • 选项C的错因。函数的传参有两种,分别为传值和传址,当进行传值时,形参的改变不会影响实参,当进行传址时,形参的内容存储的是实参的内存地址,指向实参,访问实参地址时,修改数据会影响实参的值,但如果单纯修改形参的内容,即存储的地址,改为其它内存地址,这是不会影响实参的,这种还是相当于传值。
  • 选项D是正确的。函数传参分为传值和传址,传值不会影响实参。

题目七:

能把函数处理结果的2个数据返回给主调函数,在下面的方法中不正确的是:( )

A .return 这2个数

B .形参用数组

C .形参用2个指针

D .用2个全局变量

题解:选择A。

  • 选项A的错因。return语句只能返回1个值。
  • 选项B是正确的。形参为数组时,其实接收的是实参传递过来的数组首元素地址,通过数组首元素地址,可以找到数组内的元素,进行修改,也就相当于将处理好的数据返回给了主调函数。
  • 选项C是正确的。形参用指针来接收主调函数传过来的值,实参传递的地址,属于传址,有了实参数据的地址,就可以访问实参,对数据进行修改。
  • 选项D是正确的。全局变量的作用域为整个工程,那就是说在函数中赋值新的数据时,全局变量的值也在修改,主调函数使用全局变量值时,可以接收到修改值。

题目八:

关于函数调用说法不正确的是:( )

A .函数可以传值调用,传值调用的时候形参是实参的一份临时拷贝

B .函数可以传址调用,传址调用的时候,可以通过形参操作实参

C .函数可以嵌套定义,但是不能嵌套调用

D .函数可以嵌套调用,但是不能嵌套定义

题解:选择C。

  • 选项A是正确的。函数进行传值调用,形参是实参的一份临时拷贝。
  • 选项B是正确的,函数进行传址调用时,形参指向了实参,可以通过形参操作实参。
  • 选项C的错因。函数不可以嵌套定义,可以嵌套调用。
  • 选项D是正确的。函数可以嵌套调用,不可以嵌套定义。

题目九:

在函数调用时,以下说法正确的是:( )

A .函数调用后必须带回返回值

B .实际参数和形式参数可以同名

C .函数间的数据传递不可以使用全局变量

D .主调函数和被调函数总是在同一个文件里

题解:选择B。

  • 选项A的错因。函数可以为无返回类型函数,也就是说可以没有返回值。
  • 选项B是正确的。实参与形参均会开辟空间,互不影响,并且形参的作用域为函数内部,因此实参与形参是可以同名的。
  • 选项C的错因。函数间的数据传递可以使用全局变量,因为全局变量是公共的,作用域为整个工程,谁都可以使用。
  • 选项D的错因。C语言具有模块化开发特性,通常将函数的声明方式在.h头文件中,特意创建一个.c文件用来存放函数的定义(实现),最后在主调函数中包含.h头文件,调用函数定义。

题目十:

关于函数的声明和定义说法正确的是:( )

A .函数的定义必须放在函数的使用之前

B .函数必须保证先声明后使用

C .函数定义在使用之后,也可以不声明

D .函数的声明就是说明函数是怎么实现的

题解:选择B。

  • 选项A的错因。函数的使用有两种情况,情况一为函数已声明,情况二为函数没有声明但函数定义在函数使用之前,因此选项A是片面的,当函数已进行声明,函数的定义就可以不放在函数使用之前。
  • 选项B是正确的。C语言规定,函数必须保证先声明(定义)后使用。
  • 选项C的错因。函数定义在使用之后的前提是函数已声明。
  • 选项D的错因。函数的声明是告诉编译器,有一个有着返回类型 函数名(参数类型);的函数,而说明函数是怎么实现的是函数的定义(实现)。

题目十一:

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

A .2

B .4

C .8

D .16

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

题解:选择D。

  • 对于递归的题目,最好的解决方式是画图
  • 请看图解:


题目十二:

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

A .存在限制条件,当满足这个限制条件的时候,递归便不再继续

B .每次递归调用之后越来越接近这个限制条件

C .递归可以无限递归下去

D .递归层次太深,会出现栈溢出现象

题解:选择C。

  • 选项A是正确的。函数递归存在限制条件,如果不存在限制条件,函数将无限递归,反复调用创建函数,直到程序崩溃,这也是函数递归必须遵循的条件之一。
  • 选项B是正确的。函数递归中,每次递归要越来越接近限制条件,直到递归不再继续,如果不接近限制条件,会导致无限递归,直到程序崩溃,这也是函数递归必须遵循的条件之一。
  • 选项C的错因。递归不可以无限递归下去,函数是存放在栈区的,当进行递归时,每创建一个函数就会从栈顶进入,栈区也是有上限的,当无限递归,栈区存放不下时,就会导致栈溢出情况。
  • 选项D是正确的。递归层次太深时,声明需要调用多次函数,那就会多个函数入栈,这样栈区存储不下时,就会导致栈溢出。


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

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

相关文章

STL优先队列比较器

有两个比较器&#xff0c;在std里面&#xff0c;一个是greater&#xff0c;一个是less&#xff0c;他们都有一个可以指定的模板类型。 #include <bits/stdc.h> using namespace std; struct node {bool operator ()(const string& a, const string& b){return a…

Linux集群部署项目

目录 一&#xff0c;环境准备 1.1.安装MySQL 1.2.安装JDK 1.3.安装TomCat 1.4.安装Nginx 二&#xff0c;部署 2.1.后台服务部署 2.2.Nginx配置负载均衡及静态资源部署 一&#xff0c;环境准备 1.1.安装MySQL 将MySQL的安装包上传至服务器 查看系统中是否存在mariadb&…

X86汇编速成

平时用的电脑都是X86的&#xff0c;但是现在大家都在搞RISC-V&#xff0c;计组也都开始以RISC-V作为示例&#xff0c;所以专门回头来补一下X86的汇编&#xff0c;方便平时使用。 寄存器register X86_64中一共有16个64位的通用寄存器&#xff0c;分别为&#xff1a; RAX, RBX,…

微信小程序开发——实现跳转公众号文章

小程序中要显示公众号的文章&#xff0c;该怎么做? 比如&#xff0c;下面的文章地址&#xff1a; 第一款小程序欢迎体验小程序&#xff0c;如有好的想法和建议请留言&#xff0c;不胜感激&#xff01;https://mp.weixin.qq.com/s?__bizMzI2MjQ4Mzg0NA&mid2247483669&…

ThinkPhp8 框架使用 mysql find_in_set 函数

前言: 使用mysql 存储一些标签时 会使用逗号拼接的存储方法 比如 1,2,3,11 一般情况下 查询 1 可能会用到 like %1% 但这样查询的不够准确 因为11也会被查询到 如果每次都多一个逗号 1,2,3,11, 查询时 like %1,% 这样存储有点不太符合程序设计 解决方案 ----------- 官网…

Go协程池gopool源码解析

1、gopool简介 Repository&#xff1a;https://github.com/bytedance/gopkg/tree/develop/util/gopool gopool is a high-performance goroutine pool which aims to reuse goroutines and limit the number of goroutines. It is an alternative to the go keyword. gopool的…

基于Difussion图像、视频生成综述

2024年大年初七&#xff08;02.16&#xff09;OpenAI 发布视频生成模型 Sora 在各大平台转疯了&#xff0c;和2022年发布ChatGPT3.5时一样的疯狂。在开工第一天&#xff0c;我就去官网上看了 Sora 的技术报告&#xff0c;遗憾的是&#xff0c;在这份技术报告中只披露了一些模型…

memcached集群

一、介绍 memcache本身没有像redis所具备的数据持久化功能&#xff0c;但是可以通过做集群同步的方式&#xff0c;让各memcache服务器的数据进行同步&#xff0c;从而实现数据的一致性&#xff0c;即保证各memcache的数据是一样的&#xff0c;即使有任何一台memcache发生故障&…

2024-04-07 作业

作业要求&#xff1a; 1> 思维导图 2> 自由发挥应用场景实现一个登录窗口界面。 【可以是QQ登录界面、也可以是自己发挥的登录界面】 要求&#xff1a;尽量每行代码都有注释 作业1&#xff1a; 作业2&#xff1a; 运行代码&#xff1a; #include "myqwidget.h&quo…

提高网站安全性,漏洞扫描能带来什么帮助

随着互联网的蓬勃发展&#xff0c;网站已经成为人们获取信息、交流思想、开展业务的重要平台。然而&#xff0c;与之伴随的是日益严重的网络安全问题&#xff0c;包括恶意攻击、数据泄露、隐私侵犯等。 为了保障网站的安全性&#xff0c;提前做好网站的安全检测非常有必要&…

Spring学习笔记:IOC控制反转、AOP面向切面

挺快的&#xff0c;框架这一部分 文章目录 一、Spring概述入门案例导入依赖包在src下写配置文件创建普通类和测试类 二、IOC&#xff08;控制反转&#xff09;2.1 IOC bean 的XML操作&#xff08;创建对象&#xff0c;注入属性2.2 IOC bean 的 注解 操作 三、AOP&#xff08;面…

「每日跟读」英语常用句型公式 第6篇

「每日跟读」英语常用句型公式 第6篇 1. As ___ as possible 越 ___ 越好 As soon as possible (ASAP)(越快越好) As happy as possible (越快乐越好) As prepared as possible (越有准备越好) As much/many as possible (越多越好 *不可数/可数) As early as possible …

STM32一个地址未对齐引起的 HardFault 异常

1. 概述 客户在使用 STM32G070 的时候&#xff0c;KEIL MDK 为编译工具&#xff0c;当编译优化选项设置为Level0 的时候&#xff0c;程序会出现 Hard Fault 异常&#xff0c;而当编译优化选项设置为 Level1 的时候&#xff0c;则程序运行正常。表面上看&#xff0c;这似乎是 K…

云计算(五)—— OpenStack基础环境配置与API使用

OpenStack基础环境配置与API使用 项目实训一 【实训题目】 使用cURL命令获取实例列表 【实训目的】 理解OpenStack的身份认证和API请求流程。 【实训准备】 &#xff08;1&#xff09;复习OpenStack的认证与API请求流程的相关内容。 &#xff08;2&#xff09;熟悉cURL…

mysql慢sql排查与分析

当MySQL遇到慢查询&#xff08;慢SQL&#xff09;时&#xff0c;我们可以通过以下步骤进行排查和优化&#xff1a; 标题开启慢查询日志&#xff1a; 确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。 如果没有开启&#xff0c;可以…

2.SpringBoot利用Thymeleaf实现页面的展示

什么是Thymeleaf&#xff1f; Thymeleaf是一个现代服务器端Java模板引擎&#xff0c;适用于Web和独立环境&#xff0c;能够处理HTML&#xff0c;XML&#xff0c;JavaScript&#xff0c;CSS甚至纯文本。 Thymeleaf的主要目标是提供一种优雅且高度可维护的模板创建方式。为实现这…

css实现更改checkbox的样式;更改checkbox选中后的背景色;更改checkbox选中后的icon

<input class"check-input" type"checkbox"> .check-input {width: 16px;height: 16px;} /* 设置默认的checkbox样式 */input.check-input[type"checkbox"] {-webkit-appearance: none; /* 移除默认样式 */border: 1px solid #999;outl…

Windows系统下安装java开发环境所需的JDK开发工具包

目录 一、JDK开发工具包下载二、安装三、环境变量配置3.1 添加安装包路径3.2 添加lib路径3.3 添加bin目录 四、检查是否安装成功五、总结 一、JDK开发工具包下载 官网地址&#xff1a;JDK下载 打开网址后有多个版本的JDK&#xff0c;学者根据自己电脑需求选择对应版本下载。如…

6.10物联网RK3399项目开发实录-驱动开发之SPI接口的使用(wulianjishu666)

嵌入式实战开发例程&#xff0c;珍贵资料&#xff0c;开发必备&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1149x7q_Yg6Zb3HN6gBBAVA?pwdhs8b SPI 使用 SPI 简介 SPI 是一种高速的&#xff0c;全双工&#xff0c;同步串行通信接口&#xff0c;用于连接微控制器、…

ics-05-攻防世界

题目 点了半天只有设备维护中心能进去 御剑扫一下 找到一个css 没什么用 再点击云平台设备维护中心url发生了变化 设备维护中心http://61.147.171.105:65103/index.php?pageindex试一下php伪协议 php://filter/readconvert.base64-encode/resourceindex.php base64解一下…