5[单选题] 以下叙述中错误的是( )。
A.用户定义的函数中可以没有return语句
B.用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值
C.用户定义的函数中若没有reillnl语句,则应当定义函数为void类型
D.函数的retU/Tl语句中可以没有表达式
参考答案:B
参考解析:本题重点考察函数返回值的相关知识,函数的值只能通过returll语句返回主调函数,在函敦中允许有多个return语句,但每次调用只能有一个return语句t执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。因此B选项正确。
6[单选题] 下述程序的输出结果是( )。
A.4,4B.2,2C.4,5 D.2,4
参考答案:D
参考解析:首先定义了一个指向一维数组b的指针p,一个指向指针p的指针变量q;输出*(p++)是先输出*p,即b[0]的值,再将指针p指向数组的下一个元素b[1];输出**q是输出指针P所指单元的内容。
7[单选题] 有如下程序段:
执行该程序后,x的值为( )。
A.trueB.falseC.0 D.1
参考答案:D
参考解析:在C语言中,当表达式成立时用l表示,不成立时用0表示,即X=(a&&b)&&(c<ˊ B'ˊ)](14&&15)&&(ˊAˊ<'Bˊ)=1 &&1=1,故选择D选项。
8[单选题] 有下列程序:
执行后的结果是( )。
A.输出字符a的ASCⅡ码
B.输出字符C的ASCⅡ码
C.输出字符C
D.程序出错
参考答案:D
参考解析:因为字符数组s[];中的数组名S表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位,因而程序编译时出错。
9[单选题]
程序运行后的输出结果是( )。
A.Qian,f,350,Sun,f,350B.Qiamf,350,Qian,f,350C.Qian,f,350,Sun,m,370D.Zha0,m,290,Sun,m,370
参考答案:A
参考解析:c语言函数参数传递大致分为:
1、值传递过程中。被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
2、地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。结构体中nanle是数组,做实参传递,会退化为指针,因此调用f(),b.nanle发生修改,其他的成员,传递的是拷贝,不会被修改。因此输出Sun,f,350。故答案为A选项。
10[填空题]函数fun()的功能是:逆置数组元素中的值。形参n给出数组中数据的个数。
例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在fun()函数的横线上填入所编写的若干表达式或语句。
试题程序:
参考解析:【1】n/2【2】i【3】a[n-i-1]
【解析】:fun()函数实现的功能是实现数组的逆置。具体步骤通过参数传递,得到数组指针(即数组名)和数组记录大小的变量n,通过这两个参数配置for循环,遍历数组的中间的元素位置,每次循环都将i位置和对应位置结点(i距离0位置等于其距离尾位置的结点)的元素交换,由此实现数组的逆置。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |