> 文章列表 > C语言计算机二级/C语言期末考试 刷题(十)函数专题

C语言计算机二级/C语言期末考试 刷题(十)函数专题

C语言计算机二级/C语言期末考试 刷题(十)函数专题

收集了一些经典C语言计算机二级和C语言期末考试题库

整理不易,大家点赞收藏支持一下

祝大家计算机二级和期末考试都高分过

 系列文章:

C语言计算机二级/C语言期末考试 刷题(一)

C语言计算机二级/C语言期末考试 刷题(二)

C语言计算机二级/C语言期末考试 刷题(三)

C语言计算机二级/C语言期末考试 刷题(四)

C语言计算机二级/C语言期末考试 刷题(五)

C语言计算机二级/C语言期末考试 刷题(六)

C语言计算机二级/C语言期末考试 刷题(七)

C语言计算机二级/C语言期末考试 刷题(八)

C语言计算机二级/C语言期末考试 刷题(九)

目录

一、填空   共15题 (共计15分)

二、判断   共10题 (共计10分)

三、单选   共20题 (共计20分)

四、程序填空   共2题 (共计15分)

五、程序改错   共2题 (共计20分)

六、程序设计   共2题 (共计20分)


一、填空   共15题 (共计15分)

第1题

以下程序的输出结果是【1】 .

 #include <stdio.h>fun(){  static  int a=0;a+=2;  printf("%5d",a) ;}void main(){  int cc;for(cc=1;cc<4;cc++)fun();printf("\\n");}

=======(答案1)=======

2    4    6

第2题

C语言变量按其作用域分为【1】 和【2】 .

=======(答案1)=======

全局变量

=========或=========

{{无序}}

=======(答案2)=======

局部变量

第3题

静态变量和外部变量的初始化是在【1】阶段完成的,而自动变量的赋值是

 在【2】时进行的.

=======(答案1)=======

编译

=======(答案2)=======

函数调用

第4题

下面程序的运行结果是【1】

 #include<stdio.h>int a=5;int b=7;void main(){  int a=4,b=5,c;c=plus(a,b);printf("A+B=%d\\n",c);}plus(int x,int y){  int z;z=x+y;return(z); }

=======(答案1)=======

A+B=9

第5题

在一个被调用的函数内部调用另一个函数的调用方式称为【1】 .在一个函数内部直接或间接调用该函数成为函数【2】 的调用方式.

=======(答案1)=======

嵌套调用

=======(答案2)=======

递归调用

第6题

若输入60和13,下列程序运行结果为【1】.

#define   SURPLUS(a,b)    ((a)%(b))main(){   int a,b;scanf("%d,%d",&a,&b);printf("%d\\n",SURPLUS(a,b));}

=======(答案1)=======

8

第7题

下列程序的输出结果是【1】 .

 #include<stdio.h>int t(int x,int y,int cp,int dp){  cp=x*x+y*y;dp=x*x-y*y;}void main(){  int a=4,b=3,c=5,d=6;t(a,b,c,d);printf("%d%d\\n",c,d);}

=======(答案1)=======

56

第8题

下面程序的输出是【1】 .

 #include<stdio.h>fun(int x){  static int a=3;a+=x;return(a);}void main(){  int k=2,m=1,n;n=fun(k);n=fun(m);printf("%d",n);}

=======(答案1)=======

6

第9题

若x和y都是double型变量,且x初值为3.0,y初值为2.0,则表达式pow(y,fabs(x))的值为【1】.

=======(答案1)=======

8.000000

第10题

表达式pow(2.8,sqrt(fabs(x))值的数据类型为【1】.

=======(答案1)=======

double

第11题

从函数的形式上看,函数分为无参函数和【1】两种类型.

=======(答案1)=======

有参函数

第12题

下列程序执行后输出的结果是【1】 .

 #include<stdio.h>int d=1;void fun(int p){  int d=5;d+=p++;printf("%d",d);}void main(){  int a=3;fun(a);d+=a++;printf("%d\\n",d);}

=======(答案1)=======

84

第13题

C语言变量的存储类别有【1】 ,【2】 ,【3】 和【4】 .

=======(答案1)=======

auto

=========或=========

自动

=========或=========

自动变量

=========或=========

{{无序}}

=======(答案2)=======

static

=========或=========

静态

=========或=========

静态变量

=========或=========

{{无序}}

=======(答案3)=======

register

=========或=========

寄存器

=========或=========

寄存器变量

=========或=========

{{无序}}

=======(答案4)=======

extern

=========或=========

外部

=========或=========

外部变量

=========或=========

{{无序}}

第14题

以下程序的输出结果是【1】 .

 #include<stdio.h>int x=3;void incre();void main(){  int i;for(i=1;i<x;i++)  incre();}void incre(){  static int x=1;x*=x+1;printf("%d",x);}

=======(答案1)=======

26

第15题

函数的定义不可以嵌套,但函数的调用【1】嵌套.

=======(答案1)=======

可以

二、判断   共10题 (共计10分)

第1题

通过return语句,函数可以带回一个或一个以上的返回值.

答案:N

第2题

在程序中凡是以#号开始的语句行都是预处理命令行.

答案:Y

第3题

如果函数值的类型和return语句中表达式的值类型不一致时,则以函数类型为准.

答案:Y

第4题

sqrt(m)是求m平方的函数.

答案:N

第5题

C语言所有函数都是外部函数.

答案:N

第6题

C语言中函数调用的方式只有函数做表达式一种.

答案:N

第7题

在C语言的函数中,可以有也可以没有形参.

答案:Y

第8题

在C程序中 , 函数既可以嵌套定义 , 也可以嵌套调用.

答案:N

第9题

return语句必须在每个函数中都出现.

答案:N

第10题

C程序中有调用关系的所有函数必须放在同一个源程序文件中.

答案:N

三、单选   共20题 (共计20分)

第1题

全局变量的定义不可能在().

A:函数内部B:函数外面C:文件外面D:最后一行

答案:A

第2题

如下程序的运行结果为().

        #include<stdio.h>f(int a){  auto int b=0;static c=3;b=b+1;c=c+1;return(a+b+c);  }void main(){  int a=2,i;for(i=0;i<3;i++)printf("%d",f(a));  }
A:6 7 8B:7 8 9C:5 6 7D:无输出结果

答案:B

第3题

C语言规定:简单变量做实参时,它和对应形参之间的数据传递方式是().

A:地址传递B:单向值传递C:由实参传给形参,再由形参传回给实参D:由用户指定的传递方式

答案:B

第4题

在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要的存储类别是().

A:externB:registerC:autoD:static

答案:D

第5题

以下程序的输出结果是().

        #include<stdio.h>fun(int a,int b,int c){  c=a*b;  }void main(){  int c;fun(2,3,c);printf("%d\\n",c);  }
A:0B:1C:6D:无定值

答案:D

第6题

以下不正确的说法是().

A:在不同函数中可以使用相同名字的变量B:形式参数是局部变量C:在函数内定义的变量只在本函数范围内有效D:在函数内的复合语句中定义的变量在本函数范围内有效

答案:D

第7题

对于void类型函数,调用时不可作为().

A:自定义函数体中的语句B:循环体里的语句C:if语句的成分语句D:表达式

答案:D

第8题

以下正确的函数定义形式是().

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);

答案:A

第9题

用户定义的函数不可以调用的函数是().

A:非整型返回值的B:本文件外的C:main函数D:本函数下面定义的

答案:C

第10题

将一个函数说明为static后,该函数将().

A:既能被同一源文件中的函数调用,也能被其他源文件中的函数调用B:只能被同一源文件中的函数调用,不能被其他源文件中的函数调用C:只能被其他源文件中的函数调用,不能被其他源文件中的函数调用D:既不能被同一源文件中的函数调用,也不能被其他源文件中的函数调用

答案:B

第11题

凡是函数中未指定存储类别的局部变量,其隐含的存储类别为().

A:自动(auto)B:静态(static)C:外部(extern)D:寄存器(register)

答案:A

第12题

C语言允许函数类型缺省定义,此时函数值隐含的类型是().

A:floatB:intC:longD:double

答案:B

第13题

以下不正确的说法是:C语言规定().

A:实参可以是常量,变量或表达式B:形参可以是常量,变量或表达式C:实参可以为任何类型D:形参应与其对应的实参类型一致

答案:B

第14题

以下正确的描述是:在C语言程序中().

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

答案:B

第15题

为了使输出结果为:t=4,则给a和b输入的值应满足的条件是().

        void main(){  int s,t,a,b;scanf (" %d,%d ",&a,&b);s =1;t =1;if(a>0)s=s+1;if (a>b)t=s+1;else if(a==b)t=5;elset=2*s;printf(" %d \\n",t);}
A:a>bB:a <b<0C:0 <a < bD:0 >a>b

答案:C

第16题

表达式18/4*sqrt(4.0)/8值的数据类型为().

A:intB:floatC:doubleD:不确定

答案:C

第17题

下面叙述中正确的是().

A:对于用户自己定义的函数,在使用前必须加以声明B:声明函数时必须明确其参数类型和返回类型C:函数可以返回一个值,也可以什么值也不返回D:空函数在不完成任何操作,所以在程序设计中没有用处

答案:C

第18题

C语言中函数返回值的类型是由()决定的.

A:return 语句中的表达式类型B:调用该函数的主调函数类型C:调用函数时临时D:定义函数时所指定的函数类型

答案:D

第19题

以下函数的类型是().

fff(float x)
{return 5;}
A:与参数x的类型相同B:void 类型C:int类型D:无法确定

答案:C

第20题

C语言规定,函数返回值的类型是由().

A:return语句中的表达式类型所决定B:调用该函数时的主调函数类型所决定C:调用该函数时系统临时决定D:在定义该函数时所指定的函数类型所决定

答案:D

四、程序填空   共2题 (共计15分)

第1题

功能:计算并输出high以内最大的10个素数之和,high由主函数传给fun函数,若high的值为100,则函数的值为732。
#include <conio.h>
#include <stdio.h>
#include <math.h>
int fun(int high)
{int sum = 0, n = 0, j, yes;while ((high >= 2) && (【 ? 】)){yes = 1;for (j = 2; j <= high / 2; j++)if (【 ? 】){yes = 0;break;}if (yes){sum += high;n++;}high--;}【 ? 】;
}main()
{printf("%d\\n", fun(100));
}

答案:

=======(答案1)=======
n<10
=========或=========
10>n
=========或=========
n<=9
=========或=========
9>=n=======(答案2)=======
high%j == 0
=========或=========
!(high%j)=======(答案3)=======
return  sum
=========或=========
return  (sum)

第2题

题目:函数fun的功能是:计算如“图片1”的前n项之和。若x=2.5,n=15时,函数值为1.917914。   
#include<stdio.h>
#include<math.h>
double fun(double x, int n)
{double f, t;int i;f = 【 ? 】;t = -1;for (i = 1; i < n; i++){t *= (【 ? 】) * x / i;/***********SPACE***********/f += 【 ? 】;}return f;
}main()
{double x, y;x = 2.5;y = fun(x, 15);printf("\\nThe result is :\\n");printf("x=%-12.6f    y=%-12.6f\\n", x, y);
}

答案:

=======(答案1)=======
1.0=======(答案2)=======
-1=======(答案3)=======
t

五、程序改错   共2题 (共计20分)

第1题

功能:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积。例如:输入圆的半径值:19.527 输出为:s = 598.950017。
#include <stdio.h>
#include <conio.h>
double fun(r)
{double s;s = 1 / 2 * 3.14159 * r * r;return r;
}
main()
{float x;printf("Enter x: ");scanf("%f", &x);printf(" s = %f\\n ", fun(x));
}

答案:

=======(答案1)=======
float fun(float r)
=========或=========
double fun(float r)
=========或=========
double fun(double r)=======(答案2)=======
s=1.0/2*3.14159* r * r;=======(答案3)=======
return s;

第2题

功能:根据整型形参m,计算如下公式的值:y=1/2+1/8+1/18+...+1/2m*m
#include <stdio.h>
double fun(int m)
{double y = 0int i;for (i = 1; i < m; i++){y = +1.0 / (2 * i * i);}return(y);
}main()
{int n;printf("Enter n: ");scanf("%d", &n);printf("\\nThe result is %1f\\n", fun(n));
}

答案:

=======(答案1)=======double y=0;=======(答案2)=======for(i=1; i<=m; i++)=======(答案3)=======y+=1.0/(2*i*i);

六、程序设计   共2题 (共计20分)

第1题

功能:编写函数fun求sum=d+dd+ddd+……+dd...d(n个d),其中d为1-9的数字。例如:3+33+333+3333+33333(此时d=3,n=5),d和n在主函数中输入。
#include <stdio.h>
long int fun(int d, int n)
{/**********Program**********//**********  End  **********/
}main()
{int d, n;long sum, fun();printf("d=");scanf("%d", &d);printf("n=");scanf("%d", &n);sum = fun(d, n);printf("sum=%ld\\n", sum);
}

答案:

long int s = 0, t = 0;
int i;
for (i = 1; i <= n; i++)
{t = t + d;s = s + t;d = d * 10;
}
return s;

第2题

功能:计算并输出给定整数n的所有因子之和(不包括1与自身)。注意:n的值不大于1000。例如:n的值为855时,应输出704。
#include <stdio.h>
int fun(int n)
{/**********Program**********//**********  End  **********/}void main()
{printf("s=%d\\n", fun(855));
}

答案:

int s = 0, i;
for (i = 2; i < n; i++)if (n % i == 0)s = s + i;
return s;

若有错误或疑问,欢迎评论区留言讨论。