C语言程序设计 - 习题大全(含答案) - C语言-1 下载本文

2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D )

(A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;}

(C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A )

在C语言中

(A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元

(C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元

5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A )

该函数 (A) 没有返回值

(B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定

(A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型

(D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C )

(A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式

(C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准

8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递

(C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

9、以下程序有语法性错误,有关错误原因的正确说法是( C ) void main() { int G=5,k; void prt_char(); ......

k=prt_char(G); ......

}

(A) 语句void prt_char(); 有错,它是函数调用语句,不能用void说明 (B) 变量名不能使用大写字母 (C) 函数说明和函数调用之间有矛盾 (D) 函数名不能使用下划线

10、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B ) (A) float型 (B) int型 (C) long型 (D) double型

11、C语言规定,函数返回值的类型是由( D ) (A) return语句中的表达式类型所决定 (B) 调用该函数时的主调函数类型所决定 (C) 调用该函数时系统临时决定

(D) 在定义该函数时所指定的函数类型所决定 12、下面函数调用语句含有实参的个数为( B )

func((exp1,exp2),(exp3,exp4,exp5)); (A) 1 (B) 2 (C) 4

(D) 5

13、以下错误的描述是( D ) 函数调用可以 (A) 出现在执行语句中 (B) 出现在一个表达式中 (C) 做为一个函数的实参 (D) 做为一个函数的形参

14、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。①( B ) ②( C ) #include #include float f(float,float); void main() { float x,y,z,sum;

scanf(\ sum=f( ① )+f( ② ); printf(\

}

float f(float a,float b) { float value; value=a/b; return(value);

}

① (A) x-y,x+y (B) x+y,x-y (C) z+y,z-y (D) z-y,z+y ② (A) x-y,x+y (B) x+y,x-y (C) z+y,z-y (D) z-y,z+y

15、以下正确的描述是( B ) 在C语言中

(A) 函数的定义可以嵌套,但函数的调用不可以嵌套 (B) 函数的定义不可以嵌套,但函数的调用可以嵌套 (C) 函数的定义和函数的调用均不可以嵌套 (D) 函数的定义和函数的调用均可以嵌套

16、以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。①( B )②( A ) sub(int k,int n) { int a1,a2; a2= ① ; a1=k- ② ;

if((K%3==0&&a2==5)||(k%3==0&&a1==5)) { printf(\ n++; return n;

}

else return -1;

}

void main() { int n=0,k,m; for(k=10;k<=99;k++) { m=sub(k,n); if(m!=-1) n=m; }

printf(\

}

① (A) k*10 (B) k

(C) k/10 (D) k*10 ② (A) a2*10 (B) a2 (C) a2/10 (D) a2

二、填空题

17、C语言规定,可执行程序的开始执行点是___main函数_____。

18、在C语言中,一个函数一般由两个部分组成,他们是__函数名______和___函数体_____。

19、若输入的值是-125,以下程序的运行结果是_-125_=5*5*5______。 #include #include void fun(int n) { int k,r;

for(k=2;k<=sqrt(n);k++) { r=n%k; while(r==0) { printf(\ n=n/k;

if(n>1) printf(\ r=n%k;

}

}

if(n!=1) printf(\

}

void main() { int n;

scanf(\ printf(\ if(n<0) printf(\ n=fabs(n); fun(n); }

20、下面add函数的功能是求两个参数的和,并将和值返回调用函数。函数中错误的部分是__ void add(float a,float b)______;改正后为___ float add(float a,float b)_____。 void add(float a,float b) { float c; c=a+b; return c; }

21、以下程序的运行结果是__i=7,j=6,x=7 i=2,j=7,x=5______。

void fun(int i,int j) { int x=7;

pirntf(\ }

void main() { int i=2,x=5,j=7; fun(j,6);

printf(\ }

22、以下程序的运行结果是___111_____。 void increment()

{

int x=0; x+=1; printf(\

}

void main() { increment(); increment(); increment();

}

23、以下程序的运行结果是___2_____。 max(int x, int y) { int z; z=(x>y)?x:y; return(z);

}

void main() { int a=1,b=2,c; c=max(a,b);

printf(\ }