int i,num;
for(i=1;str[i]!=(○1 );i++) {
if(str[i]!=(○2 ) && str[i-1]==(○3 )) }
printf(“num=%d”,num);
折半查找法:设数组长度为n,则将输入的数m与a[n/2]比较,若ma[n/2],则将a[n/2+1]到a[n]的数继续折半进行查找。
8. 程序功能:有10个数按升序放在一个数组中,输入一个数,要求用折半查找该数是数组中的第几个元素,如果该数不在数组中,打印出“NO”。#include “stdio.h” void main() {
int a[10]={12,32,45,62,71,76,80,85,90,95}; int num,bott,top,mid; scanf(\ bott = 0, top = 9; while(bott小于等于top) { mid=(bott+top)/2; if( num == a[mid])
{printf(\ else if( num 小于 a[mid])
else bott=mid+1; } if(
num++;
第四章 函数
一、 判断题
R1.C程序中,函数的定义和函数的调用均可以嵌套。
R2.C程序中,若对函数类型未加显示说明,则函数的隐含类型为“int”。 3.在调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参。 R4.函数的返回值是通过函数中的return语句获得的。 5. 用数组名作函数参数时传递的是数组的值。
6. 全局变量可以被任何一个函数中的任何一个表达式使用。
7. 一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据。
8.C函数既可以嵌套定义又可以递归调用.( )
9. C语言规定,函数的实参应与其对应的形参类型一致。( ) 10.若全局变量和局部变量同名,则全局变量被遮蔽。()
11.若要在函数 f 中修改变量 a 的值,应该把 a 的地址传递给 f 。() 12. 当数组做为参数传递给函数时,是把数组中的所有元素都传递给了该函数。()
N13. 给局部变量加上static属性后,其生存期和作用域都扩展了。() 14、在某个变量前用extern声明,可以扩展变量的作用域; 15、外部变量采用静态存储,内部变量采用动态存储;
16、静态外部变量只能在本文件使用,其他文件不能使用该变量; 17(1)不同函数内的变量,可以用相同的名字
N18(2)设函数调用表达式为:fun(fun(a,b),c),则函数fun带3个参数。 19(4)C语言中,函数返回值的类型是由定义函数时所指定的函数类型决定的 20(5)在main函数内定义的变量在整个程序范围内有效 21(10)静态外部变量,不允许其它文件中的函数访问
22(1)不同函数内的变量,可以用相同的名字
N23(2)设函数调用表达式为:add(sub(a,b),c),则函数add带3个参数。 24. 在C程序中return语句最多可以返回一个值。( )
25.若函数类型和return语句中表达式类型不一致时,返回类型以函数类型为准。( )
26.在C语言中实参和与其对应的形参各占用独立的存储单元。()
27 由一个函数调用另一个函数,被调用的函数又调用其他函数的关系,称为函数的嵌套调用。(T)
28 一个函数直接或者间接地自己调用自己的过程成为递归调用。(T) 29 使用递归方法解决问题,必须要有一个明确的结束递归的条件。(T) 30 递归调用也称为循环定义,即用其自身来定义自己的过程。(T)
二、 单项选择题
1、 C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( ) A.地址传递 B.单向值传递
C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式 R2、若调用一个函数,且此函数 中没有return语句,则正确的说法是() 该函数
A.没有返回值
B.返回若干个系统默认值
C.能返回一个用户所希望的函数值 D.返回一个不确定的值
R3、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( ) A.float型 B.int型 C.long型 D.double型 R4、在C语言程序中,以下描述正确的是( )
A.函数的定义可以嵌套,但函数的调用不可以嵌套 B .函数的定义不可以嵌套,但函数的调用可以嵌套 C.函数的定义和函数的调用均不可以嵌套 D.函数的定义和函数的调用均可以嵌套 5. void main() { int f(int); int w = 2,k;
for(k=0;k<3;k++) {
w=f(w);
printf(“%d\\n”,w); } }
int f(int x) {
int y=0;
static int z=3; y++; z++;
return (x+y+z) ; }
程序结束后,z的值为_______。
(1) A) 3 B) 4 C) 5 D) 6
R6.在一个被调用函数中,关于return语句使用的描述,错误的是( )
A、被调用函数中可以不用return语句 B、被调用函数中可以使用多个return语句
C、被调用函数中,如果有返回值,就一定要有return语句
D、被调用函数中,一个return语句可返回多个值给调用函数
7.以下程序输出的结果是( )。
#include
{int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(\}
A、12 B、13 C、14 D、15
8(2)若有如下函数定义:
add(float x, float y) {??}
则下列说法正确的是( )
A.函数返回值类型不确定 B.函数返回值是float型 C.函数返回值是int型 D.函数返回值是void型
9 int x1=30,x2=40;// x1 x2是全局变量 void main() {
int x3=10,x4=20 ; sub(x3,x4) ; sub(x2,x1);
L1:printf(“%d,%d,%d,%d\\n”,x3,x4,x1,x2); }
void sub(int x, int y) {
x1=x ;x=y ;y=x1 ;
L2 :printf(“%d,%d\\n”,x,y) ; }
L1行输出结果为_______________。
(3) A) 10,20,30,40 B) 10,20,40,10 C) 20,10,40,30 D) 10,20,40,40 R10.以下对C语言函数的描述中,正确的是( )。
A、C程序由一个或一个以上的函数组成 B、C函数既可以嵌套定义又可以递归调用 C、函数必须有返回值,否则不能使用函数
D、C程序中调用关系的所有函数必须放在同一个程序文件中
11.以下函数值的类型是( )。
fun ( float x ) {float y; y= 3*x-4; return y; }
A、int B、不确定 C、void D、float
12.一个C程序由函数A(),B(),C()和函数P()构成,在函数A()中分别调用了函数B()和函数
C(),在函数B()中调用了函数A(),且在函数P()中也调用了函数A(),则可以说( )。 A、函数B()中调用的函数A()是函数A()的间接递归调用 B、函数A()被函数B()调用是直接递归调用 C、函数P()直接递归调用了函数A()
D、函数P()中调用的函数A()是函数P()的嵌套
13.下面函数调用语句含有实参的个数为( )。
func((a,b,c,d),(e,f,g));
A、1 B、2 C、4 D、以上都不对
14.已有函数max(a,b)为了让函数指针变量p指向函数max正是确的赋值方法是( )。
A、p=max; B、*p=max; C、p=max(a,b); D、*p=max(a,b);
N15.下面程序运行的结果为: #include
int m=3,n=4; int t; t=a;a=b;b=t;