欢迎来到天天文库
浏览记录
ID:34058209
大小:80.50 KB
页数:10页
时间:2019-03-03
《c语言习题八参考答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、习题八一、单项选择题1、C语言程序由函数组成。它的()。A)主函数必须在其它函数之前,函数内可以嵌套定义函数B)主函数可以在其它函数之后,函数内不可以嵌套定义函数C)主函数必须在其它函数之前,函数内不可以嵌套定义函数D)主函数必须在其它函数之后,函数内可以嵌套定义函数2、一个C语言程序的基本组成单位是()。A)主程序B)子程序C)函数D)过程3、以下说法中正确的是()。A)C语言程序总是从第一个定义的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分4、已知函数a
2、bc的定义为:voidabc(){......}则函数定义中void的含义是()。A)执行abc后,函数没有返回值B)执行函数abc后,函数不再返回C)执行函数abc后,可以返回任意类型D)以上三个答案全是错误的5、在以下对C语言的描述中,正确的是()。A)在C语言中调用函数时,只能将实参数的值传递给形参,形参的值不能传递给实参B)C语言函数既可以嵌套定义又可以递归调用C)函数必须由返回值,否则不能使用函数D)C语言程序中有定义关系的所有函数都必须放在同一源文件中6、以下叙述中错误的是()。A)在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值B)在C语言中,在定义函数时,
3、实参和对应的形参在类型上只需赋值兼容C)在C语言中,外部变量的隐含类别是自动存储类别D)在C语言中,函数形参的存储类型是自动(auto)类型的变量7、说明语句“staticinti=10;”中“i=10”的含义是()。A)只说明了一个静态变量B)与“autoi=10;”在功能上等价C)将变量i初始化为10D)将变量i赋值为108、C语言中的函数()。A)可以嵌套定义B)不可以嵌套调用C)可以嵌套调用,但不能递归调用D)嵌套调用和递归调用均可9、C语言中函数返回值的类型是由()决定的。A)return语句中的表达式类型B)调用该函数的主调函数类型C)调用函数时临时D)定义函数时所指定的
4、函数类型10、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是()。A)地址传递B)值传递C)由实参传给形参,并由形参传回给实参D)由用户指定传递方式11、下列的结论中只有()是正确的。A)所有的递归程序均可以采用非递归算法实现B)只有部分递归程序可以用非递归算法实现C)所有的递归程序均不可以采用非递归算法实现D)以上三种三种说法都不对12、在以下结论中,只有一个是错误的,它是()。A)C语言允许函数的递归调用B)C语言中的continue语句,可以通过改变程序的结果而省略C)有些递归程序是不能用非递归算法实现的D)C语言中不允许在函数中再定义函数13、在下列结论中
5、,只有一个是正确的,它是()。A)递归函数中的形式参数是自动变量B)递归函数中的形式参数是外部变量C)递归函数中的形式参数是静态变量D)递归函数中的形式参数可以根据需要自己定义存储类别14、下列结论中只有一个是正确的,它是()。A)在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候一定会产生相互影响B)在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候可能会产生相互影响C)在递归函数中使用自动变量要十分小心,因为在递归过程中,不同层次的同名变量在赋值的时候肯定不会产生相互影响D)在C语言中无法得出上述三个结论之一15
6、、在C语言的函数定义过程中,如果函数finA调用了函数funB,函数funB又调用了函数funA,则()。A)称为函数的直接递归B)称为函数的间接递归C)称为函数的递归定义D)C语言中不允许这样的递归形式 二、填空题1、下面的函数sum(intn)完成计算1~n的累加和。 sum(intn){if(n<0)retuen-1;if(n==1)①;/*return(1)*/else②;/*return(n+sum(n-1))*/}2、下面的函数是一个求阶乘的递归调用函数。facto(intn){if(n==1)①;/*return(1)*/elsereturn(②);/*return(
7、n*facto(n-1))*/}三、编程题1、编写一个判断一个整数是否是素数的函数,使用该函数编写验证1000以内的哥德巴赫猜想是成立。(每个不小于6的偶数都是两个素数之和)#includemain(){inti,j;for(i=6;i<=1000;i+=2)for(j=3;j<=i/2;j+=2)if(flag(j)&&flag(i-j)){printf("%d=%d+%d",i,j,i-j);break;}}flag(n)/*函数
此文档下载收益归作者所有