当前位置:文档之家› 函数练习题(C语言)带答案

函数练习题(C语言)带答案

函数练习题(C语言)带答案
函数练习题(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)long

C)int D)double

6. 以下关于函数叙述中,错误的是【】。

A)函数未被调用时,系统将不为形参分配内存单元

B)实参与形参的个数应相等,且实参与形参的类型必须对应一致

C)当形参是变量时,实参可以是常量、变量或表达式

D)形参可以是常量、变量或表达式

7. C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是

【】。

A)参数的形实结合

B)函数返回值

C)全局变量

D)同名的局部变量

8. 若函数调用时参数为基本数据类型的变量,以下叙述正确的是【】。

A)实参与其对应的形参共占存储单元

B)只有当实参与其对应的形参同名时才共占存储单元

C)实参与对应的形参分别占用不同的存储单元

D)实参将数据传递给形参后,立即释放原先占用的存储单元

9. 函数调用时,当实参和形参都是简单变量时,他们之间数据传递的过程是【】。

A)实参将其地址传递给形参,并释放原先占用的存储单元

B)实参将其地址传递给形参,调用结束时形参再将其地址回传给实参

C)实参将其值传递给形参,调用结束时形参再将其值回传给实参

D)实参将其值传递给形参,调用结束时形参并不将其值回传给实参

10. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是【】。

A)函数的实参和其对应的形参共占同一存储单元

B)形参只是形式上的存在,不占用具体存储单元

C)同名的实参和形参占同一存储单元

D)函数的形参和实参分别占用不同的存储单元

11. 若用数组名作为函数调用的实参,则传递给形参的是【】。

A) 数组的首地址B) 数组的第一个元素的值

C) 数组中全部元素的值D) 数组元素的个数

12. 若函数调用时,用数组名作为函数的参数,以下叙述中正确的是【】。

A)实参与其对应的形参共用同一段存储空间

B)实参与其对应的形参占用相同的存储空间

C)实参将其地址传递给形参,同时形参也会将该地址传递给实参

D)实参将其地址传递给形参,等同实现了参数之间的双向值的传递

13. 如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了

一个变量,则该变量【】。

A)为全局变量,在本程序文件范围内有效

B)为局部变量,只在该函数内有效

C)为局部变量,只在该复合语句中有效

D)定义无效,为非法变量

14. C语言中函数返回值的类型是由【】决定。

A)return语句中的表达式类型

B)调用函数的主调函数类型

C)调用函数时临时

D)定义函数时所指定的函数类型

15. 若在一个C源程序文件中定义了一个允许其他源文件引用的实型外部变量a,则在另一

文件中可使用的引用说明是【】。

A)extern static float a; B)float a;

C)extern auto float a; D)extern float a;

16. 定义一个void型函数意味着调用该函数时,函数【】

A)通过return返回一个用户所希望的函数值

B)返回一个系统默认值

C)没有返回值

D)返回一个不确定的值

17. 若定义函数float *fun( ),则函数fun的返回值为【】。

A)一个实数B)一个指向实型变量的指针

C)一个指向实型函数的指针D)一个实型函数的入口地址

18.C语言规定,程序中各函数之间【】。

A)既允许直接递归调用也允许间接递归调用

B)不允许直接递归调用也不允许间接递归调用

C)允许直接递归调用不允许间接递归调用

D)不允许直接递归调用允许间接递归调用

19. 若程序中定义函数

float myadd(float a, float b)

{ return a+b;}

并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是【】。

A)float myadd( float a,b);

B)float myadd(float b, float a);

C)float myadd(float, float);

D)float myadd(float a, float b);

20. 关于以下fun函数的功能叙述中,正确的是【】。

int fun(char *s)

{

char *t=s;

while(*t++) ;

t--;

return(t-s);

}

A) 求字符串s的长度B) 比较两个串的大小

C) 将串s复制到串t D) 求字符串s所占字节数

21. 下面程序段运行后的输出结果是【】(假设程序运行时输入5,3回车)

int a, b;

void swap( )

{

int t;

t=a; a=b; b=t;

}

main()

{

scanf("%d,%d", &a, &b);

swap( );

printf ("a=%d,b=%d\n",a,b);

}

A) a=5,b=3 B) a=3,b=5 C)5,3 D)3,5

22. 以下程序运行后的输出结果是【】。

fun(int a, int b)

{

if(a>b) return a;

else return b;

}

main()

{

int x=3,y=8,z=6,r;

r=fun(fun(x,y),2*z);

printf("%d\n",r);

}

A) 3 B) 6 C) 8 D) 12

23. 以下程序的运行结果是【】。

void f(int a, int b)

{

int t;

t=a; a=b; b=t;

}

main()

{

int x=1, y=3, z=2;

if(x>y) f(x,y);

else if(y>z) f(x,z);

else f(x,z);

printf("%d,%d,%d\n",x,y,z);

}

A) 1,2,3 B) 3,1,2C) 1,3,2 D) 2,3,1

24. 以下程序运行后的输出结果为【】。

int *f(int *x, int *y)

{

if(*x<*y) return x;

else return y;

}

main()

{

int a=7,b=8,*p,*q,*r;

p=&a, q=&b;

r=f(p,q);

printf("%d,%d,%d\n",*p,*q,*r);

}

A) 7,8,8 B) 7,8,7C) 8,7,7 D) 8,7,8

25. 以下程序的正确运行结果是【】。

#inclued

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 26. 以下程序的功能是计算函数F(x,y,z)=(x+z)/(y-z)+(y+2×z)/(x-2×z)的值,请将程序补充

完整。

#include

float f(float x,float y)

{

float value;

value= 【1】;

return value;

}

main()

{

float x,y,z,sum;

scanf("%f%f%f",&x,&y,&z);

sum=f(x+z,y-z)+f(【2】);

printf("sum=%f\n",sum);

}

【1】A)x/y B)x/z C)(x+z)/(y-z) D)x+z/y-z

【2】A)y+2z,x-2z B)y+z,x-z C)x+z,y-z D)y+z*z,x-2*z 27. 以下程序的功能是根据输入的字母,在屏幕上显示出字符数组中首字符与其相同的字符

串,若不存在,则显示“No find,good bye!”,请将程序补充完整。

#include

char PriStr(char ch1)

{

int i=0,j=0;

static char *ch2[]={"how are you", "glad to meet you","anything new",

"everything is fine","very well,thank you","see you tomorrow"};

while(i++<6)

if(ch1==【1】)

{

puts(【2】);

j=1;

}

return j;

}

main()

{

char ch;

printf("\nPleae enter a char:");

ch=getchar();

ch=PriStr(ch);

if(ch==【3】)

puts("No find, good bye! ");

}

【1】A)ch2[i][0] B)ch2[i-1][0] C)*ch2[i] D)*ch2[i-1][0]

【2】A)ch2[i] B)*ch2[i] C)*ch2[i-1] D)ch2[i-1]

【3】A)?0?B)?48?C)0 D)30

28. 以下程序是将输入的一个整数反序打印出来,例如输入1234,则输出4321,输入-1234,

则输出-4321。请将程序补充完整。

void printopp(long int n)

{

int i=0;

if(n==0)

return ;

else

while(n)

{

if(【1】) printf("%ld",n%10);

else printf("%ld",-n%10);

i++;

【2】;

}

}

main()

{

long int n;

scanf("%ld",&n);

printopp(n);

printf("\n");

}

【1】A)n<0&&i==0 B)n<0||i==0 C)n>0&&i==0 D)n>0||i==0 【2】A)n%=10 B)n%=(-10) C)n/=10 D)n/=)-10)

29. 下面的程序用递归定义的方法实现求菲波拉契数列1、1、2、3、5、8、13、21……第

7项的值fib(7),菲波拉契数列第1项和第2项的值都是1。请将程序补充完整。

#include

long fib(【1】)

{

switch(g)

{

case 0: return 0;

case 1:

case 2: return 1;

}

return (【2】);

}

main()

{

long k;

k=fib(7);

printf("k=%d\n",k);

}

【1】A)g B)k C)long int g D)int k

【2】A)fib(7) B)fib(g) C)fib(k) D)fib(g-1)+fib(g-2)

30.有以下程序

int fun(int n)

{

if(n==1) return 1;

else return(n+fun(n-1));

}

main()

{

int x;

scanf("%d",&x);

x=fun(x);

printf("%d\n",x);

}

程序执行时,若输入10,程序的输出结果是【】。

A)55B)54C)65D)45

31. 下面是一个计算1至m的阶乘并依次输出的程序。程序中应填入的正确选项是【】。

#include

double result=1;

factorial( int j)

{

result=result*j;

return;

}

main()

{

int m,i=0,x;

printf("Please enter an integer:");

scanf("%d",&m);

for(;i++

{

x=factorial(i);

printf("%d!=%.0f\n", 【】);

}

}

A)i,factorial(i) B)i,x C)j,x D)i,result

32. 以下程序的功能是求任意两个整数a和b的最大公约数,并予以显示。请将程序补充完

整。

#include

#include

long codivisor(long n1,long n2)

{

long t;

while( n2!=0 )

{【1】; n1=n2; n2=t;}

return (【2】);

}

main()

{

long a,b,x;

printf("please input two numbers:");

scanf("%ld%ld",&a,&b);

x=codivisor(a,b);

printf("maximum common divisor of %ld and %ld is : %ld\n", a,b,x);

}

【1】A)t=n1/n2 B)t=n1%n2 C)t=n2%n1 D)t=n2/n1

【2】A)labs(n1) B)labs(a) C)labs(b) D)labs(n2)

33. 以下程序的功能是计算并显示一个指定行数的杨辉三角形(形状如下),请将程序补充

完整。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

程序:

#include

#define N 15

void yanghui(int b[][N], int n)

{

int i,j;

for(i=0; 【1】; i++)

{

b[i][0]=1; b[i][i]=1;

}

for(【2】;++i<=n;)

for(j=1;j

b[i][j]= 【3】;

for(i=0;i

{

for(j=0;j<=i;j++)

printf("%4d",b[i][j]);

printf("\n");

}

}

main()

{

int a[N][N]={0},n;

printf("please input size of yanghui triangle(<=15)");

scanf("%d",&n);

printf("\n");

yanghui(a,n);

}

【1】A)i

【2】A)i=0 B)i=1 C)i=2 D)i=3

【3】A)b[i-1][j-1]+b[i-1][j] B)b[i-2][j-1]+b[i-1][j]

C)b[i-1][j-1]+b[i-1][j+1] D)b[i-2][j-2]+b[i-1][j]

34. 下面的程序用来将一个十进制正整数转化成八进制数,例如输入一个正整数25,则输

出31,请将程序补充完整。

#include

main()

{

int i=0,j=0,a,b[10]={0};

printf("\nPlease input a integer: ");

scanf("%d",&a);

sub(a,b);

for(;i<10;i++)

{

if(【1】) j++;

if(j!=0) printf("%d",b[i]);

}

}

sub(int c, int d[])

{

int e, i=9;

while(c!=0)

{

e=c%8;

d[i]=e;

【2】;

i--;

}

return;

}

【1】A)b[i]<0 B)b[i-1]!=0 C)b[i]<=0 D)b[i]!=0

【2】A)c=sub(c/8) B)c=c%8 C)c=c/8 D)c=e%8 35. 函数bisearch 的作用是应用折半查找法从存有N个整数的升序数组a中对关键字key

进行查找。请将程序补充完整。

#include

#define N 15

bisearch(int a[N], int key)

{

int low=0, high=N-1, mid;

while(【1】)

{

mid=(low+high)/2;

if(key

【2】;

else

if(key>a[mid])

low=mid+1;

else

return mid;

}

return 【3】;

}

main()

{

int b[N],n,I,j;

printf("Please input a %d element increasing sequence: ", N);

for(i=0;i

{

printf("b[%d]= ",i);

scanf("%d",&b[i]);

}

printf("Please input a searching key: ");

scanf("%d",&n);

j=bisearch(b,n);

if(j<-5)

printf("Don?t find %d\n",n);

else

printf("b[%d]=%d\n",j,n);

}

【1】A)low

【2】A)high=mid-1 B)low=mid+1 C)high=mid+1 D)low=mid-1 【3】A)0 B)-10 C)-1 D)1

36. 如果程序及其运行结果显示如下,请将程序补充完整。

2 10 4 6

1 5

2 3

2 4 7 8

5 1 3 2

The value is 15.

程序:

#include

func(【1】)

{

int 【2】,j;

for(j=0;j<4;j++)

{

b[3][j]=2*b[0][j];

printf("%4d",b[3][j]);

b[3][j]=0;

}

printf("\n");

for(j=0;j<4;j++)

if(b[i][j]<5&&b[i][2]>5)

k+=b[i][j];

return k;

}

main()

{

static int a[4][4]={ 【3】};

int i,j,k;

k=func(a,9);

for(i=0;i<4;i++)

{

for(j=0;j<4;j++)

if(a[i][j]!=0)

printf("%4d",a[i][j]);

if(a[i][4]!=0)

printf("\n");

}

printf("The value is %d\n",k);

}

【1】A)int b[4][],k B)int b[][4],k C)int b[4,4],int k D)int b[][4],int k 【2】A)i=0 B)i=1 C)i=2 D)i=3

【3】A){1,5,2,3},{2,4,7,8},{5,1,3,2} B){2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2} C){1,5,2,3},{2,4,7,8},{5,1,2,3} D){2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,2,3}

37. 以下程序的功能是用二分法求方程f(x)=x41+x3+1=0在区间(-1.0,-0.5)中的一个实

根,并要求绝对误差不超过0.001。二分法的基本思想是:假设在区间(a,b)中f(a)

与f(b)异号,先取区间的中点m,如果f(m)与f(a)异号,则取新的解区间为(a,m),否则取新的解区间为(m,b)。不断对解区间对分,直到解区间已经小于给定的误差时,取该区间的中点作为解的近似值。请将程序补充完整。

#include

#include

float f(float x)

{

return (pow(x,41)+pow(x,3)+1);

}

float solv(float a,float b)

{

float m;

m=(a+b)/2;

while(f(m)*f(b)!=0)

{

if(【1】) a=m;

else b=m;

if(【2】) break;

m=(a+b)/2;

}

return m;

}

main()

{

float r;

r=solv(-1.0,-0.5);

printf("approximate solution of f(x)=0 is %f f(%f)=%.6f\n",r,r, 【3】);

}

【1】A)f(m)*f(b)<0 B)f(m)*f(b)>=0 C)f(m)*f(b)<=0 D)f(m)*f(b)>0 【2】A)b-a<0.001 B)fabs(a-b)<0.001 C)ABS(a-b)<0.001 D)a-b<0.001 【3】A)f(r) B)f(m) C)r D)m

38. 以下程序是选出能被3整除且至少有一位是5的所有三位正整数k(个位为a0,十位为a1,

百位为a2),打印出所有这样的数及其个数。请将程序补充完整。

#include

sub(int m,int n)

{

int a0,a1,a2;

a2=【1】;

a1=【2】;

a0=m%10;

if(m%3==0 && (a2==5||a1==5||a0==5))

{

printf(“%d”,m);

n++;

}

return n;

}

main()

{

int m=0,k;

for(k=105;k<=995;k++)

m=sub(【3】);

printf("\nn=%d\n",m);

}

【1】A) m/10 B) m%10 C) m/100 D) m%100

【2】A) (m-a2*10)/10 B) m/10-a2*10 C) m%10-a2*10 D) m%100-m%10 【3】A) k,m B) m,k C) k,n D) n,k

39. 以下程序可计算10名学生1门课成绩的平均分,要求使用无返回值函数实现。请将程

序补充完整。

#include

void average(float array[10])

{

int i=0;

while(【1】)

array[0]+=【2】;

array[i-1]=array[0]/10;

}

main()

{

float score[10];

int i;

printf("Please input 10 scores:\n");

for(i=0;i<10;i++)

scanf("%f",&score[i]);

average(score);

printf("The average score is %.2f\n",【3】);

}

【1】A)i<=10 B)i++<10 C)++i<10 D)i<10

【2】A)array[i-1] B)array[i] C)array[i--] D)array[i++] 【3】A)score[8] B)score[0] C)array[8] D)score[9] 40. 以下程序用于输入不超过N个数的整数序列(用-1作为输入结束标志),然后统计出

从M1至M2各数在序列中出现的次数并显示输出。请将程序补充完整。

#include

#define N 100

#define M1 3

#define M2 7

main()

{

int a[N],c[M2-M1+1]={0},i,n=0,x=0;

printf("Please input a sequence of number(%d-%d) which is ended with

-1:\n",M1,M2);

while(x!=-1)

{

scanf("%d",&x);

a[n]=x;

n++;

}

f(a,c,n);

printf("Repeating times of %d-%d in sequence of number is:\n",M1,M2);

for(i=0;i<=M2-M1;i++)

printf(“%d:%d\n”, 【1】);

printf("\n");

}

f(【2】)

{

int i;

for(i=0;i

if(a[i]>=M1 && a[i]<=M2)

【3】;

}

【1】A)M1+i:c[M1+i] B)M1+i+1:c[i]

C)M1+i:c[i] D)i:c[M1+i]

【2】A)f(a[],c[],n) B)f(int a[],int c[],int n)

C)f(a,c,n) D)f(int a[N],c[M2-M1+1],n)

【3】A)c[a[i]]++ B)c[a[i]-M2]++

C)a[c[i]]++ D)c[a[i]-M1]++

二.读程序写结果

1.

fun(int x,int y,int z)

{

z =x*x+y*y;

}

main ( )

{

int a=31;

fun (6,3,a);

printf ("%d", a);

}

2.

int f( )

{

static int i=0;

int s=1;

s+=i; i++;

return s;

}

main()

{

int i,a=0;

for(i=0;i<5;i++)

a+=f();

printf("%d\n",a);

}

3. 运行程序时,若从键盘输入asd af aa z67(回车),分析以下程序的输出结果。

#include

int fun(char *str)

{

int i,j=0;

for(i=0;str[i]!=??;i++)

if(str[i]!=??)

str[j++]=str[i];

str[j]=??;

}

main()

{

char str[81];

int n;

printf("Input a string : ");

gets(str);

fun(str);

printf("%s\n",str);

}

4.

void swap(int *p1,int *p2)

{

int *t;

t=p1,p1=p2,p2=t;

printf("*p1=%d,*p2=%d\n",*p1,*p2);

}

main()

{

int x=10,y=20;

swap(&x,&y);

printf("x=%d,y=%d\n",x,y);

}

5.

#include

void fun(int *s, int m, int n)

{

int t;

while(m

{t=s[m]; s[m]=s[n]; s[n]=t; m++; n--;} }

main()

{

Int a[5]={1,2,3,4,5},k;

fun(a,0,4);

for(k=0;k<5;k++)

printf("%d ",a[k]);

}

6.

int fun(char s[])

{

int n=0;

while(*s<='9'&&*s>='0')

{

n=10*n+*s-'0';

s++;

}

return(n);

}

main()

{

char s[10]={'6','1','*','4','*','9','*','0','*'};

printf("%d\n",fun(s));

}

7.

#include

Int fun(int x)

{

int y;

if(x==0||x==1)return(3);

y=x*x-fun(x-2)

return y;

}

main()

{

int x,y;

x=fun(3);

y=fun(4);

printf("%d, %d\n", x ,y);

}

8.

fun(int n,int *s)

{

int f1, f2;

if(n==1 || n==2) *s=1;

else

{

fun(n-1, &f1);

fun(n-2, &f2);

*s=f1+f2;

}

}

main()

{

int x;

fun(6,&x);

printf("%d\n",x);

}

三、填空题

1. 以下程序实现了计算x的n次方,请将程序填写完整。

float power(float x,int n)

{ int i;

float t=1;

for(i=1;i<=n;i++)

t=t*x;

【1】;

}

main( )

{ float x,y;

int n;

scanf("%f,%d",&x,&n);

y=power(x,n);

printf("%8.2f\n",y) ;

}

2. 以下程序实现了求两个数的最大公约数,请将程序填写完整。

int divisor(int a,int b)

{ int r;

r=a%b;

while(【2】)

{ a=b;b=r;r=a%b;}

return b;

}

void main()

{ int a,b,d,t;

scanf("%d %d",&a,&b);

if (a

{ t=a; a=b; b=t; }

d=divisor(a,b);

printf("\n gcd=%d",d);

}

3. 以下函数my_cmp( )的功能是比较字符串s和t的大小,当s等于t时返回0,否则返

回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,s

my_cmp(char *s,char *t)

{

while(*s == *t)

{

if (【3】) return 0;

++s; ++t;

}

return 【4】;

}

4. 以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小

到大的顺序排列,函数返回删除后数组中数据的个数。请将程序填写完整。

例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10

删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。

#include

#define N 80

int fun(int a[], int n)

{ int i,j=1;

for(i=1;i

if(a[j-1]【5】a[i])

a[j++]=a[i];

return 【6】;

}

main( )

{

int a[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("The original data:\n");

for(i=0;i

printf(“%d ”,a[i]);

n=fun(a,n);

printf("\nThe data after deleted: \n");

for(i=0; i

printf(“%d ”,a[i]);

}

四、编程题

1. 请用自定义函数的形式编程实现,求s=m!+n!+k!,m、n、k从键盘输入(值均小于7)。

2. 请用自定义函数的形式编程实现求10名学生1门课程成绩的平均分。

3. 请编写两个自定义函数,分别实现求两个整数的最大公约数和最小公倍数,并用主函数

调用这两个函数,输出结果(两个整数由键盘输入得到)。

4.

请编写一个递归函数,实现求Fib(n)。

第6章

一、选择题

1. B

2. C

3. B

4. B

5. C

6. D

7. D

8. C

9. D 10. D 11. A 12. A 13. C 14. D 15. D 16. C 17. B 18. A 19. A 20. A 21. A 22. D 23. C 24. B 25. A 26.【1】A 26.【2】D 27.【1】B

27.【2】D 27.【3】C 28.【1】D 28.【2】C 29.【1】C 29.【2】D

30. A 31. D 32.【1】B 32.【2】A 33.【1】C 33.【2】B

33.【3】A 34.【1】D 34.【2】C 35.【1】C 35.【2】A 35.【3】B

36.【1】D 36.【2】B 36.【3】A 37.【1】A 37.【2】B 37.【3】A

38.【1】C 38.【2】B 38.【3】A 39.【1】C 39.【2】B 39.【3】A

40.【1】C 40.【2】B 40.【3】D

二、读程序写结果:

1. 31

2. 15

3. asd af aa z67

4. *p1=20,*p2=10

x=10,y=20

5. 5 4 3 2 1

6. 61

7. 6,15

8. 8

三、填空题

1.【1】return t

2.【2】r!=0

3.【3】*s == 0

【4】*s-*t

4.【5】!=

【6】j

四、编程题

1.

#include

long fun(int x)

{ long y=1;

while(x>0)

{ y*=x;

x--; }

return(y);

}

main()

{ int m,n,k;

printf("Please input m,n and k:\n");

scanf("%d,%d,%d",&m,&n,&k);

printf("%ld\n",fun(m)+fun(n)+fun(k));

}

2.

#include

#define N 10

float average(float array[])

{ int i=0;

float s=0;

for(i=0;i

s+=array[i];

s=s/N;

return s;

}

main()

{ float score[N],i;

float ave;

printf("Please input 10 scores:\n");

for(i=0;i

scanf("%f",&score[i]);

ave=average(score);

printf("\nThe average score is %.2f\n", ave);

}

3.

#include

int divisor(int a,int b)

{ int r;

while((r=a%b)!=0)

{ a=b;

最新c语言函数练习题附答案

函数 一、选择题 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;}

C语言函数练习题及答案

1 【单选题】 在下列关于C函数定义的叙述中,正确的是A、 函数可以嵌套定义,但不可以嵌套调用; B、 函数不可以嵌套定义,但可以嵌套调用; C、 函数不可以嵌套定义,也不可以嵌套调用; D、 函数可以嵌套定义,也可以嵌套调用; 我的答案:B得分:分

2 【单选题】 下面函数调用语句含有实参的个数为nc((exp1,exp2),(exp3,exp4,exp5)); A、 1 B、 2 C、 4 D、 5

我的答案:B得分:分 3 【单选题】 C语言中函数返回值的类型是由以下哪个选项决定的A、 函数定义时指定的类型; B、 return语句中的表达式类型; C、 调用该函数时的实参的数据类型; D、 形参的数据类型;

我的答案:A得分:分 4 【单选题】 以下关于函数叙述中,错误的是 A、 函数未被调用时,系统将不为形参分配内存单元; B、 实参与形参的个数必须相等,且实参与形参的类型必须对应一致; C、 当形参是变量时,实参可以是常量、变量或表达式; D、

如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间; 我的答案:B得分:分 5 【单选题】 若函数调用时参数为基本数据类型的变量,以下叙述正确的是A、 实参与其对应的形参共享内存存储单元; B、 只有当实参与其对应的形参同名时才共享内存存储单元; C、 实参与对应的形参分别占用不同的内存存储单元;

D、 实参将数据传递给形参后,立即释放原先占用的内存存储单元; 我的答案:C得分:分 6 【单选题】 函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是 A、 实参将地址传递给形参,并释放原先占用的存储单元; B、 实参将地址传递给形参,调用结束时形参再将此地址回传给实参; C、 实参将值传递给形参,调用结束时形参再将其值回传给实参;

C语言函数练习题

/* 姓名:白银 日期:2007.6.11 描述:英尺,英寸,米,厘米之间的转换 */ #include float GetInch(float feet); float GetMeter(float inch); float GetCentiMeter(float meter); void main() { float inch; float meter; float centimeter; float feet; printf("请输入英尺的值\n"); scanf("%f",&feet); inch=GetInch(feet); printf("转换成英寸的结果是%.2f:",inch); printf("\n"); meter=GetMeter(GetInch(feet)); printf("转换成米的结果是%.2f:",meter); printf("\n"); centimeter=GetCentiMeter(GetMeter(GetInch(feet))); printf("转换成米的结果是%.2f:",centimeter); printf("\n");

float GetInch(float feet) { float inch; inch=feet*12; return inch; } float GetMeter(float inch) { float meter; meter=inch*2.54; return meter; } float GetCentiMeter(float meter) { float centimeter; centimeter=meter*100; return centimeter; } /* 姓名:白银 日期:2007.6.11 描述:底和高求三角形面积 */ #include float GetArea(float h,float l); void main() {

c语言练习题带答案)-绝对经典题目不看后悔

1单选题 1.(A)是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从C开始执行。 A) 程序中第一条可执行语句B) 程序中第一个函数 C) 程序中的main函数D) 包含文件中的第一个函数 3、以下说法中正确的是(C)。 A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B)。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C)。 A.-a1 B.a[i] C.a2_i D.int t 5~8题为相同类型题 考点:标识符的命名规则 (1)只能由字母、数字、下划线构成 (2)数字不能作为标识符的开头 (3)关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B)。 A)3ax B)x C)case D)-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是(C)。 A)%x B)a+b C)a123 D)123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2) 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3) 9.C语言中的简单数据类型包括(D)。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是C。 A)2.5 B)2 C)1 D)3 详见教材P52~53.

C语言函数练习题及答案.doc

【单选题】 在下列关于C函数定义的叙述中,正确的是? A、 函数可以嵌套定义,但不可以嵌套调用; B、 函数不可以嵌套定义,但可以嵌套调用; C、 函数不可以嵌套定义,也不可以嵌套调用; D、 函数可以嵌套定义,也可以嵌套调用; 我的答案:B得分:2.5分 2 【单选题】 下面函数调用语句含有实参的个数为? n c((expl z exp2)z(exp3z exp4A exp5)); A、

B、

D、 5 我的答案:B得分:2.5分 3 【单选题】 c语言中函数返回值的类型是由以下哪个选项决定的? A、 函数定义时指定的类型; B、 return语句中的表达式类型; C、 调用该两数时的实参的数据类型; D、 形参的数据类型; 我的答案:A得分:2.5分

4 【单选题】

以下关于函数叙述屮,错误的是? A、 两数未被调用时,系统将不为形参分配内存单元; B、 实参与形参的个数必须相等,TL实参与形参的类型必须对应一致; C、 当形参是变量时,实参可以是常量、变量或表达式; D、 如两数调用时,实参与形参都为变:S,则这两个变量不可能共亨同一内存空间; 我的答案:B得分:2.5分 5 【单选题】 若函数调用时参数为基本数据类型的变量,以下叙述正确的是? A、 实参与菇对应的形参共享内存存储单元; B、 只有当实参与菇对应的形参同名时才共享内存存储单元;

C、 实参与对应的形参分别占用不同的内存存储单元; 实参将数据传递给形参后,立即释放原先占用的内存存储单元; 我的答案:C得分:2.5分 6 【单选题】 函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是? A、 实参将地址传递给形参,并释放原先占用的存储单元; B、 实参将地址传递给形参,调用结束时形参再将此地址回传给实参; C、 实参将值传递给形参,调用结束时形参再将其值回传给实参; D、 实参将值传递给形参,调用结束时形参并不将其值回传给实参; 我的答案:D得分:2.5分 7 【单选题】

(完整版)c语言函数练习题附答案

函数 一、选择题 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)

C语言函数部分练习题

本题序号:80 下面程序的输出结果是____。#include main( ) { int x=10; { int x=20; printf ("%d,", x); } printf("%d\n", x); } A 10,20 B 20,10 C 10,10 D 20,20 参考答案 B 本题序号:107 下面程序的输出结果是____。main() { int a=2,i; for(i=0;i<3;i++) printf("%4d",f(a)); } f(int a) { int b=0; static int c=3; b++; c++; return(a+b+c); } A 7 7 7 B 7 10 13 C 7 9 11 D 7 8 9 参考答案 D 本题序号:108 下面程序的输出结果是____。 #include try( ) { static int x=3; x++; return(x);

} main( ) { int i, x; for(i=0; i<=2; i++ ) x=try( ); printf("%d\n", x); } A 3 B 4 C 5 D 6 参考答案 D 本题序号:109 下面程序的输出结果是____。 #include main( ) { int x=1; void f1( ), f2( ); f1( ); f2(x); printf("%d\n", x); } void f1(void) { int x=3; printf("%d ", x); } void f2( x ) int x; { printf("%d ", ++x); } A 1 1 1 B 2 2 2 C 3 3 3 D 3 2 1 参考答案 D 本题序号:126 下列叙述中错误的是 A 主函数中定义的变量在整个程序中都是有效的。 B 在其它函数中定义的变量在主函数中也不能使用。

C语言函数练习习题及答案

欢迎阅读 【单选题】 在下列关于C函数定义的叙述中,正确的是? ?A、 函数可以嵌套定义,但不可以嵌套调用; ? ? ? ? ? ?C、 4 ?D、 5 我的答案:B得分:?2.5分 3

【单选题】 C语言中函数返回值的类型是由以下哪个选项决定的? ?A、 函数定义时指定的类型; ?B、 return语句中的表达式类型; ? ? ? ? ? ? 若函数调用时参数为基本数据类型的变量,以下叙述正确的是??A、 实参与其对应的形参共享内存存储单元;

只有当实参与其对应的形参同名时才共享内存存储单元;?C、 实参与对应的形参分别占用不同的内存存储单元; ?D、 ? ? ? ? ?A、 数组第一个元素的地址; ?B、 数组的第一个元素的值; ?C、 数组中所有元素的值;

数组元素的个数; 我的答案:A得分:?2.5分 8 【单选题】C语言规定了程序中各函数之间调用关系,以下说法正确的是??A、既允许直接递归调用也允许间接递归调用; ? ? ? ? ? ? ? 若函数的形参为一维数组,则下列说法中正确的是()。 ?A、 使用函数时的对应实参必为数组名。

形参数组可以不指定大小。 ?C、 形参数组的元素个数必须等于实参数组的元素个数。 ?D、 ? ? ? ? void?fun(int?n,double?x)??{……} 下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。?A、 fun(int?y,double?m);?? ?B、 k=fun(10,12.5);

fun(x,n);??? ?D、 void?fun(n,x); 我的答案:C得分:?2.5分 13 【单选题】 ? ? ? ? float?fadd(float?a,?float?b) { return?a+b; } 并将其放在调用语句之后,则在调用之前应对该函数进行说明。以下说明中错误的是??A、

C语言函数练习题及答案修订稿

C语言函数练习题及答 案 集团档案编码:[YTTR-YTPT28-YTNTL98-UYTYNN08]

1 【单选题】 在下列关于C函数定义的叙述中,正确的是? A、 B、 C、 D、 我的答案:B得分:2.5分 2 【单选题】 下面函数调用语句含有实参的个数为? nc((exp1,exp2),(exp3,exp4,exp5)); A、 B、 C、 D、 我的答案:B得分:2.5分 3 【单选题】 C语言中函数返回值的类型是由以下哪个选项决定的? A、 B、 C、

D、 我的答案:A得分:2.5分 4 【单选题】 以下关于函数叙述中,错误的是? A、 B、 C、 D、 我的答案:B得分:2.5分 5 【单选题】 若函数调用时参数为基本数据类型的变量,以下叙述正确的是? A、 B、 C、 D、 我的答案:C得分:2.5分 6 【单选题】 函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是? A、 B、 C、 D、

我的答案:D得分:2.5分 7 【单选题】 若用数组名作为函数调用的实参,则传递给形参的是? A、 B、 C、 D、 我的答案:A得分:2.5分 8 【单选题】C语言规定了程序中各函数之间调用关系,以下说法正确的是? A、 B、 C、 D、 我的答案:A得分:2.5分 9 【单选题】 递归函数f(n)=f(n-1)+n(n>1)的递归体是 A、 B、 C、 D、 我的答案:C得分:2.5分 10

【单选题】 若函数的形参为一维数组,则下列说法中正确的是()。 A、 B、 C、 D、 我的答案:B得分:2.5分 11 【单选题】 在函数调用过程中,如果函数funA调用了函数funB,函数funB又调用了函数funA,则()。 A、 B、 C、 D、 我的答案:B得分:2.5分 12 【单选题】 有以下函数定义: voidfun(intn,doublex){……} 下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()。 A、 B、 C、 D、

c语言函数练习题

函数练习题 一、选择题(一题2分,共40分) 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.有以下程序

C语言函数练习题2

/* 姓名:白银 日期: 描述:英尺,英寸,米,厘米之间的转换*/ #include <> float GetInch(float feet); float GetMeter(float inch); float GetCentiMeter(float meter); void main() { float inch; float meter; float centimeter;

printf("请输入英尺的值\n"); scanf("%f",&feet); inch=GetInch(feet); printf("转换成英寸的结果是%.2f:",inch); printf("\n"); meter=GetMeter(GetInch(feet)); printf("转换成米的结果是%.2f:",meter); printf("\n"); centimeter=GetCentiMeter(GetMeter(GetInch(feet))); printf("转换成米的结果是%.2f:",centimeter); printf("\n"); } float GetInch(float feet) {

inch=feet*12; return inch; } float GetMeter(float inch) { float meter; meter=inch*; return meter; } float GetCentiMeter(float meter) { float centimeter; centimeter=meter*100; return centimeter;

C语言程序设计练习题含程序及参考答案

C语言练习题 (所提供的源程序均采用自定义函数方式解决,如不采用函数 方式,也可直接在main函数中借鉴该思想编程,因时间有 限,所有程序未能一一验证,仅供参考使用) 1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。 #include 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(\ Input a,b,c: ); scanf(%d%d%d,&a,&b,&c); printf(\ a=%d, b=%d, c=%d\n,a,b,c); shape =fun(a,b,c); printf(\ \nThe shape : %d\n,shape);

} 2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的值为3。 #include 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。 #include void fun(float *p,float *q,float *s) { float k; if (*p<*q) { k=*p;*p=*q;*q=k;} if (*q<*s) { k=*s;*s=*p;*p=k;} if (*p<*q) { k=*p;*p=*q;*q=k;} } void 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); } 4、编写函数fun(int n),它的功能是:计算正整数n的所有因子(1和n除外)之和作为函数值返回。例如:n=120时,函数值为239。 #include #include int fun(int n) { int i,s=0;

C语言程序设计函数练习题及参考答案

C语言程序设计练习题及参考答案 1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。 #include 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 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); }

C语言练习题a

C语言练习题 一、单项选择题 1. 一个C程序的执行是从( )。 A. 本程序的main函数开始,到main函数结束 B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C. 本程序的main函数开始,到本程序文件的最后一个函数结束 D. 本程序文件的第一个函数开始,到本程序main函数结束 2. 字符型数据使用( )括起来。 A. 单引号 B. 双引号 C. 圆括号 D. # 3. 下列符号中用来表示C语言中的回车换行的是( )。 A. \r B. \n C. \b D. \t 4. 以下不能定义为用户标识符的是( )。 A. MAIN B. _HJ C. 2ong D. LINE1 5. 被调函数通过( )语句,将值返回给主调函数。 A. if B. for C. while D. return 6. printf(“%d”,7%4); 执行之后,输出结果是( )。 A. 2 B. 3 C. 4 D. 1.75 7. C语言中形参的默认存储类别是( )。 A. 自动auto B. 静态static C. 寄存器register D. 外部extern 8. 表达式1&&2&&3&&4的值为( )。 A.1 B.2 C.3 D.4 9. 若x=0,y=3,z=3,以下表达式值为0的是( )。 A. !x B.x= 'a')||(c<= 'z') C. ('a'<=c)and ('z'>=c) D. (c>= 'a')&&(c<= 'z') 11. 设有数组定义:char ch[]=“student”,则数组ch 所占的空间为( )。 A. 5字节 B. 6字节 C. 7字节 D. 8个字节 12. 数学比较表达式:5>x≥2对应的C语言逻辑表达式是( )。 A.5>x>=2 B.5>x && x>2 && x=2 C.x<5 && x>=2 D.x<5 || (x>2) 13. 若有定义:int a[][3]={1,2,3,4,5,6},则a[1][0]的值是( )。 A. 4 B. 1 C. 2 D. 5 14. 以下函数调用语句中,含有实参的个数为( )。 fun(max(2,3),4); A. 1 B. 2 C.3 D.4 15. 在C语言中,若对函数类型未另显示说明,则函数的隐含类型是( )类型。 A.void B.double C.int D.char 16. 在C 语言中,每个语句必须以( )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 17. 字符串的结束标志是( )。 A. 0 B. '0' C. '\0' D. "0" 18. printf("%c,%d",'b', 'b');的输出结果是( )。

C语言函数练习题及答案

C语言函数练习题及答 案 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

1 【单选题】 在下列关于C函数定义的叙述中,正确的是?A、 函数可以嵌套定义,但不可以嵌套调用; ?B、 函数不可以嵌套定义,但可以嵌套调用; ?C、 函数不可以嵌套定义,也不可以嵌套调用;?D、 函数可以嵌套定义,也可以嵌套调用; 我的答案:B得分:分 2 【单选题】 下面函数调用语句含有实参的个数为 nc((exp1,exp2),(exp3,exp4,exp5)); ?A、 1 ?B、 2 ?C、 4 ?D、 5 我的答案:B得分:分 3

【单选题】 C语言中函数返回值的类型是由以下哪个选项决定的 ?A、 函数定义时指定的类型; ?B、 return语句中的表达式类型; ?C、 调用该函数时的实参的数据类型; ?D、 形参的数据类型; 我的答案:A得分:分 4 【单选题】 以下关于函数叙述中,错误的是 ?A、 函数未被调用时,系统将不为形参分配内存单元; ?B、 实参与形参的个数必须相等,且实参与形参的类型必须对应一致; ?C、 当形参是变量时,实参可以是常量、变量或表达式; ?D、 如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间; 我的答案:B得分:分 5 【单选题】 若函数调用时参数为基本数据类型的变量,以下叙述正确的是?A、

实参与其对应的形参共享内存存储单元; ?B、 只有当实参与其对应的形参同名时才共享内存存储单元; ?C、 实参与对应的形参分别占用不同的内存存储单元; ?D、 实参将数据传递给形参后,立即释放原先占用的内存存储单元; 我的答案:C得分:分 6 【单选题】 函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是?A、 实参将地址传递给形参,并释放原先占用的存储单元; ?B、 实参将地址传递给形参,调用结束时形参再将此地址回传给实参; ?C、 实参将值传递给形参,调用结束时形参再将其值回传给实参; ?D、 实参将值传递给形参,调用结束时形参并不将其值回传给实参; 我的答案:D得分:分 7 【单选题】 若用数组名作为函数调用的实参,则传递给形参的是 ?A、 数组第一个元素的地址; ?B、 数组的第一个元素的值;

C语言综合习题及答案

C语言练习题 一、选择题 1. 一个完整的C源程序是【B 】。 A)要由一个主函数或一个以上的非主函数构成 B)由一个且仅由一个主函数和零个以上的非主函数构成 C)要由一个主函数和一个以上的非主函数构成 D)由一个且只有一个主函数或多个非主函数构成 2. 以下关于函数的叙述中正确的是【C】。 A)C语言程序将从源程序中第一个函数开始执行 B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束 D)main可作为用户标识符,用以定义任意一个函数 3. 以下关于函数的叙述中不正确的是【B】。 A)C程序是函数的集合,包括标准库函数和用户自定义函数 B)在C语言程序中,被调用的函数必须在main函数中定义 C)在C语言程序中,函数的定义不能嵌套 D)在C语言程序中,函数的调用可以嵌套 4. 在一个C程序中,【B 】。 A)main函数必须出现在所有函数之前 B)main函数可以在任何地方出现 C)main函数必须出现在所有函数之后 D)main函数必须出现在固定位置 5.C程序的执行是从【A 】开始的。 A)主函数 B)子函数 C)从程序第一行 D)printf()函数 6.以下选项中不合法的标识符是【C 】 A)print B)FOR C)&a D)_00 7.以下选项中可作为C语言合法常量的是【A】 A)-80 B)-080 C)-8e1.0 D)-80.0e 8.以下选项中不属于字符常量的是【B】 A)′C′ B)"C" C)′\xCC′ D) ′\072′ 9. 若在C语言中未说明函数的类型,则系统默认该函数的数据类型是【C】 A)float B)long C)int D)double 10. 以下关于函数叙述中,错误的是【D】。 A)函数未被调用时,系统将不为形参分配内存单元 B)实参与形参的个数应相等,且实参与形参的类型必须对应一致 C)当形参是变量时,实参可以是常量、变量或表达式 D)形参可以是常量、变量或表达式 11. C程序中各函数之间可以通过多种方式传递数据,下列不能用于实现数据传递的方式是

C语言程序设计练习题(含程序及参考答案)

1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰返回2,一般三角形返回1,若不能构成三角形返回0。 #include 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 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。 #include void fun(float *p,float *q,float *s) { float k; if (*p<*q) { k=*p;*p=*q;*q=k;} if (*q<*s) { k=*s;*s=*p;*p=k;}

C语言函数练习题

1、编写求圆的面积的函数,并调用该函数求出圆环的面积。 #define PI 3.14159 float area(float r) {float s; s=PI*r*r; return(s); } main() {float r1,r2,s; scanf("%d%d",&r1,&r2); s=area(r1)-area(r2); printf("s=%f\n",s); } 2A、编写求k!的函数,再调用该函数求10!并输出。 解法1: float jc(int k) {float p=1; int i; for(i=1;i<=k;i++) p=p*i; return(p); } main() {float p; p=jc(10); printf("p=%f\n",p); } 解法2: float jc(int k) {float p=1; while(k>0) {p=p*k; k--; } return(p); } main() {float p; p=jc(10); printf("p=%f\n",p); } 2、编写求k!的函数,再调用该函数求1!+3!+5!+ (19) 之和并输出。 float jc(int k) {float p=1; int i; for(i=1;i<=k;i++) p=p*i; return(p); } main() {float s=0; int i; for(i=1;i<=19;i+=2) s=s+jc(i); printf("s=%f\n",s); } 3、编写求k!的函数,再调用该函数求C(m,n)=m!/(n! *(m-n)!)并输出。 float jc(int k) {float p=1; int i; for(i=1;i<=k;i++) p=p*i; return(p); } main() {float c; int m,n; scanf("%d%d",&m,&n); c=jc(m)/jc(n)/jc(m-n); /*或 c=jc(m)/(jc(n)*jc(m-n));*/ printf("c=%f\n",c); } 4、编写判断素数的函数,再调用该函数判断1937是否是素数。 int isp(int m) {int i;

开发之C语言基础测试题-含答案

第1 题 设有语句“ char s[ ] = “ Program ”,*p = s;”, 则以下叙述正确的是 A.数组s 的内容与指针变量p 中内容相同 B.数组s 的长度与strlen ( p ) 的值相等 C.p[5]的值等于s[5] 的值 D.sizeof( s ) 等于sizeof( *p ) 第2 题 若fp是指向某文件的指针,且已读到此文件末尾,则库函数feof(fp)的返回值是 A.EOF B.0 C.非零值 D.NULL 第3 题 若有定义:int a[2][3];则对该数组的i行j列元素值的正确引用为 A.*(*(a+i)+j) B.(a+i)[j] C.*(a+i+j) D.*(a+i)+j 第4 题 若有以下的说明,则对初值中字符'a'的引用方式为 static struct st { char ch;double x;char a[];} struct st c[2][2]={{'a',3.5,'bc'},{'c',4.5,'de'},{'m',8.6,'abc'}}; A.c.ch B.c[0][0].ch C.c[1][1].ch D.a[0] 第5 题 对于用"r"方式打开文件下列说法正确的是 A.用"r"方式打开的文件只输入不能输出 B.用"r"方式打开的文件只能输出,不能输入 C.用"r"方式可以打开任何文件 D.以上均不对 第6 题 设p1和p2均为指向同一个int型一维数组的指针变量,k为int型变量,下列语句不正确的是 A.k=*p1+*p2 B.B. k=*p1*(*p2) C.p2=k D.p1=p2 第7 题 一个C程序由函数A、B、C和函数P构成,在函数A中分别调用了函数B和函数C,在函数B中调用了函数A,且在函数P中也调用了函数A,则可以说 A.函数B中调用的函数A是函数A的间接递归调用 B.函数A被函数B中调用的函数A间接递归调用 C.

相关主题
文本预览
相关文档 最新文档