6[单选题]有以下程序
程序运行后的输出结果是
A.11B.10C.1D.2
参考答案:C
参考解析:本题考查把数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1,选项C正确。
7[单选题] 以下叙述中正确的是
A.if语句只能嵌套一层
B.if子句和else子句中可以是任意的合法的c语句
C.不能在else子句中再嵌套if语句
D.改变if-else语句的缩进格式,会改变程序的执行流程
参考答案:B
参考解析:A选项中,if语句的嵌套没有规定层数;C选项中,可以在else予句中再嵌套if语句;D选项中,改变if—else语句的缩进格式,不会改变程序的执行流程,需要注意if和else的配对问题。因此B选项正确。
8[单选题] 有以下程序:
程序执行后的输出结果是( )。
A.2B.3C.7D.0
参考答案:A
参考解析:因为fun(int x)是一个递归函数,所以主函数中fun(7)经过3次递归调用,其过程可以描述为“fun(7)=7一fun(5)=7一(5一fun(3))=7一(5一(3一fun(1)))=7一(5一(3—3))=7—5=2”,所以最后输出结果为2。因此.A选项正确。
9[单选题] 若有以下函数首部:
int fun(double x[10],int*n)
则下面针对此函数的函数声明语句中正确的是( )。
A.int fun(double,int);
B.int fun(double木,int*);
C.int mn(double*x,int n);
D.int fun(double x,intint*n)
参考答案:B
参考解析:函数声明的一般形式为:“类型说明符被调函数名(类型形参,类型形参,……);”或“类型说明符被调函数名(类型,类型,……);”由于函数首部为int fun(double x[10],int*n),因此B选项正确。
10[单选题]
程序运行后的输出结果是( )。
A.Qian,f,350,Sun,f,350
B.Qiamf,350,Qian,f,350
C.Qian,f,350,Sun,m,370
D.Zha0,m,290,Sun,m,370
参考答案:A
参考解析:c语言函数参数传递大致分为:1、值传递过程中。被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。2、地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。结构体中nanle是数组,做实参传递,会退化为指针,因此调用f(),b.nanle发生修改,其他的成员,传递的是拷贝,不会被修改。因此输出Sun,f,350。故答案为A选项。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |