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

您所在的位置:网站首页 如何创建函数选择题及答案 【C语言】函数相关选择题

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

2024-07-09 22:36| 来源: 网络整理| 查看: 265

前言

关于函数相关的选择题。

题目一:

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是正确的。递归层次太深时,声明需要调用多次函数,那就会多个函数入栈,这样栈区存储不下时,就会导致栈溢出。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3