C语言 第六章 函数期末测试习题与答案
C语言程序设计 第六章 函数 试题及答案
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)数组元素的个数
C语言函数练习题(含答案解析)
C语言-函数1. 以下正确的函数定义形式是()。
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)2. 函数调用语句:func((x1,x2),(x3,x4,x5));含有的实参个数是()。
A)1 B)2C)4 D)53. 对函数调用描述错误的是()。
A)出现在执行语句中B)出现在表达式中C)作为函数的实参D)作为函数的形参4. 以下不正确的说法是()。
A)不同函数中可以使用同名变量B)函数内定义的变量只在本函数范围内有效C)形式参数是局部变量D)复合语句中定义的变量在本函数范围内有效5.以下正确的说法是()。
在C语言中A)实参和与其对应的形参各占用独立的存储单元B)实参和与其对应的形参共占用一个存储单元C)只有当实参和与其对应的形参同名时才共同占用存储单元D)形参是虚拟的,不占用存储单元6.对函数及其参数,在C语言中以下描述不正确的是()。
A)主函数main()可以有参数B)实参和形参必须类型一致C)函数调用时是实参传送给形参,而形参不能传送给实参D)函数的返回值可有可无7.在C语言程序中,下列说法中()是正确的。
A)函数的定义和调用都可以嵌套B)函数的定义和调用都不可以嵌套C)函数的定义可以嵌套,而调用不能嵌套D)函数的定义不能嵌套,而调用可以嵌套8.定义一个具有返回值的函数,但没加类型说明,该函数的默认类型为()。
A)int B)void C)float D)不确定9.函数返回值的类型取决于()。
A)函数的类型B)return语句中表达式的类型C)调用函数将值赋给的变量的类型D)函数类型与return语句中表达式类型中较高的类型10.C语言中形参的默认存储类别是()。
A)自动(auto)B)静态(static)C)寄存器( register) D)外部(extern)11.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传送方式是()。
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。
完整word版,函数练习题(C语言)带答案
C语言函数练习题一、选择题1. 一个完整的C源程序是【】。
A)要由一个主函数或一个以上的非主函数构成B)由一个且仅由一个主函数和零个以上的非主函数构成C)要由一个主函数和一个以上的非主函数构成D)由一个且只有一个主函数或多个非主函数构成2. 以下关于函数的叙述中正确的是【】。
A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以定义任意一个函数3. 以下关于函数的叙述中不正确的是【】。
A)C程序是函数的集合,包括标准库函数和用户自定义函数B)在C语言程序中,被调用的函数必须在main函数中定义C)在C语言程序中,函数的定义不能嵌套D)在C语言程序中,函数的调用可以嵌套4. 在一个C程序中,【】。
A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置5. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【】A)float B)longC)int D)double6. 以下关于函数叙述中,错误的是【】。
A)函数未被调用时,系统将不为形参分配内存单元B)实参与形参的个数应相等,且实参与形参的类型必须对应一致C)当形参是变量时,实参可以是常量、变量或表达式D)形参可以是常量、变量或表达式7. C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是【】。
A)参数的形实结合B)函数返回值C)全局变量D)同名的局部变量8. 若函数调用时参数为基本数据类型的变量,以下叙述正确的是【】。
A)实参与其对应的形参共占存储单元B)只有当实参与其对应的形参同名时才共占存储单元C)实参与对应的形参分别占用不同的存储单元D)实参将数据传递给形参后,立即释放原先占用的存储单元9. 函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是【】。
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语言期末试题及答案及详解本文将提供C语言的期末试题及答案,并对每个问题进行详细解析,旨在帮助读者更好地理解和掌握C语言知识。
每个问题都将以清晰的排版和通顺的语句进行阐述,以确保文章的可读性和表达流畅。
试题一:1. 以下代码段输出的结果是什么?```c#include <stdio.h>int main() {int x = 6 / 2 * (1 + 2);printf("%d", x);return 0;}```答案及详解:输出的结果是9。
这个问题考察了C语言中的运算符优先级。
根据优先级规则,先计算括号内的表达式1 + 2,结果为3。
然后进行乘法运算6 / 2 * 3,结果为9。
最后通过printf函数将结果打印出来。
试题二:2. 以下代码段中存在什么错误,并进行改正。
```c#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", num1, num2);int sum = num1 + num2;printf("两个整数的和为:%d", sum);return 0;}```答案及详解:代码存在的错误是scanf函数参数传递时变量名未加取地址符&,需要改正为scanf("%d %d", &num1, &num2)。
scanf函数用于从标准输入读取数据,需要通过取地址符&将变量的地址传递给scanf函数,以便将读取的数据存储到相应的变量中。
在给定的代码中,应该在num1和num2前面加上&,即scanf("%d %d", &num1, &num2)。
试题三:3. 下面的代码中,函数fun的返回值是什么?```c#include <stdio.h>int fun(int *arr, int n) {if (n == 0) {return 0;}return (*arr) + fun(arr+1, n-1);}int main() {int arr[] = {1, 2, 3, 4, 5};int sum = fun(arr, 5);printf("数组元素的和为:%d", sum);return 0;}```答案及详解:函数fun的返回值是数组元素的和。
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语言函数题库及答案
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的值,并将结果正确返回。
C语言程序设计实验六函数答案《西北民大电气学院》
实验六函数一,实验目的:1,掌握定义函数的方法.2,掌握函数实参与形参的对应关系,以及"值传递"的方式.3,掌握函数的嵌套调用和递归调用的方法.4,掌握全局变量和局部变量动态变量,静态变量的概念和使用方法.二,实验准备:1,复习函数调用的基本理论知识.2,复习函数的嵌套调用和递归调用的方法.3,复习全局变量,局部变量;静态变量,动态变量;外部变量等概念和具体使用. 4,源程序.三,实验步骤及内容:1,运行程序并回答问题(1)程序main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n")}void print_message(){ printf("Good Friend! \n");}void play(n)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}}问题:运行后出现什么错误为什么应如何修改请上机调试.修改:main(){ play(3);}void print_star(){ printf("* * * * * * * * * *\n");(缺少分号)}void print_message(){ printf("Good Friend! \n");}play(n)(原先void的与声明类型不同)int n;{ int i;for(i=1;i<=n;++i){ print_star();print_message();}getch();}运行结果(2)以下程序用于计算1+2+3+4+5.main(){ int i,sum;for(i=1;i<=5;++i)sum=add(i);printf("sum=%d\n",sum);getch();}add (a)int a;{static int s=0;s=s+a;return(s);}运行结果:问题:此程序能否得到正确结果为什么请在不增加语句的条件下,修改程序并上机调试.(3)程序int x=567,y=890;main(){ printf("x=%d,y=%d\n",x,y);}运行结果:问题:运行程序后出现什么错误为什么如何修改答:定义位置出错,y的定义在主函数之后了,将y的定义改在和x一样的位置处。
C语言 第六章 函数期末测试习题与答案
C语言第六章函数期末测试习题与答案1、以下叙述正确的是A. C语言中除了main函数,其他函数不可作为单独文件形式存在B.C语言程序是由过程和函数组成的C.C语言函数可以嵌套调用D.C语言函数不可以单独编译参考答案:C2、以下关于C语言程序中函数的说法正确的是A.函数的定义和调用均不可以嵌套;B.函数的定义可以嵌套,但函数的调用不可以嵌套;C.函数的定义和点用都可以嵌套。
D.函数的定义不可以嵌套,但函数的调用可以嵌套;参考答案:D3、若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是A.调用可以出现在表达式中B.调用可以作为独立的语句存在C.调用可以作为一个函数的形参D.调用可以作为一个函数的实参参考答案:C4、以下关于return语句的叙述中正确的是A.没有return语句的自定义函数在执行结束时不能返同到调用处B.一个自定义函数中可以根据不同情况设置多条return语句C.定义成void类型的函数中可以有带返回值的return语句D.一个自定义函数中必须有一条return语句参考答案:B5、C语言规定:函数返回值类型是由A.return语句中的表达式类型决定B.调用该函数时系统临时决定C. 定义该函数时所指定的函数类型决定D.调用该函数时的主调函数类型决定参考答案:C6、以下错误的描述是()函数调用可以_____A.出现在执行语句中B.出现在一个表达式中C.做为一个函数的形参D.做为一个函数的实参参考答案:C7、以下说法不正确的是()C语言规定:A.实参可以是任意类型B.实参可以是常量、变量或表达式C.形参应与其对应的实参类型一致D.形参可以是常量、变量或表达式参考答案:D8、C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是()A.由用户指定传递方式B.单向值传递C.地址传递D.双向值传递参考答案:B9、当调用函数时,实参是一个数组名,则向函数传送的是()A.数组的首地址B.数组每个元素中的值C.数组每一个元素的地址D.数组的长度参考答案:A10、以下正确的说法是( )。
C语言第六章习题带答案
练习6-1答案一、选择题1.已知函数abc的定义为:void abc(){……}则函数定义中void的含义是( A )。
A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回C.执行函数abc后,可以返回任意类型 D.以上三个答案全是错误的2.已知:int p();,p是( C )。
A.int型变量B.函数p的调用C.一个函数声明,该函数的返回值是int型的值D.强制类型转换表达式中的变量3.以下正确的函数形式是( D )。
A.double fun(int x, int y) B.fun(int x, y){ z=x+y; return z; } { int z; return z; }C.fun(x, y) D.double fun(int x, int y) { int x, y; double z; z=x+y; return z; } { double z; z=x+y; return z; }4.以下说法正确的是( C )。
A.定义函数时,形参的类型说明可以放在函数体内B.return后边的值不能为表达式C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准D.如果形参与实参的类型不一致,以实参类型为准5.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。
A.float 型B.int型C.long型D.double型6.下面函数调用语句含有实参的个数为( B )。
func((exp1, exp2), (exp3, exp4, exp5));A.1 B.2 C.4 D.57.以下程序的功能是计算函数F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#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( ①B )+f( ②C ); (注:或者选择sum=f( ①C )+f( ②B ))printf("sum=%f\n", sum);}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二、填空题8.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"This is YES."与"This is NO."。
c语言第六章函数习题答案
c语言第六章函数习题答案C语言第六章函数习题答案在C语言学习的过程中,函数是一个非常重要的概念。
函数不仅可以提高代码的可读性和可维护性,还可以使程序模块化,提高代码的复用性。
在C语言的第六章中,我们学习了关于函数的一些基础知识,并进行了一些习题的练习。
下面,我将为大家提供一些常见的函数习题答案,希望能够对大家的学习有所帮助。
1. 编写一个函数,实现两个整数的交换。
```c#include <stdio.h>void swap(int *a, int *b) {int temp = *a;*a = *b;*b = temp;}int main() {int num1 = 10;int num2 = 20;printf("交换前:num1 = %d, num2 = %d\n", num1, num2);swap(&num1, &num2);printf("交换后:num1 = %d, num2 = %d\n", num1, num2);return 0;}```2. 编写一个函数,实现判断一个数是否为素数。
```c#include <stdio.h>int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i < num; i++) {if (num % i == 0) {return 0;}}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数。
\n", num);} else {printf("%d不是素数。
\n", num);}return 0;}```3. 编写一个函数,实现计算一个数的阶乘。
c语言期末考试练习题6(含答案)
一、单项选择题(6小题,每小题3分,共18分)1、设有以下语句:struct st{ int n;struct st * next;};static struct st a[3]= {5,&a[1],7,&a[2],9,'\0'},* p;p=&a[0];以下表达式的值为6的是( )A、p++–>nB、p–>n++C、( * p).n++D、++p–>n2、以下程序的运行结果是( )# include <stdio.h>int main( ){ union{ long a;int b;char c;}m;printf("%d\n",sizeof(m));return 0;}A、2B、4C、6D、83、下面程序的运行结果是( )# include <stdio. h>int main ( ){ int a=28,b;char s[10],* p;p=s;do { b=a%16;if(b<10) * p=b+48else * p= b+55p++;a = a/5;}while(a>0);puts(s);return(0);}A、10B、C2C、C51D、\04、以下与库函数strcpy(char * p1,char * p2)功能不相等的程序段是( )A、void strcpy1 (char * p1,char * p2){ while((* pl++=* p2++)!='\0');}B、void strcpy1 (char * p1,char * p2){ while(* pl=* p2)!='\0');{p1++;p2++;}}C、void strcpy1(char * p1,char * p2){ while(* p2) * p1++=* p2++;}D、void trcpy1 (char * p1,char * p2){ while((* p1++=* p2++);)* p='\0';}5、已知ch是字符型变量,下面不正确的赋值语句是( )。
C语言习题第六章下
/**********ERROR**********/ if( *a>*c ) { k=*c; *c=*a; *a=k; } if( *b<*c ) { k=*b; *b=*c; *c=k; }
t=b;b=a;a=t; } void main() {int a,b;
printf("Enter a, b: "); scanf("%d%d",&a,&b); fun(&a, &b); printf("a=%d b=%d\n ", a,b); } 【改错1】 错误 【学生答案】 void fun(int a,b)
} int main() { float a,b,c;
printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); fun(&a,&b,&c); printf("a = %4.1f, b = %4.1f, c = %4.1f\n\n",a,b,c); return 0; }
/*下列给定程序中,函数fun的功能是:实现两个整数的交换。例如,给a和b分别输入60和65, 输出为:a=65 b=60 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:*/
c语言函数试题及答案
c语言函数试题及答案C语言函数试题及答案一、选择题1. 在C语言中,以下哪个关键字用于声明函数?A. intB. voidC. returnD. function2. 以下哪个函数原型声明是正确的?A. void myFunction();B. int myFunction() {}C. int myFunction();D. myFunction(int, int);3. 在C语言中,函数的返回值通过哪个关键字返回?A. returnB. outputC. resultD. yield二、填空题4. 在C语言中,如果一个函数没有返回值,其返回类型应该是________。
5. 函数的参数可以是常量、变量或________。
三、简答题6. 简述C语言中函数的作用。
四、编程题7. 编写一个C语言函数,该函数接受两个整数作为参数,并返回它们的和。
五、分析题8. 阅读以下C语言函数代码,并指出其功能及可能存在的问题。
```cvoid swap(int *x, int *y) {int temp;temp = *x;*x = *y;*y = temp;}```答案:一、选择题1. C2. C3. A二、填空题4. void5. 表达式三、简答题6. 函数在C语言中用于封装一段代码,使其可以重复使用。
函数可以接收参数,执行特定的任务,并可选择性地返回一个值。
四、编程题7.```cint add(int a, int b) {return a + b;}```五、分析题8. 该函数的功能是交换两个整数的值。
它通过指针参数接收两个整数的地址,并在函数内部交换这两个整数的值。
可能存在的问题是,如果传入的参数不是有效的整数地址,或者指针所指向的内存区域不可写,那么将会导致程序错误或崩溃。
《C语言程序设计》第6章习题答案
1、选择题(1)A(2)C(3)A(4)B(5)B(6)D(7)D(8)B(9)D(10)B2、填空题(1)a=10,b=20a=20,b=10(2)**pp=603、程序设计题(1)#include<stdio.h>char *month_name(int n);void main(){int n;printf("\nPlease enter 1 integer:");scanf("%d",&n);printf("%d month :%s\n",n,month_name(n));}char *month_name(int n){static char*name[]={"illegal month","Jan","Feb","Mar","Apr","May","Jun","July","Aug","Sept","Oct","Nov","Dec"};return ((n<1||n>12)?name[0]:name[n]);}(2)#include<stdio.h>#define N 10sort(int data[]){int i,j,min_a,temp;for(i=0;i<N;i++){min_a=i;for(j=i+1;j<N;j++)if(*(data+j)<*(data+min_a))min_a=j;if(min_a!=i){temp=*(data+min_a);*(data+min_a)=*(data+i);*(data+i)=temp;}}}main(){int i,j,data[N],temp;int min_a;printf("\nPlease input %d int:\n",N);for(i=0;i<N;i++)scanf("%d",&data[i]);sort(data);printf("After sorted:\n");for(i=0;i<N;i++)printf(" %d",data[i]);}(3)#include <stdlib.h>void reverse(char *c);void main(){char str[80];puts("Please enter 1 string\n");gets(str);reverse(str) ;puts("After reversed\n");puts(str);}void reverse(char *c){char *p,*q,temp;int size=0;for(p=c;*p!='\0';p++)size++;size=size/2;for(q=c,p--;q<c+size;q++,p--){temp=*q;*q=*p;*p=temp;}}(4)#include<stdio.h>#include<string.h>void sort(char *keyword[],int size);void print(char *keyword[],int size)void main(){char *keyword[]={"if","else","case","switch","do","whlie","for","break","continue"};sort(keyword,9);print(keyword,9);}void sort(char *keyword[],int size){int i,j,min_location;char *temp;for(i=0;i<size-1;i++){min_location=i;for(j=i+1;j<size;j++)if(strcmp(keyword[min_location],keyword[j])>0) min_location=j;if(min_location!=i){temp=keyword[i];keyword[i]=keyword[min_location];keyword[min_location]=temp;}}}void print(char *keyword[],int size){int i;for(i=0;i<size;i++)printf("\n%s",*(keyword+i));}(5)#include<stdio.h>void fun_char(char str1[],char str2[],char str3[]);void main(){char str1[80],str2[80],str3[80],c,i;printf("\nPlease enter 2 string:");scanf("%s%s",str1,str2);fun_char(str1,str2,str3);printf("Third string is %s.",str3);}void fun_char(char *str1,char *str2,char *str3){int i,j,k,flag;i=0,k=0;while(*(str1+i)!='\0'){j=0;flag=1;while(*(str2+j)!='\0'&&flag==1){if(*(str2+j)==*(str1+i)) flag=0;j++;}if(flag){*(str3+k)=*(str1+i); k++;}i++;}*(str3+k)='\0';}(6)#include<stdio.h>int count_word(char *str);void main(){char str1[80],c,res;puts("\nPlease enter a string:");gets(str1);printf("There are %d words in this sentence",count_word(str1)); }int count_word(char *str){int count ,flag;char *p;count=0;flag=0;p=str;while(*p!='\0'){if(*p==' ')flag=0;else if(flag==0){flag=1;count++;}p++;}return count;}(7)#include<stdio.h>#include<string.h>char *encrypt(char *string);char *decrypt(char *string);main(){char item[80];char *point;char *pEncrypted;char *pDecrype;printf("Please enter the string need to encrypt:\n");gets(item);point=item;pEncrypted=encrypt(point);printf("\nThe string after encrypted is:\n%s\n",pEncrypted); pDecrype=decrypt(pEncrypted);printf("\nThe string after decrypted is:\n%s\n",pDecrype);free(pEncrypted);free(pDecrype);}char *encrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80);if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string-2;string++;q++;}*q='\0';return t;}char *decrypt(char *string){char *q,*t;q=(char *)malloc(sizeof(char)*80); if(!q){printf("No place to malloc!");return 0;}t=q;while(*string!='\0'){*q=*string+2;string++;q++;}*q='\0';return t;}。
C语言程序设计第6章 练习题
一、单项选择题题目1在下面的函数声明语句中存在着语法错误的就是( )。
a、AA(int, int)b、AA(int a; int b)c、AA(int a, int)d、AA(int a, int b)题目2如果一个函数定义仅允许为所在的程序文件调用,则应在该函数定义的最前面添加的关键字为( )。
a、externb、staticc、defaultd、auto题目3假定一个函数定义为“extern char* f1(char*x){return x;}”,表示该函数作用域的关键字为( )。
a、externb、charc、intd、char*题目4假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a[10],则下面函数调用表达式不正确的就是( )。
a、ff(a)b、ff(a[0])c、ff(&a[0])d、ff(a+3)题目5假定一个函数原型语句为“int f1(int a[],int n);”,与数组参数等价的表示为( )。
a、int** ab、int& ac、int* ad、int a题目6假定一个函数的参数说明为const int a,则在函数体中不能进行的操作就是( )。
a、a==0b、a=10c、printf("%d",a)d、intx=a题目7在函数体中定义的变量具有( )。
a、文件作用域b、局部作用域c、函数作用域d、全局作用域题目8在函数外定义的变量,若带有作用域关键字static,则它具有( )。
a、全局作用域b、文件作用域c、函数作用域d、局部作用域题目9在函数体中定义一个静态变量时,选用的存储属性关键字为( )。
a、staticb、registerc、externd、auto题目10假定一个函数原型为“void ff(int a[],int n)”,则对应的函数指针类型为( )。
a、*ff(int[],int)b、void(*ff)(int*a,int)c、void*ff(int*a,int)d、int (*ff)(int*a,int)二、判断题题目11函数定义格式中的参数表被称为实参表。
c语言函数考试题及答案
c语言函数考试题及答案C语言函数考试题及答案1. 以下哪个选项是C语言中函数定义的正确格式?A. int function_name(int a, int b) { return a + b; }B. int function_name(int a, int b) { return a - b; }C. int function_name(int a, int b) { return a * b; }D. int function_name(int a, int b) { return a / b; } 答案:A2. 函数原型声明的作用是什么?A. 定义函数的具体实现B. 说明函数的返回类型和参数列表C. 调用函数时传递参数D. 返回函数的执行结果答案:B3. 如何在C语言中调用一个函数?A. 直接使用函数名B. 使用函数名和参数列表C. 使用函数名和返回值D. 使用函数名和参数类型答案:B4. C语言中,以下哪个函数可以正确计算两个整数的乘积?A. int multiply(int a, int b) { return a * b; }B. int multiply(int a, int b) { return a + b; }C. int multiply(int a, int b) { return a - b; }D. int multiply(int a, int b) { return a / b; }答案:A5. 函数的返回值是什么?A. 函数执行后的结果B. 函数执行前的输入C. 函数内部的局部变量D. 函数的参数答案:A6. 在C语言中,如果函数没有返回值,应该使用哪个关键字?A. intB. voidC. charD. float答案:B7. 以下哪个选项是C语言中函数调用的正确格式?A. function_name(a, b);B. function_name[a, b];C. function_name{a, b};D. function_name(a; b);答案:A8. C语言中,函数的参数传递方式是什么?A. 值传递B. 引用传递C. 地址传递D. 指针传递答案:A9. 如果需要在函数中修改传入的参数值,应该使用哪种参数传递方式?A. 值传递B. 引用传递C. 地址传递D. 指针传递答案:D10. 在C语言中,以下哪个函数可以正确计算两个整数的和?A. int sum(int a, int b) { return a + b; }B. int sum(int a, int b) { return a - b; }C. int sum(int a, int b) { return a * b; }D. int sum(int a, int b) { return a / b; }答案:A。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言第六章函数期末测试习题与答案
1、以下叙述正确的是
A. C语言中除了main函数,其他函数不可作为单独文件形式存在
B.C语言程序是由过程和函数组成的
C.C语言函数可以嵌套调用
D.C语言函数不可以单独编译
参考答案:C
2、以下关于C语言程序中函数的说法正确的是
A.函数的定义和调用均不可以嵌套;
B.函数的定义可以嵌套,但函数的调用不可以嵌套;
C.函数的定义和点用都可以嵌套。
D.函数的定义不可以嵌套,但函数的调用可以嵌套;
参考答案:D
3、若已定义的函数有返回值,则以关于该函数调用的叙述中错误的是
A.调用可以出现在表达式中
B.调用可以作为独立的语句存在
C.调用可以作为一个函数的形参
D.调用可以作为一个函数的实参
参考答案:C
4、以下关于return语句的叙述中正确的是
A.没有return语句的自定义函数在执行结束时不能返同到调用处
B.一个自定义函数中可以根据不同情况设置多条return语句
C.定义成void类型的函数中可以有带返回值的return语句
D.一个自定义函数中必须有一条return语句
参考答案:B
5、C语言规定:函数返回值类型是由
A.return语句中的表达式类型决定
B.调用该函数时系统临时决定
C. 定义该函数时所指定的函数类型决定
D.调用该函数时的主调函数类型决定
参考答案:C
6、以下错误的描述是()
函数调用可以_____
A.出现在执行语句中
B.出现在一个表达式中
C.做为一个函数的形参
D.做为一个函数的实参
参考答案:C
7、以下说法不正确的是()
C语言规定:
A.实参可以是任意类型
B.实参可以是常量、变量或表达式
C.形参应与其对应的实参类型一致
D.形参可以是常量、变量或表达式
参考答案:D
8、C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是()
A.由用户指定传递方式
B.单向值传递
C.地址传递
D.双向值传递
参考答案:B
9、当调用函数时,实参是一个数组名,则向函数传送的是()
A.数组的首地址
B.数组每个元素中的值
C.数组每一个元素的地址
D.数组的长度
参考答案:A
10、
以下正确的说法是( )。
如果在一个函数中的复合语句中定义了一个变量,则该变量
A.为非法变量
B.只在该复合语句中有效
C.在本程序范围内有效
D.在该函数中有效
参考答案:B
11、以下不正确的说法为()
A.在不同函数中可以使用相同名字的变量
B.在函数内定义的变量只在本函数范围内有效
C.在函数内的复合语句中定义的变量在本函数范围内有效
D.形式参数是局部变量
参考答案:C
12、以下正确的说法是()
A.系统根本不允许用户重新定义标准库函数
B.用户可以重新定义标准函数,若如此,该函数将失去原有含义
C.用户若需调用标准库函数,调用前必须重新定义
D.用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
参考答案:B
13、在C语言中,以下正确的说法是()
A.实参和与其对应的形参共占用一个存储单元
B.实参和与其对应的形参各占用独立的存储单元
C.只有当实参和与其对应的形参同名时才共占用存储单元
D.形参是虚拟的,不占用存储单元
参考答案:B
14、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()
A.long 型
B.float型
C.int 型
D.double 型
参考答案:C
15、在C语言中,函数的隐含存储类别是()
A.static
B.无存储类别
C.auto
D.extern
参考答案:D
16、以下只有在使用时才为该类型变量分配内存的存储类说明是()
A.auto和 static
B. auto和 register
C.register和 static
D.extern和 register
参考答案:B
17、以下函数定义正确的是()
A.double fun(int x; int y)
B. double fun(int x, int y)
C.double fun(int x , y)
D.double fun(int x, int y)
参考答案:B
18、以下正确的函数形式是()
A.fun(x,y)
{int x,y; double z; z=x+y; return z;}
B.fun (int x,y)
{int z;return z;}
C.double fun(int x,int y)
{z=x+y;return z;}
D.double fun(int x,int y)
{double z;
z=x+y; return z;}
参考答案:D
19、有如下函数调用语句
func(rec1,rec2+rec3,(rec4,rec5));
该函数调用语句中,含有的实参个数是( )。
A.有语法错
B.5
C.3
D.4
参考答案:C
20、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()
A.地址传递
B.由实参传给形参,再由形参传回实参
C.单向值传递
D.传递方式由用户指定
参考答案:C
21、以下叙述中正确的是()
A.全局变量的作用域一定比局部变量的作用域范围大
B.静态(static)类别变量的生存期贯穿于整个程序的运行期间
C.未在定义语句中赋初值的auto变量和static变量的初值都是随机值
D.函数的形参都属于全局变量
参考答案:B
22、有如下程序
int runc(int a,int b)
{ return(a+b);}
main( )
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%\d\n”,r);
}
该程序的输出的结果是()
A.14
B.12
C.15
D.13
参考答案:C
23、有如下程序
long fib(int n)
{
if(n>2) return(fib(n-1)+fib(n-2)); else return(2);
}
main()
{ printf("%d\n",fib(3)); }
该程序的输出结果是()
A.8
B.4
C.2
D.6
参考答案:B
24、
有以下程序
voidf(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\n",a,b,c); }
执行后输出的结果是()
A.4,3,5
B.5,4,3
C.5,3,4
D.3,4,5
参考答案:B
25、程序段:
int x=12;
doub1e y=3.141593;
printf("%d%8.6f"x,y);
的输出结果是()
A.123,1415930
B.123.1415926
C.12,3.141593
D.123.141593
参考答案:D。