第一题
1、以下对C语言函数的有关描述中,正确的有( )【多选】
A: 在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体
B: 函数的实参和形参可以是相同的名字
C: 在main()中定义的变量都可以在其它被调函数中直接使用
D: 在C程序中,函数调用不能出现在表达式语句中
答案及解析 AB
C:在main中定义的变量不可以在其他被调函数中直接使用,因为我们知道自定义函数的变量是出了作用域就自动销毁,所以main函数也不例外,因为main也是一个函数,出了它的作用域也会被销毁;所以main函数和其他函数是平行关系;
D:函数调用可以出现在表达式语句中,比如int a = Add(1,2);
第二题
2、在C语言中,以下正确的说法是( )
A: 实参和与其对应的形参各占用独立的存储单元
B: 实参和与其对应的形参共占用一个存储单元
C: 只有当实参和与其对应的形参同名时才共占用存储单元
D: 形参是虚拟的,不占用存储单元
答案及解析 A
首先形参是实参的临时拷贝,都是占用的独立的空间;
第三题
3、在上下文及头文件均正常的情况下,下列代码的输出是( )(注: print 已经声明过)
#include <stdio.h> void print(char *s) { if(*s) { print(++s); printf("%c", *s); } } int main() { char str[] = "Geneius"; print(str); return 0; }
A: \0suiene
B: neius
C: run-time error
D: suieneG
答案及解析 A
这个其实属于函数的递归,但是需要注意的是这里是前置++;
我们递归到最深处是*s = '\0'
之后再往回走,但是此时*s还是\0,所以这个打印函数的功能就是逆序打印字符串中每个字符的前一个字符,所以打印的就是A
第四题
4、对于函数 void f(int x); ,下面调用正确的是( )
A: int y=f(9);
B: f(9);
C: f(f(9));
D: x=f();
答案及解析 B
本函数没有返回值,所以无法给变量赋值
本函数有int类型的形参,所以必须传int类型的实参
第五题
5、给定 fun 函数如下,那么 fun(10) 的输出结果是( )
1. intint fun(int x) { return (x==1) ? 1 : (x + fun(x-1)); }
A: 0
B: 10
C: 55
D: 3628800
答案及解析 C
这个也属于一个递归函数,还用到了条件表达式;
条件表达式:条件成立输出?后面的,不成立输出:后面