C语言程序设计 第六章 函数 试题及答案
c语言关于函数的试题及答案

c语言关于函数的试题及答案1. 题目:以下哪个选项是正确的C语言函数定义?- A. int function(int a, int b) { return a + b; } - B. int function(int a, int b) { return a - b; } - C. int function(int a, int b) { return a * b; } - D. All of the above答案:D2. 题目:在C语言中,函数的返回值类型是什么?- A. void- B. int- C. float- D. char答案:A3. 题目:以下哪个选项是C语言中有效的函数声明?- A. int add(int a, int b);- B. int add(int, int);- C. int add(int a; int b);- D. int add(int a, int b) {}答案:A4. 题目:在C语言中,函数的参数默认传递方式是什么? - A. 值传递- B. 引用传递- C. 指针传递- D. 以上都不是答案:A5. 题目:以下哪个选项是C语言中正确的递归函数定义?- A. int fact(int n) { if (n == 0) return 1; else return n * fact(n - 1); }- B. int fact(int n) { if (n == 0) return 1; else return n * fact(n + 1); }- C. int fact(int n) { if (n == 1) return 1; else return n * fact(n - 1); }- D. All of the above答案:A6. 题目:在C语言中,如何定义一个接受任意数量参数的函数?- A. 使用不定参数列表- B. 使用数组作为参数- C. 使用指针作为参数- D. 使用结构体作为参数答案:A7. 题目:以下哪个选项是C语言中正确的函数指针声明?- A. int (*func)(int);- B. int *func(int);- C. int func(int)[];- D. int (*func)(int, int);答案:A8. 题目:在C语言中,如果函数返回一个结构体,那么函数的返回类型是什么?- A. struct- B. void- C. int- D. char答案:A9. 题目:以下哪个选项是C语言中正确的函数重载声明?- A. void add(int a, int b);- B. int add(int a, int b);- C. void add(int a, int b, int c);- D. All of the above答案:D10. 题目:在C语言中,如何定义一个接受可变数量参数的函数?- A. 使用不定参数列表- B. 使用数组作为参数- C. 使用指针作为参数- D. 使用结构体作为参数答案:A。
C语言函数题库及答案

C语言函数题库及答案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998第六部分函数一、单项选择题1.C语言中的函数返回值的类型是由(D)决定A.return语句中的表达式B.调用函数的主调函数C.调用函数时临时D.定义函数时所指定的函数类型2.下面不正确的描述是(B)。
A.调用函数时,实参可以是表达式B.调用函数时,实参和形参可以共用内存单元C.调用函数时,将形参分配内存单元D.调用函数时,实参与形参的类型必须一致3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是(D)A.地址传递B.值传递C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式4.下面的函数调用语句中含有(A)个实参inta,b,c;intsum(intx1,intx2);……total=sum((a,b),c);A.2B.3C.4 D.55.在C语言中(C)A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和调用均不可以嵌套C.函数的定义不可以嵌套,但是函数的调用可以嵌套D.函数的定义和调用均可以嵌套6.关于C语言中的return语句正确的是(C)A.只能在主函数中出现B.在每个函数中都必须出现C.可以在一个函数中出现多次D.只能在除主函数之外的函数中出现7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是(D)(floatx[],intn)(float*x,intn)(floatx[10],intn)(floatx,intn)8.在C语言中,函数的数据类型是指(A)A.函数返回值的数据类型B.函数形参的数据类型C.调用该函数时的实参的数据类型D.任意指定的数据类型9.已知如下定义的函数:fun1(a){printf("\n%d",a);}则该函数的数据类型是(C)A.与参数a的类型相同B.void型C.整型D.无法确定10.定义一个函数实现交换x和y的值,并将结果正确返回。
C语言程序设计 第六章 函数 试题及答案

A)没有返回值B)返回若干个系统默认值
C)返回一个用户所希望的函数值D)返回一个不确定的值
参考答案:D
参考分析:函数有没有返回值是由函数类型所决定的,当没有retrun语句,系统不能返回一个确定的值而已。
6.7以下不正确的说法是,C语言规定。
C) 7 9 11 D) 7 8 9
参考答案:D
*6.30以下程序的正确运行结果是。
#include<stdio.h>
main()
{int k=4,m=1,p;
p=func(k,m); printf("%d,",p);
p=func(k,m); printf("%d"\n",p);
}
func(int a,int b)
{static int m=0,i=2;
i+=m+1;
m=i+a+b;
return(m);
}
A)8,17 B)8,16 C)8,20 D)8,8
参考答案:A
2
6.31 C语言规定,可执行程序的开始执行点是【】。
参考答案:main函数
6.32在C语言中,一个函数一般由两个部分组成,它们是【1】和【2】。
{float value;
falue=a/b;
return(value);
}
【1】A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y
【2】A)x-y,x+y B)x+y,x-y C)z+y,z-y D)z-y,z+y
c语言中函数试题及答案

c语言中函数试题及答案一、选择题1. 在C语言中,以下哪个关键字用于定义函数?A. classB. functionC. defD. int答案:D2. 函数的返回类型是什么?A. 函数执行后返回的数据类型B. 函数的名称C. 函数的参数D. 函数的调用方式答案:A3. 在C语言中,以下哪个函数用于计算两个整数的和?A. strcatB. strcmpC. strcatD. sum答案:D(假设sum是一个自定义的函数)二、填空题1. 在C语言中,定义函数的关键字是________。
答案:int2. 函数的返回值是通过________关键字返回的。
答案:return3. 函数的参数列表定义了函数调用时需要传递的________。
答案:值三、简答题1. 请简述C语言中函数的定义格式。
答案:在C语言中,函数的定义格式通常如下:```returnType functionName(parameterList) {// function body}```其中`returnType`是函数的返回类型,`functionName`是函数的名称,`parameterList`是函数的参数列表,`function body`是函数的执行体。
2. 请解释C语言中函数的调用过程。
答案:C语言中函数的调用过程包括以下步骤:- 调用者准备参数并调用函数。
- 函数接收参数并执行函数体。
- 函数计算结果并通过return语句返回。
- 调用者接收返回值并继续执行。
四、编程题1. 编写一个C语言函数,计算两个整数的和并返回结果。
答案:```cint sum(int a, int b) {return a + b;}```调用示例:```cint result = sum(5, 10);printf("The sum is %d", result); ```。
C语言程序设计教程第六章课后习题参考答案

C语⾔程序设计教程第六章课后习题参考答案P158 1求三个实数最⼤值#includefloat max(float,float,float);int main(){float a,b,c,m;printf("请输⼊三个实数:");scanf("%f %f %f",&a,&b,&c);printf("最⼤数为%f\n",max(a,b,c));return 0;}float max(float a,float b,float c){float t;if(a>b&&a>c)t=a;else if(b>a&&b>c)t=b;elset=c;return t;}P158 2求最⼤公约数最⼩公倍数#includeint fun1(int a,int b);int fun2(int a,int b);int main(){int a,b;printf("请输⼊两个整数:");scanf("%d %d",&a,&b);printf("最⼤公约数为:%d\n",fun1(a,b));int t,r;if(a{t=a;a=b;b=t;}while((r=(a%b))!=0) {a=b;b=r;}return b;}int fun2(int a,int b) {int n;n=(a*b)/fun1(a,b); return n;}P158 3求完全数#includevoid wan(int n); void main(){int n;for(n=1;n<1000;n++) wan(n);printf("\n");}void wan(int n){if(n%i==0)s=s+i;}if(n==s)printf("%d\t",n); }P158 4⽆暇素数#include#includeint nixvshu(int n);int isPrime(int n);int main(){int n,t;printf("⽆暇素数:\n");for(n=100;n<=999;n++) {t=nixvshu(n);if(isPrime(n)&&isPrime(t)) printf("%d\t",n);}printf("\n");return 0;}int nixvshu(int n){int x=0;while(n){x=x*10+n%10;n=n/10;}return x;int i;for(i=2;i<=sqrt(n);i++)if(n%i==0) return 0;return n;}P158 7递归函数#includeint Y(int n){if(n==0)return 0;if(n==1)return 1;if(n==2)return 2;elsereturn (Y(n-1)+Y(n-2)+Y(n-3)); } int main(){int n,k=0;for(n=0;n<=19;n++){printf("%d\t",Y(n));k++;if(k%5==0)printf("\n");}return 0;}P124 6分解质因数#include#includevoid fenjie(int );int main(){int n;printf("请输⼊⼀个正整数:"); scanf("%d",&n);if(isPrime(n)){printf("%d=1*%d\n",n,n);}else{fenjie(n);printf("\n");}return 0;}int isPrime(int n){int i;for(i=2;i<=sqrt(n);i++){if(n%i==0) return 0;}return 1;}int zhi(int n){int m;for(m=2;m<=n;m++){if(isPrime(m)&&(n%m==0)) break;void fenjie(int n){int m;printf("%d=%d",n,zhi(n));while(n>zhi(n)){m=zhi(n);n=n/m;printf("*%d",zhi(n));}}P47 1输出闰年#includeint f(int year);int main(){int year,k=0;for(year=1900;year<=2000;year++){if(f(year)){printf("%d\t",year);k++;if(k%5==0)printf("\n");}}return 0;}int f(int year){if((year%4==0&&year%100!=0)||(year%400==0)) return year;P47 2输出回⽂数#includeint fun(int n);int main(){int n,k=0;for(n=10;n<=2000;n++) {if(n == fun(n)){printf("%d\t",n);k++;if(k%5==0)printf("\n");}}return 0;}int fun(int n){int i=0;while(n>0){i=i*10+n%10;n=n/10;}return i;}P47 3进制转换#includevoid trans(int n,int base); int main()printf("请输⼊要转换的⼗进制数:"); scanf("%d",&n);printf("请输⼊转换的进制:"); scanf("%d",&base);trans(n,base);printf("\n");return 0;}(⽅法⼀)void trans(int n,int base){if(n){trans(n/base,base);if(n%base>=10)switch(n%base){case 10:printf("A");break;case 11:printf("B");break;case 12:printf("C");break;case 13:printf("D");break;case 14:printf("E");break;case 15:printf("F");break;}elseprintf("%d",n%base);}}(⽅法⼆)void trans(int n,int base){int r;char c;trans(n/base,base); r=n%base;if(r>=10)c='A'+r-10;elsec='0'+r;printf("%c",c);}}。
C语言第6-7章试卷有答案

C语⾔第6-7章试卷有答案(6~7章)⼀、选择题1、能正确表⽰a和b同时为正或同时为负的逻辑表达式是A) (a>=0‖b>=0)&&(a<0‖b<0) B) (a>=0&&b>=0)&&(a<0&&b<0)C) (a+b>0)&&(a+b<=0) D) a*b>02、语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是A) a\bre\'hi\'y\\\bou B) a\bre\'hi\'y\bou C) re'hi'you D) abre'hi'y\bou3、设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&&++y));的输出结果是A) 1 B) 0 C) -1 D) 24、当c的值不为0时,在下列选项中能正确将c的值赋给变量a、b的是A) c=b=a;B) (a=c) ‖(b=c) ;C) (a=c) &&(b=c);D)a=c=b;5、以下程序的输出结果是main( ){ int x=10,y=10,i;for(i=0;x>8;y=++i)printf("%d %d ",x--,y);}A) 10 1 9 2 B) 9 8 7 6 C) 10 9 9 0 D) 10 10 9 1 6、设有int x=11; 则表达式(x++ * 1/3) 的值是A) 3 B) 4 C) 11 D) 12 7、下列程序执⾏后的输出结果是main(){ char x=0xFFFF; printf("%d \n",x--); } A) -32767 B) FFFE C) -1 D)8、下列程序的输出结果是A) 3 B) 3.2 C) 0 D) 3.07main(){ double d=3.2; int x,y;x=1.2; y=(x+3.8)/5.0;printf("%d \n", d*y);}9、下列程序执⾏后的输出结果是(⼩数点后只写⼀位)main(){ double d; float f; long e; int i;i=f=e=d=20/3;printf("%d %ld %f %f \n", i,e,f,d);}A) 6 6 6.0 6.0 B) 6 6 6.7 6.7 C) 6 6 6.0 6.7 D) 6 6 6.7 6.010、设int x=1, y=1; 表达式(!x||y--)的值是A) 0 B) 1 C) 2 D) -111、以下循环体的执⾏次数是main(){ int i,j;for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \n",i);}A) 3 B) 2 C) 1 D) 0 12、以下叙述正确的是A) do-while语句构成的循环不能⽤其它语句构成的循环来代替。
高级语言程序设计第6章参考答案

1.6.3习题解答编程题1.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主调函数调用这两个函数,并输出结果。
两个整数由键盘输入。
分析:求两个数a和b的最大公约数:设这个数为x,则x一定小于等于a和b中的较小者min(a,b)。
在区间[1, min(a,b)]中能找到的最后一个同时被a和b整除的那个数,就是a和b的最大公约数x。
求两个数a和b的最小公倍数:设这个数为x,则x一定大于等于a和b中的较大者max(a,b),而小于等于a*b。
在区间[max(a,b), a*b ]中找到的第一个能同时整除a和b的那个数,就是a和b的最小公倍数x。
参考程序代码:#include "stdio.h"f1(int a, int b)/*求最大公约数*/{int x,i;for(i=1;i<=(a<=b?a:b);i++){if(a%i==0&&b%i==0){x=i;}}printf("\n最大公约数为: %d\n",x);}f2(int a, int b)/*求最小公倍数*/{int i,x;for(i=((a>b)?a:b);i<=a*b;i++){if(i%a==0&&i%b==0){x=i;break;}}printf("\n最小公倍数为: %d\n",x);}void main(){int a,b;printf("\n请输入两个数:\n");printf("a=");scanf("%d", &a);printf("b=");scanf("%d", &b);f1(a, b);f2(a, b);}运行结果:请输入两个数:a=4b=16最大公约数为:4最小公倍数为:162.编写一个函数,其功能是对于给定的一个时间数(秒为单位),以“时:分:秒”的格式输出。
C语言函数题库及答案

C语言函数题库及答案第六部分函数一、单项选择题1.C语言中的函数返回值的类型是由(D)决定A.return语句中的表达式B.调用函数的主调函数C.调用函数时临时 D.定义函数时所指定的函数类型2.下面不正确的描述是(B )。
A.调用函数时,实参可以是表达式B.调用函数时,实参和形参可以共用内存单元C.调用函数时,将形参分配内存单元D.调用函数时,实参与形参的类型必须一致3.在C语言中,调用一个函数时,实参变量和形参变量之间的数据传递是( D )A.地址传递 B.值传递C.由实参传递给形参,并由形参传回给实参D.由用户指定传递方式4.下面的函数调用语句中含有( A )个实参int a,b,c;int sum(int x1,int x2);……total=sum((a,b),c);A.2 B.3 C.4 D.55.在C语言中( C )A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和调用均不可以嵌套C.函数的定义不可以嵌套,但是函数的调用可以嵌套D.函数的定义和调用均可以嵌套6.关于C语言中的return语句正确的是(C )A.只能在主函数中出现B.在每个函数中都必须出现C.可以在一个函数中出现多次D.只能在除主函数之外的函数中出现7.两个形参中,第一个形参为指针类型、第二个形参为整型,则对函数形参的说明有错误的是( D)A. int a(float x[],int n)B. int a(float *x,int n)C. int a(float x[10],int n)D.int a(float x,int n)8.在C语言中,函数的数据类型是指( A )A.函数返回值的数据类型B. 函数形参的数据类型C.调用该函数时的实参的数据类型D. 任意指定的数据类型9.已知如下定义的函数:fun1(a){ printf("\n%d",a);}则该函数的数据类型是( C )A.与参数a的类型相同B.void型C.整型D.无法确定10.定义一个函数实现交换x和y的值,并将结果正确返回。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B)形参可以是常量、变量或表达式
C)实参可以是任意类型
D)实参应与其对应的形参类型一致
参考答案:B
6.8以下正确的说法是。
A)定义函数时,形参的类型说明可以放在函数体内
B)return后面的值不能为表达式
C)如果函数的类型与返回值类型不一致,以函数类型为准
D)如果形参与实参的类型不一致,以实参类型为准
A)float型B)int型C)long型D)double型
参考答案:B
6.12 C语言规定,函数返回值的类型是由所决定。
A)return语句中的表达式类型
B)调用该函数时的主调函数类型
C)调用该函数是系统临时指定
D)在定义该函数时所指定的函数类型
参考答案:D
*6.13下面函数调用语句含有实参的个数为。
if(m!=-1) n=m;
}
printf("\nn=%d",n);
}
【1】A)k*10 B)k%10 C)k/10 D)k*10%10
【2】A)a2*10 B)a2 C)a2/10 D)a2%10
参考答案:【1】C【2】A
6.18以下是有关汉诺塔问题的程序段,若在main函数中有调用语句hanoi(3,'A','B','C');则符合程序段运行结果的选项是。
A-->C A-->C B-->C B-->C
A-->B A-->B A-->C A-->C
参考答案:C
6.19若用数组名作为函数调用的实参,传递给形参的是。
A)数组的首地址B)数组第一个元素的值
C)数组中全部元素的值D)数组元素的个数
参考答案:A
6.20已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为。
参考答案:D
*6.29以下程序的正确运行结果是。
main()
{int a=2,i;
for(i=0;i<3;i++) printf("%4d",f(a));
}
int f(int a)
{int b=0;
static int c=3;
b++;c++;
return(a+b+c);
}
A) 7 7 7 B) 7 10 13
void num()
{extern int x,y;
int a=15,b=10;
x=a-b;
y=a+b;
}
int x,y;
main()
{int a=7,b=5;
x=a+b;
y=a-b;
num();
printf("%d,%d\n",x,y);
}
A)12,2 B)12,25 C)5,25 D)5,2
参考答案:C
C
1
*6.1建立函数的目的之一,以下正确的说法是。
A)提高程序的执行效率B)提高程序的可读性
C)减少程序的篇幅D)减少程序文件所占内存
参考答案:B
*6.2以下正确的说法是。
A)用户若需要调用标准库函数,调用前必须重新定义
B)用户可以重新定义标准库函数,若如此,该函数将失去原有意义
C)用户系统根本不允许用户重新定义标准库函数
#include <stdio.h>
#include <math.h>
float f(float,float);
main()
{float x,y,z,sum;
scanf("%f%f%f",&x,&y,&z);
sum=f(【1】)+f(【2】);
printf("sum=%f\n",sum);
}
float f(float a,float b)
D)在函数内的复合语句中定义的变量在本函数范围内有效
参考答案:D
6.25以下程序的正确运行结果是。
#define MAX 10
int a[MAX],i;
main()
{printf("\n");sub1();sub3(a);sub2();sub3(a);}
sub2()
{int a[MAX],i,max;
C) 7 9 11 D) 7 8 9
参考答案:D
*6.30以下程序的正确运行结果是。
#include<stdio.h>
maik,m); printf("%d,",p);
p=func(k,m); printf("%d"\n",p);
}
func(int a,int b)
max=5;
for(i=0;i<max;i++) a[i]=i;
}
sub1()
{for(i=0;i<MAX;i++) a[i]=i+i;}
sub3(int a[])
{int i;
for(i=0;i<MAX;i++) printf("%3d",a[i]);
printf("\n");
}
A) 0 2 4 6 8 10 12 14 16 18 B) 0 1 2 3 4
参考答案:【1】函数声明【2】函数体
*6.33若输入的值是-125,以下程序的执行结果是。
#include<math.h>
main()
{int n;
scanf("%d",&n);
A)函数的定义可以嵌套,但函数的调用不可以嵌套
B)函数的定义不可以嵌套,但函数的调用可以嵌套
C)函数的定义和函数的调用均不可嵌套
D)函数的定义和函数的调用均可以嵌套
参考答案:B
6.17以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有的这样的数及其个数。请选择填空。
sub(int k,int n)
{int low=0,high=9,mid;
while(low<=high)
{mid=(low+high)/2;
if(m<a[mid])【1】;
else if(m>a[mid])【2】;
else return(mid);
}
return(-1);
}
A)high=mid-1 B)high=mid+1 C)low=mid-1 D)low=mid+1
0 1 2 3 4 0 2 4 6 8 10 12 14 16 18
C) 0 1 2 3 4 5 6 7 8 9 D) 0 2 4 6 8 10 12 14 16 18
0 1 2 3 4 0 2 4 6 8 10 12 14 16 18
参考答案:D
*6.26以下程序的正确运行结果是。
#include<stdio.h>
6.27凡是函数中未指定存储类别的局部变量,其隐含的存储类别为。
A)auto B)static C)extern D)register
参考答案:A
6.28在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是。
A)extern B)register C)auto D)static
{int a1,a2;
a2=【1】;
a1=k-【2】;
if((k%3==0&&a2==5)||(k%3==0&&a1==5))
{printf("%4d",k);n++;return n;}
else return -1;
}
main()
{int n=0,k,m;
for(k=10;k<100;k++)
{m=sub(k,n);
6.6若调用一个函数,且此函数中没有return语句,则正确的说法是该函数。
A)没有返回值B)返回若干个系统默认值
C)返回一个用户所希望的函数值D)返回一个不确定的值
参考答案:D
参考分析:函数有没有返回值是由函数类型所决定的,当没有retrun语句,系统不能返回一个确定的值而已。
6.7以下不正确的说法是,C语言规定。
参考答案:A
*6.4以下正确的函数形式是。
A)double fun(int x,int y){z=x+y;return z;}
B)double 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;}
......
k=prt_char(G);
......
}
A)语句void prt_char();有错,它是函数调用语句,不能用void说明
B)变量名不能使用大写字母
C)函数说明和函数调用语句之间有矛盾
D)函数名不能使用下划线
参考答案:C
6.11 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是。
参考答案:【1】A【2】D
6.23如果在一个复合语句中定义了一个变量,则有关该变量正确的说法是。
A)只在该复合语句中有效B)只在该函数中有效
C)在本程序范围内均有效D)为非法变量
参考答案:A
6.24以下不正确的说法为。