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;
若有错误或疑问,欢迎评论区留言讨论。