任务24:函数的声明和调用 《编程语言-C语言》45分钟专题训练
|
2份
|
26页
|
89人阅读
|
1人下载
内容正文:
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目五: 函数
第24卷: 函数的声明和调用
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )
A.地址传递 B.单向值传递
C.由实参传给形参 D.再由形参传回实参
2. 设函数fun的定义形式为:void fun(char ch,float x) {……},则以下对函数fun的调用语句中,正确的是( )
A. fun("abc",3.0); B. t=fun('D',16.5);
C. fun ('65',2.8); D. fun(32,32);
3.设已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )
A. 函数调用可以作为独立的语句存在
B. 函数调用可以作为一个函数的实参
C. 函数调用可以出现在表达式中
D. 函数调用可以作为一个函数的形参
4.设如下函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));,则该函数调用语句中,含有的实参个数是( )
A.2 B.3 C.4 D.5
5.设程序中定义了以下函数并将其放在调用语句之后,则在调用之前应该对该函数进行声明,则以下选项中声明不正确的一项是( )
double myadd(double a,double b){return (a+b); }
A. double myadd(double a,b);
B. double myadd(double,double);
C. double myadd(double b,double a);
D. double myadd(double x,double y);
6.下列说法中,正确的一项是( )
A.实参和与其对应的形参各自占用独立的存储单元
B.实参和与其对应的形参共同占用相同的存储单元
C.当实参和与其对应的形参同名时才共同占用相同的存储单元
D.形参是虚拟的,在函数未被调用时不占用存储单元
7.下列有关函数声明的叙述中,不正确的一项是( )
A.如果函数定义出现在函数调用之前,可以不必加函数原型声明
B.一个函数的原型只需要在所有主调函数之前声明一次
C.函数在调用之前,一定要声明函数原型,保证编译系统进行全面调用检查
D.调用标准库函数之前不需要函数原型声明
8.函数的实参与形参的对应关系是( )
A.形参和实参的个数要相同 B.形参和实参的顺序要相同
C.形参和实参的类型要相同或兼容 D.以上三项均需具备
9.语句:char func(int x,int y);是对函数char fun(int a,int b)的( )
A.定义 B.调用 C.声明 D.引用
10.下列对函数:void display(int x,double y){……}的声明中,正确的一项是( )
A.void display(int,double); B.void display(int,int);
C.void display(double y,int x); D.void display(int x,double y){}
11.对于以下函数的叙述中,不正确的一项是( )
1: void f(int n);
2: void f(int n){ }
3: int main(void)
4: {
5: f(5);
6: return 0;
7: }
A.第一行的函数说明对于此程序来说并不是必须的,可以省略
B.可以将第2行的函数放在第7行的mian函数定义之后
C.如果第1行和第2行之间有其他函数调用f函数,则第一行不可省略
D.第1行和第2行都可以放在mian函数体之内
12.已知函数:void fun(int x,double y){……},则下列函数调用中完全正确的是( )
A.printf("%f",fun(1,3.14)) B.double a=fun(1,3.14)
C.fun('1',1) D.fun(3.14,1)
13.以下关于函数的叙述中,正确的一项是( )
A.函数调用必须传递实参
B.函数必须要有形参
C.函数必须要有返回值
D.函数形参的类型与返回值的类型无关
14.以下函数调用语句中func函数的实参个数是( )
func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
A.3 B.4 C.5 D.8
15.以下函数调用语句中fun函数的实参个数是( )
fun((a1,a2),(a1,a2,a3));
A.1 B.2 C.4 D.5
16.设有函数定义:void sub(int k,char ch) {……},则以下对函数sub的调用语句中,正确的是( )
A.sub(1,97); B.sub(2, '97');
C.h=sub(3, 'a'); D.sub(4, "a");
17.执行以下程序段的输出结果是( )
int max(int x,int y)
{int z;
z=(x>y)?x:y;
return z;}
main()
{int a=3,b=2,c;
c=max(a,b);
printf("%d",c);
getch();}
A.1 B.2 C.3 D.5
18.执行以下程序段的输出结果是( )
int add(int x,int y)
{int m;
m=x+y;
return m;}
main()
{int n,k=4,m=1;
n=add(k,m);
printf("n=%d",n);
getch();}
A.n=1 B.n=2 C.n=4 D.n=5
19.执行以下程序段的输出结果是( )
void fun(int a,int b)
{int temp=a;
a=b;
b=temp;}
main()
{int a=8,b=9;
fun(a,b);
printf("%d,%d",a,b);
getch();}
A.8,8 B.8,9 C.9,8 D.9,9
20.执行以下程序段的输出结果是( )
char fun(char x,char y)
{if(x<y) return x;
return y;}
main()
{int a='4',b='7',c='9';
printf("%c
",fun(fun(a,b),fun(a,c)));getch();}
A.4 B.7 C.9 D.20
21.执行以下程序段的输出结果是( )
void f(int x,int y)
{int t;
if(x<y) {t=x; x=y; y=t;}}
main()
{int a=4,b=3,c=5;
f(a,b); f(a,c); f(b,c);
printf("%d,%d,%d
",a,b,c);
getch();}
A.3,4,5 B.4,5,3 C.5,3,4 D.4,3,5
22.执行以下程序段的输出结果是( )
void f(int v,int w)
{int t;t=v;v=w;w=t;}
main()
{int x=1,y=3,z=2;
if(x>y) f(x,y);
else if(y>z) f(y,z);
else f(x,z);
printf("%d,%d,%d
",x,y,z);getch();}
A.1,3,2 B.1,2,2 C.1,2,3 D.2,3,1
23.执行以下程序的输出结果是( )
int func(int a,int b)
{ return(a+b); }
main()
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d
",r);getch();}
A.13 B.14 C.15 D.16
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
double fun(int x,int y)
{return x+y;}
main()
{int a=2,b=5,c=8;
printf("%.1f",fun((int)fun(a+c,b),a-c));
getch();}
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
int f(int x);
main()
{int a,b=0;
for(a=0;a<3;a++)
{b=b+f(a);
putchar('A'+b);}
getch();}
int f(int x)
{return x*x+1;}
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
void func(int n);
main()
{func(3);
printf("????");
func(4);
printf("
");
getch();}
void func(int n)
{int i;
for(i=0;i<=n;i++)
printf("*");
printf("#");}
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
int sum(int a,int b);
main()
{int i;
for(i=0;i<5;i++)
printf("%d",sum(i,3));
printf("
");
getch();}
int sum(int a,int b)
{return a+b-2;}
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int f(int n);
int s=0,i=0;
for( ;i<2;i++)
s+=f(i);
printf("%d
",s);
getch();}
int f(int n)
{int t=0,a=7;
if(n/2) t+=a++;
else t-=a--;
return t+a++;}
29.以下程序的运行结果是( )
#include <math.h>
#include <stdio.h>
#include<conio.h>
main()
{double f(double x);
double a=0;
int i;
for(i=0;i<30;i+=10)
a+=f((double)i);
printf("%.0f
",a);
getch();}
double f(double x)
{return pow(x,2);}
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{void fun(int a,int b);
int x=10,y=20;
fun(x,y);
printf("y=%d,x=%d
",y,x);
getch();}
void fun(int a,int b)
{a=4;b=5;
printf("a=%d,b=%d
",a,b);}
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分)
31.下列子函数的功能是判断一个数是否为素数,在主函数中调用该函数输出100以内的全部素数。题目中共3处错误,请改正。
L1 #include <math.h>
L2 #include <stdio.h>
L3 #include<conio.h>
L4 void isprime(int m)
L5 {int k,n;
L6 n=sqrt((double)m);
L7 for(k=2;k<n;k++)
L8 if(m%k==0) return 0;
L9 return 1;}
L10 main()
L11 {int m,i=0;
L12 for(m=2;m<=100;m++)
L13 {if(!(isprime(m)))
L14 {printf("%4d",m);
L15 i++;
L16 if(i%5==0) printf("
");}}
L17 printf("
");
L18 getch();}
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.下列程序的功能是两个子函数分别求两个整数的最大公约数和最小公倍数,在主函数内输入两个整数,调用它们后输出结果。请填空。
#include <stdio.h>
#include<conio.h>
main()
{int fgcd(int a,int b);
【1】;
int a,b,gcd,lcd;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
gcd=fgcd(a,b);
lcd=flcd(a,b);
printf("最大公约数:%d,最小公倍数:%d",gcd,lcd);
getch();}
int fgcd(int a,int b)
{int i;
for(【2】;i>1;i--)
{if(a%i==0&&b%i==0)
break;}
return i;}
int flcd(int a,int b)
{int i;
for(i=(【3】);i<【4】;i++)
{if(【5】)
break;}
return i;}
33.以下程序的功能是,子函数用来求n个a(即aa…a)的值,在主函数中输入两个正整数a和n,调用子函数,求,并输出结果。请填空。
#include <stdio.h>
#include<conio.h>
main()
{int f(int a,int n);
int a,n,i,s=0;
printf("请输入两个整数(a,n):");
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
s=【1】;
printf("结果为:%d
",s);
getch();}
int f(int a,int n)
{int i,t=0;
for(i=1;【2】;i++)
t=【3】;
return t;}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
湖南省职教高考《编程语言—C语言》45分钟专题训练专辑,共43份试卷。试卷命题与高考紧密相关,精选具有代表性和典型性的高考常考题。旨在帮助学生系统地复习和巩固计算机类理论知识,熟悉高考题型和命题规律,提高解题能力和应试技巧,为高考取得优异成绩打下坚实的基础,本训练卷适用于即将参加计算机类高考的学生。与本专辑配套的还有湖南省职教高考《计算机应用基础》《计算机组装与维护》《计算机网络技术》45分钟专题训练专辑,欢迎同学和老师们下载使用。
《编程语言—C语言》
项目五: 函数
第24卷: 函数的声明和调用
时间:45分钟 总分:100分
班级___________ 姓名__________ 学号__________ 成绩________
一、选择题(共23小题,每小题2分,共46分)
1.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( )
A.地址传递 B.单向值传递
C.由实参传给形参 D.再由形参传回实参
【答案】B
2. 设函数fun的定义形式为:void fun(char ch,float x) {……},则以下对函数fun的调用语句中,正确的是( )
A. fun("abc",3.0); B. t=fun('D',16.5);
C. fun ('65',2.8); D. fun(32,32);
【答案】D
3.设已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是( )
A. 函数调用可以作为独立的语句存在
B. 函数调用可以作为一个函数的实参
C. 函数调用可以出现在表达式中
D. 函数调用可以作为一个函数的形参
【答案】D
4.设如下函数调用语句:func(rec1,rec2+rec3,(rec4,rec5));,则该函数调用语句中,含有的实参个数是( )
A.2 B.3 C.4 D.5
【答案】A
5.设程序中定义了以下函数并将其放在调用语句之后,则在调用之前应该对该函数进行声明,则以下选项中声明不正确的一项是( )
double myadd(double a,double b){return (a+b); }
A. double myadd(double a,b);
B. double myadd(double,double);
C. double myadd(double b,double a);
D. double myadd(double x,double y);
【答案】A
6.下列说法中,正确的一项是( )
A.实参和与其对应的形参各自占用独立的存储单元
B.实参和与其对应的形参共同占用相同的存储单元
C.当实参和与其对应的形参同名时才共同占用相同的存储单元
D.形参是虚拟的,在函数未被调用时不占用存储单元
【答案】D
7.下列有关函数声明的叙述中,不正确的一项是( )
A.如果函数定义出现在函数调用之前,可以不必加函数原型声明
B.一个函数的原型只需要在所有主调函数之前声明一次
C.函数在调用之前,一定要声明函数原型,保证编译系统进行全面调用检查
D.调用标准库函数之前不需要函数原型声明
【答案】C
8.函数的实参与形参的对应关系是( )
A.形参和实参的个数要相同 B.形参和实参的顺序要相同
C.形参和实参的类型要相同或兼容 D.以上三项均需具备
【答案】D
9.语句:char func(int x,int y);是对函数char fun(int a,int b)的( )
A.定义 B.调用 C.声明 D.引用
【答案】C
10.下列对函数:void display(int x,double y){……}的声明中,正确的一项是( )
A.void display(int,double); B.void display(int,int);
C.void display(double y,int x); D.void display(int x,double y){}
【答案】A
11.对于以下函数的叙述中,不正确的一项是( )
1: void f(int n);
2: void f(int n){ }
3: int main(void)
4: {
5: f(5);
6: return 0;
7: }
A.第一行的函数说明对于此程序来说并不是必须的,可以省略
B.可以将第2行的函数放在第7行的mian函数定义之后
C.如果第1行和第2行之间有其他函数调用f函数,则第一行不可省略
D.第1行和第2行都可以放在mian函数体之内
【答案】D
12.已知函数:void fun(int x,double y){……},则下列函数调用中完全正确的是( )
A.printf("%f",fun(1,3.14)) B.double a=fun(1,3.14)
C.fun('1',1) D.fun(3.14,1)
【答案】C。注意该函数无返回值。
13.以下关于函数的叙述中,正确的一项是( )
A.函数调用必须传递实参
B.函数必须要有形参
C.函数必须要有返回值
D.函数形参的类型与返回值的类型无关
【答案】D
14.以下函数调用语句中func函数的实参个数是( )
func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));
A.3 B.4 C.5 D.8
【答案】A
15.以下函数调用语句中fun函数的实参个数是( )
fun((a1,a2),(a1,a2,a3));
A.1 B.2 C.4 D.5
【答案】B
16.设有函数定义:void sub(int k,char ch) {……},则以下对函数sub的调用语句中,正确的是( )
A.sub(1,97); B.sub(2, '97');
C.h=sub(3, 'a'); D.sub(4, "a");
【答案】A。注意函数无返回值。
17.执行以下程序段的输出结果是( )
int max(int x,int y)
{int z;
z=(x>y)?x:y;
return z;}
main()
{int a=3,b=2,c;
c=max(a,b);
printf("%d",c);
getch();}
A.1 B.2 C.3 D.5
【答案】C
18.执行以下程序段的输出结果是( )
int add(int x,int y)
{int m;
m=x+y;
return m;}
main()
{int n,k=4,m=1;
n=add(k,m);
printf("n=%d",n);
getch();}
A.n=1 B.n=2 C.n=4 D.n=5
【答案】D
19.执行以下程序段的输出结果是( )
void fun(int a,int b)
{int temp=a;
a=b;
b=temp;}
main()
{int a=8,b=9;
fun(a,b);
printf("%d,%d",a,b);
getch();}
A.8,8 B.8,9 C.9,8 D.9,9
【答案】B
20.执行以下程序段的输出结果是( )
char fun(char x,char y)
{if(x<y) return x;
return y;}
main()
{int a='4',b='7',c='9';
printf("%c
",fun(fun(a,b),fun(a,c)));getch();}
A.4 B.7 C.9 D.20
【答案】A
21.执行以下程序段的输出结果是( )
void f(int x,int y)
{int t;
if(x<y) {t=x; x=y; y=t;}}
main()
{int a=4,b=3,c=5;
f(a,b); f(a,c); f(b,c);
printf("%d,%d,%d
",a,b,c);
getch();}
A.3,4,5 B.4,5,3 C.5,3,4 D.4,3,5
【答案】D
22.执行以下程序段的输出结果是( )
void f(int v,int w)
{int t;t=v;v=w;w=t;}
main()
{int x=1,y=3,z=2;
if(x>y) f(x,y);
else if(y>z) f(y,z);
else f(x,z);
printf("%d,%d,%d
",x,y,z);getch();}
A.1,3,2 B.1,2,2 C.1,2,3 D.2,3,1
【答案】A
23.执行以下程序的输出结果是( )
int func(int a,int b)
{ return(a+b); }
main()
{int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d
",r);getch();}
A.13 B.14 C.15 D.16
【答案】C
二、程序运行结果题(本题共7小题,每题3分,共21分)
24.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
double fun(int x,int y)
{return x+y;}
main()
{int a=2,b=5,c=8;
printf("%.1f",fun((int)fun(a+c,b),a-c));
getch();}
【答案】9.0
25.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
int f(int x);
main()
{int a,b=0;
for(a=0;a<3;a++)
{b=b+f(a);
putchar('A'+b);}
getch();}
int f(int x)
{return x*x+1;}
【答案】BDI
26.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
void func(int n);
main()
{func(3);
printf("????");
func(4);
printf("
");
getch();}
void func(int n)
{int i;
for(i=0;i<=n;i++)
printf("*");
printf("#");}
【答案】****#????*****#
27.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
int sum(int a,int b);
main()
{int i;
for(i=0;i<5;i++)
printf("%d",sum(i,3));
printf("
");
getch();}
int sum(int a,int b)
{return a+b-2;}
【答案】12345
28.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{int f(int n);
int s=0,i=0;
for( ;i<2;i++)
s+=f(i);
printf("%d
",s);
getch();}
int f(int n)
{int t=0,a=7;
if(n/2) t+=a++;
else t-=a--;
return t+a++;}
【答案】-2
29.以下程序的运行结果是( )
#include <math.h>
#include <stdio.h>
#include<conio.h>
main()
{double f(double x);
double a=0;
int i;
for(i=0;i<30;i+=10)
a+=f((double)i);
printf("%.0f
",a);
getch();}
double f(double x)
{return pow(x,2);}
【答案】500
30.以下程序的运行结果是( )
#include <stdio.h>
#include<conio.h>
main()
{void fun(int a,int b);
int x=10,y=20;
fun(x,y);
printf("y=%d,x=%d
",y,x);
getch();}
void fun(int a,int b)
{a=4;b=5;
printf("a=%d,b=%d
",a,b);}
【答案】
a=4,b=5
y=20,x=10
三、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误代码所在的行号,并给出该行修改后的程序代码。每处3分,共9分)
31.下列子函数的功能是判断一个数是否为素数,在主函数中调用该函数输出100以内的全部素数。题目中共3处错误,请改正。
L1 #include <math.h>
L2 #include <stdio.h>
L3 #include<conio.h>
L4 void isprime(int m)
L5 {int k,n;
L6 n=sqrt((double)m);
L7 for(k=2;k<n;k++)
L8 if(m%k==0) return 0;
L9 return 1;}
L10 main()
L11 {int m,i=0;
L12 for(m=2;m<=100;m++)
L13 {if(!(isprime(m)))
L14 {printf("%4d",m);
L15 i++;
L16 if(i%5==0) printf("
");}}
L17 printf("
");
L18 getch();}
答案:
L4 int isprime(int m)
L7 for(k=2;k<=n;k++)
L13 {if(isprime(m))
四、程序填空。按照题目要求,将正确的内容填入相应位置,使得程序完整(每空3分,共24分)
32.下列程序的功能是两个子函数分别求两个整数的最大公约数和最小公倍数,在主函数内输入两个整数,调用它们后输出结果。请填空。
#include <stdio.h>
#include<conio.h>
main()
{int fgcd(int a,int b);
【1】;
int a,b,gcd,lcd;
printf("请输入两个整数:");
scanf("%d%d",&a,&b);
gcd=fgcd(a,b);
lcd=flcd(a,b);
printf("最大公约数:%d,最小公倍数:%d",gcd,lcd);
getch();}
int fgcd(int a,int b)
{int i;
for(【2】;i>1;i--)
{if(a%i==0&&b%i==0)
break;}
return i;}
int flcd(int a,int b)
{int i;
for(i=(【3】);i<【4】;i++)
{if(【5】)
break;}
return i;}
答案:①int flcd(int a,int b) ②i=(a>b?b:a)
③a>b?a:b ④a*b ⑤i%a==0&&i%b==0
33.以下程序的功能是,子函数用来求n个a(即aa…a)的值,在主函数中输入两个正整数a和n,调用子函数,求,并输出结果。请填空。
#include <stdio.h>
#include<conio.h>
main()
{int f(int a,int n);
int a,n,i,s=0;
printf("请输入两个整数(a,n):");
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
s=【1】;
printf("结果为:%d
",s);
getch();}
int f(int a,int n)
{int i,t=0;
for(i=1;【2】;i++)
t=【3】;
return t;}
答案:①s+f(a,i) ②i<=n ③10*t+a
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$