C练习题函数
- 格式:docx
- 大小:12.41 KB
- 文档页数:4
习题、选择题1、以下只有在使用时才为该类型变量分配内存的存储类说明是------- ___ B _____A. auto 和staticB.auto 和registerC.register 和staticD.extern 和register2、下述程序的输出结果是_____ A ___ 。
long fun (int n){ long s;if(n==1|| n==2 )s=2 ;else s=n-fun (n-1 );return s;}main (){ printf (“ %ldn”,fun (3));}A. 1B.2C.3D.43、C 语言中形参的默认存储类别是______ A ______A. 自动(auto )B. 静态(static )C.寄存器(register)D.外部(extern )4、下面对函数嵌套的叙述中,正确的是________ B ___A. 函数定义可以嵌套,但函数调用不能嵌套B. 函数定义不可以嵌套,但函数调用可以嵌套C. 函数定义和函数调用均不能嵌套D. 函数定义和函数调用均可以嵌套5 、下面关于形参和实参的说法中,正确的是 ______ B ____ 。
A. 形参是虚设的,所以它始终不占存储单元B. 实参与它所对应的形参占用不同的存储单元C. 实参与它所对应的形参占用同一个存储单元D. 实参与它所对应的形参同名时可占用同一个存储单元6、关于全局变量的作用范围,下列说法正确的是______ D ______ 。
A.本程序的全部范围B.离定义该变量的位置最接近的函数C.函数内部范围D.从定义该变量的位置开始到本文件结束7、调用一个函数,此函数中没有return 语句,下列说法正确的是:该函数 ________ DA.没有返回值B.返回若干个系统默认值C.能返回一个用户所希望的函数值D.返回一个不确定的值8、以下函数调用语句中含有____ B ____ 个实参。
fun ((exp1,exp2),(exp3 ,exp4,exp5 ));A.1B.2C.4D.59、以下程序的输出结果是__C _____ 。
习题一、选择题1、以下只有在使用时才为该类型变量分配内存的存储类说明是----____B______。
2、下述程序的输出结果是____A____。
long fun〔int n〕{ long s;if〔n==1|| n==2〕s=2;else s=n-fun〔n-1〕;return s;}main〔〕{ printf〔“%ld\n〞,fun〔3〕〕;}3、C语言中形参的默认存储类别是____A________。
A.自动〔auto〕B.静态〔static〕C.存放器〔register〕D.外部〔extern〕4、下面对函数嵌套的表达中,正确的选项是_____B_____。
A.函数定义可以嵌套,但函数调用不能嵌套B.函数定义不可以嵌套,但函数调用可以嵌套5、下面关于形参和实参的说法中,正确的选项是____B_____。
A.形参是虚设的,所以它始终不占存储单元6、关于全局变量的作用范围,以下说法正确的选项是____D_______。
7、调用一个函数,此函数中没有return语句,以下说法正确的选项是:该函数____D____。
8、以下函数调用语句中含有____B_____个实参。
fun 〔〔exp1,exp2〕,〔exp3,exp4,exp5〕〕;9、以下程序的输出结果是__C______。
fun〔int a,int b,int c〕{ c=a*a+b*b;}main〔〕{ int x=22;fun〔4,2,x〕;printf〔〞%d〞,x〕;10、以下程序的输出结果是____A _____。
#include <stdio.h>int func (int x,int y){ static int m=2,k=2;k+=m+1;m=k+x+y;return m;}main(){ int a=8,b=1,p;p=func(a,b);printf("%d,",p);p=func(a,b);printf("%d",p);}A.14,29B.14,24C.14,8D.14,3011、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为__B_____。
c编程练习题(打印版)C语言编程练习题一、基础练习1. 编写一个程序,计算并输出两个整数的和、差、乘积和商。
提示:使用scanf函数输入两个整数,使用算术运算符进行计算。
2. 编写一个程序,计算并输出一个圆的面积。
提示:圆的面积公式为A = π * r * r,其中 r 是圆的半径。
3. 编写一个程序,计算并输出一个矩形的周长和面积。
提示:矩形的周长公式为 P = 2 * (l + w),面积公式为 A = l * w,其中 l 是长度,w 是宽度。
4. 编写一个程序,判断一个整数是奇数还是偶数。
提示:使用模运算符 % 来判断。
二、控制结构练习1. 编写一个程序,根据用户输入的分数,输出对应的等级。
提示:90分以上为 A,80-89分为 B,70-79分为 C,60-69分为D,60分以下为 F。
2. 编写一个程序,实现简单的猜数字游戏。
提示:程序随机生成一个1到100之间的整数,用户输入猜测的数字,程序根据用户输入给出提示(太高、太低或正确)。
3. 编写一个程序,实现一个简单的计算器。
提示:程序提示用户输入运算符(+、-、*、/)和两个操作数,然后输出计算结果。
三、数组练习1. 编写一个程序,实现对一个整数数组的排序。
提示:可以使用冒泡排序、选择排序或插入排序算法。
2. 编写一个程序,找出一个字符串数组中最长的字符串。
提示:遍历字符串数组,比较每个字符串的长度。
3. 编写一个程序,实现字符串的反转。
提示:可以使用数组的索引特性来实现。
四、函数练习1. 编写一个函数,计算一个数的阶乘。
提示:使用递归或循环来实现。
2. 编写一个函数,实现字符串的复制。
提示:不使用库函数,手动复制字符串。
3. 编写一个函数,判断一个字符串是否为回文字符串。
提示:回文字符串是指正读和反读都一样的字符串。
五、指针练习1. 编写一个程序,使用指针交换两个整数的值。
提示:注意指针变量的赋值和解引用。
2. 编写一个程序,实现字符串的连接。
函数一、选择题1.以下说法中错误的是A.C程序中可以只包含一个main函数__________。
B.C程序由一个main函数和若干其它函数构成C.C程序中可以没有main函数,但至少包含一个其他函数D.C程序由函数组成,函数是构成程序的基本单位2.以下说法中正确的是__________。
A.main函数和其他函数间可相互调用B.main函数可以调用其他函数,但其他函数不能调用main函数C.因为main函数可不带参数,所以其后的参数小括号能省略D.根据情况可以不写main函数3.以下正确的函数首部定义形式是__________。
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);4.C语言规定,函数返回值的类型是由__________。
A. return语句中的表达式类型所决定B.在定义该函数时所指定的函数类型所决定C.调用该函数时系统临时决定 D.调用该函数时的主调函数类型所决定5.在C语言程序中,以下正确的描叙是__________。
A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义和函数的调用均不可以嵌套C.函数的定义不可以嵌套,但函数的调用可以嵌套D.函数的定义和函数的调用均可以嵌套6.以下正确的说法是__________。
A.用户若需调用标准库函数,调用前必须重新定义B.用户若需调用标准库函数,调用前不必使用预编译命令将函数所在文件包括到用户源文件中,系统自动去调C.系统根本不允许用户重新定义标准库函数D.用户可以重新定义标准库函数,若如此,该函数将失去原有含义7.以下所列的各函数原型中,正确的是__________。
A.void abc(var a:intergervar b:interger) B.void abc(int a,b)C.void abc(int a,int b) D.sub abc(a as interger,a as interger)8.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是__________。
C语言函数练习题一、选择题1.在函数的说明和定义时若没有指出函数的类型,则( A )A: 系统自动地认为函数的类型为整型。
B: 系统自动地认为函数的类型为字符型。
C: 系统自动地认为函数的类型为实型。
D: 编译时会出错。
2.下面正确的函数定义形式是( A )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);3. 若调用一个函数,且此函数中没有return 语句,则正确的说法是:该函数( D )A: 没有返回值;B: 返回若干个系统默认值;C: 能返回一个用户所希望的函数值;D: 返回一个不确定的值4. C语言允许函数返回值类型缺省定义,此时该函数隐含的返回值类型是( B )A: float 型B: int 型C: long 型D: double 型5. C语言规定,函数返回值的类型是由( D )(二级题)A: return 语句中的表达式类型所决定;B: 调用该函数时的主调函数类型所决定;C: 调用该函数时系统临时决定;D: 在定义该函数时所指定的函数类型所决定6.下面函数调用语句含有实参的个数为( B )func((exp1,exp2),(exp3,exp4,exp5));A: 1B: 2C: 5D: 47. 以下错误的描述是( D )函数的调用可以A: 出现在执行语句中;B: 出现在一个表达式中;C: 为一个函数的实参;D: 作为一个函数的形参;8.若函数的形参为一维数组,则下列说法中正确的是( B )A: 调用函数时的对应实参必为数组名。
B: 形参数组可以不指定大小。
C: 形参数组的元素个数必须等于实参数组的元素个数。
D: 形参数组的元素个数必须多于实参数组的元素个数。
9.下面叙述中正确的是( C )A: 对于用户自己定义的函数,在使用前必须加以说明。
一、选择题1. 以下程序的运行结果是。
#include<stdio.h>int fun(int n){int m=0,f=-1,i;for(i=1;i<=n;i++){m=m+i*f;f=-f;}return m;}int main(){printf("m=%d\n",fun(10));return 0;}A.m=5 B.m=-6 C.m=6 D.m=-52. C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是。
A.地址传递B.单项值传递C.由实参传给形参,再由形参传回给实参D.由用户指定传递方式3. 以下程序有语法性错误,有关错误原因的正确说法是。
#include<stdio.h>int main(){int G=5,k;void prt_char ( );...k=prt_char(G);...}A.语句void prt_char( ); 有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线4. 以下程序的运行结果是。
#include<stdio.h>int fun(int a,int b){if(a>b) return (a+b);else return (a-b);}int main(){int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);return 0;}A.-16 B.-17 C.17 D.165. 以下程序的功能是计算函数F(x,y,z) = (x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。
#include<stdio.h>#include<math.h>float f(float,float);int main( ){float x,y,z,sum;scanf("%f%f%f",&x,&y,&z);sum=f( )+f( );printf("sum=%f\n",sum);return 0;}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 6. 以下程序可选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。
第六部分函数一、单项选择题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)A.inta(floatx[],intn)B.inta(float*x,intn)C.inta(floatx[10],intn)D.inta(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的值,并将结果正确返回。
函数一、选择题1.在c语言中以下不正确的说法是:()A.实参可以是常量、变量、或表达式B.形参可以是常量、变量或表达式C.实参可以为任意类型D.形参应与其对应的实参类型一致2.以下程序有语法性错误,有关错误原因的正确说法是:()int main(){ int G=5,k;void prt_char();……k=prt_char(G);……}A.语句void prt_char();有错,它是函数调用语句,不能用void说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线3.以下正确的说法是:()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套4.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:()A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参5.以下所列的各函数首部中,正确的是:()A、 void play(var :Integer,var b:Integer)B、 void play(int a,b)C、 void play(int a,int b)D、 Sub play(a as integer,b as integer)6.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:()A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定7.有以下程序void fun (int a,int b,int c){ a=456; b=567; c=678;}int main(){ int x=10, y=20,z=30;fun (x,y,z);printf("%d,/%d,%d\n",x,y,z);return 0;}输出结果是:()A、30,20,10B、10,20,30C、456,567,678D、678,567,4568.下述函数定义形式正确的是()。
C语言程序设计练习题及参考答案1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
#include <stdio.h>int fun(int a,int b,int c){if(a+b>c && b+c>a && a+c>b){if(a==b && b==c)return 3;else if(a==b||b==c||a==c)return 2;else return 1;}else return 0;}void main(){int a,b,c,shape;printf("\nInput a,b,c: ");scanf("%d%d%d",&a,&b,&c);printf("\na=%d, b=%d, c=%d\n",a,b,c);shape =fun(a,b,c);printf("\n\nThe shape : %d\n",shape);}2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为3,b中的值原为8,程序运行后a 中的值为8,b中的值为3。
#include <stdio.h>void fun(int *x,int *y){int t;t=*x;*x=*y;*y=t}void main(){int a=3,b=8;printf("%d %d\n",a,b);fun(&a,b);printf("%d %d\n",a,b);}3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。
例如,输入的数为:55 12 34,输出结果应当是:a=55.0,b=34.0,c=12.0。
1.对于无返回值的函数,必须以作为类型修饰符。
对于有返回值函数,要结束函数运行必须使用语句。
2.以下函数定义中能正确编译的是。
A.double fun(int x,int y) {double z; z=x+y; return z;}B.double fun(int x,int y) { z=x+y; return z;}C.double fun(int x,int y) {int x,y; double z; z=x+y; return z;}D.double fun(int x, y) {int z=x+y; return z;}3.下列叙述中,不正确的是A.一个函数中可以有多个return语句B.函数可以通过return 语句返回数据C.必须用一个独立的语句来调用函数D.函数main也可以带有参数4.已知函数f的定义是“int f(int n){ n*=2;return n+1;}”,则执行“int m=5,n=3; m=f(n);”后m的值是,实参n的值是。
5.有关函数重载的正确说法是。
A.函数名不同,但参数的个数和类型相同B.函数名相同,但参数的个数不同或参数的类型不同C.函数名相同,参数的个数和类型也相同D.函数名相同,函数的返回值不同,而与函数的参数和类型无关6.以下四组函数原型说明中,满足C++函数重载规则的是。
A.float f(float x);void f(float y);B.float f(float x);void f2(float x,float y);C.float f(float x,int y);void f(float y);D.float f(float y);float f(float y);7.有函数定义“void f(int a,float b){……}”,变量定义“int y,float x;int k”,则以下对函数调用中正确的是A.f(y,x);B.k=f(y,x);C.void f(y,x);D.f(int y,float x);8.下列函数原型说明语句中错误的是A. void p1(int x,int y)B.double p1(int x,y);C. float p1(x,y);D.float p1(int x,int y);9. 以下程序运行后输出的结果是________。
#include<iostream.h>int f1(int x,int y){return x>y x:y ;}int f2(int x,int y){return x>y y:x ;}void main(){int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;cout<<e<<’, ’<<f<<’, ’<<g;}A.4,3,7 B.3,4,7 C.5,2,7 D.2,5,710.下面程序的输出结果是___________。
#include<iostream.h>int fun(int num){int k=1;do{ k*=num%10; num/=10; }while(num);return(k) ;}void main(){ int n=26; cout<<fun(n) ; }A.0 B.4 C.12 D.无限次循环11.以下程序运行后的输出结果是________________。
#include<iostream.h>void swap(int x,int y){ int t;t=x;x=y;y=t; cout<<x<<’\t’<<y<<’\t’;}void main(){ int a=3,b=4;swap(a,b);cout<<a<<’\t’<<b;}12. 阅读以下程序:#include<iostream.h>int f(void) //行A1{ //行A2static int a,b=10,c=1; //行A3a+=b;b+=c;return c=a+b; //行A4} //行A5void main(void) //行B1{ //行B2cout<<f()<<endl; //行B3cout<<f()<<endl; //行B4} //行B5请回答以下问题:①以上程序中静态变量有;初值分别是,所有静态变量的作用域为。
②main函数中两次调用f函数的语句分别是行和行。
③第一次调用f函数结束后变量a的值是,b的值是,c的值是。
④第二次调用f函数结束后变量a的值是,b的值是,c的值是。
⑤A3行语句在整个程序的执行过程中共被执行了次;⑥程序运行后输出的第一行到第二行分别是________________、________________。
13. 阅读以下程序:#include<iostream.h>int x=100; //行A1void main() //行A2{ //行A3int x=200; //行A4x+=::x; //行A5{ //行A6int x=500; //行A7::x+=x; //行A8} //行A9cout<<x<<endl; //行A10cout<<::x<<endl; //行A11} //行A12请回答以下问题:①以上程序中全局变量是,其作用域是。
②A4行的变量x和A1行的变量x在内存中是否表示同一个单元?。
③A5行符号”::”称为运算符,表示。
④A7行的变量x和A4、A1行的变量x在内存中是否表示同一个单元?。
⑤A7行的变量所占的内存空间何时被释放?。
⑥A10行执行后将输出。
⑦A11行执行后将输出。
14.以下程序输出结果的第一行是,第二行是。
#include <iostream.h>int k;void main(void){k=10;for(int i=0;i<5;i++){int k;k=i+1;cout<<k<<' '; ::k++;}cout<<'\n'<<k<<'\n';}15.以下程序输出的第一行是,第二行是。
# include<iostream.h>int f(int x){static int u=1;x+=x; return u*=x;}void main(void){int x=10;cout<<f(x)<<'\n'; cout<<f(x)<<'\n';}16.以下程序输出的第一行是,第二行是。
#include <iostream.h>int a=15;void main(){int a=20,b=40;{int a=0,b=0;for(int i=1;i<3;i++){a+=i;b+=a;}cout<<a<<' '<<b<<' '<<::a<<endl;}cout<<a<<' '<<b<<endl;}17.下列表示引用的方法中,____________是正确的。
已知:int m=10;A.int &x=m;B.int &y=10;C.int &z;D.float &t=&m;18.有以下程序:#include<iostream.h>void f(int a,int &b){ int t= a; a=b; b=t; }void main(void){int x=10,y=20;cout<<x<<'\t'<<y<<'\n';f(x , y); //行Acout<<x<<'\t'<<y<<'\n';}请回答问题:①函数f的功能:________________________________________。
②函数f的形参a的传递方式为:______________,根据该传递方式的特点,当执行完行A 后,实参x的值会不会改变?__________。
③函数f的形参b的传递方式为:______________,根据该传递方式的特点,当执行完行A 后,实参y的值会不会改变?__________。
④行A可不可以写成f(x , &y); ?____________,为什么?________________________。
⑤程序的输出结果:__________________,并上机验证。
19.以下程序输出的第一行是__________,第二行是__________,第三行是__________。
#include<iostream.h>void fn(int &x){static int y=1;x+=y;y+=x;cout<<x<<","<<y<<'\n';}void main(){int y=1;fn(y);fn(y);fn(y);}。