您的当前位置:首页正文

C语言期末考试试卷

2020-08-02 来源:星星旅游
C语言期末考试试卷

一、 填空:(10分)

1、C语言规定,可执行程序的开始执行点是( )。

2、在C语言中,一个函数一般由两个部分组成,它们是( )和( )。 3、程序的子模块在C语言中通常用( )来实现。 4、以下程序的运行结果是( )。

increment(); main()

{increment(); increment(); increment(); }

increment() {int x=0; x+=1;

printf(“%d”,x); } 5、有参函数中,在定义函数时函数名后面括弧中的变量名称为( ),在主调函数中调用一个函数时,函数名后面括弧中的参数称为( )。在调用时将( )的值传给( )。

6、函数实参可以是( )、( )或 ( ),但要求它们有确定的值。

7、如果函数定义时函数的类型和return语句中表达式的值类型不一致,则以 类型为准。即( )类型决定返回值的类型。

8、从变量的作用域来分,变量分( )变量和( )变量。 9、数组就是数量( )、类型( )的一组变量的有序集合。 10、数组元素的下标从( )开始。

11、一维数组中,数组名具有特殊的用途,它可代表数组的( )地址。 12、取地址运符是( )。

二、单项选择:(30分)

(1)以下正确的函数定义形式是 。 ( ) A)double fun(int x,int y) B)double fun(int x;int y) C) double fun(int,int) D)double fun(int x,y);

(2) 以下正确的函数形式是 。 ( ) A) double fun(int x,int y) B) fun(int x,y)

1

{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; {double z;

z=x+y;return z;} z=x+y;return z;}

(3) C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( ) A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)传递方式

(4)C语言允许函数值型缺省定义,此时该函数值隐含的类型是 。 ( ) A)float型 B)int型 C)long型 D)double型 (5)下面函数调用语句含有实参的个数为 。 ( ) func((exp1,exp2),(exp3,exp4,exp5));

A)1 B)2 C)4 D)5 (6)C语言程序的基本单位是____。 ( ) A.程序行 B.语句 C.函数 D.字符 (7)以下不正确的说法是:C语言规定 ( ) A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以是任意类型 D)形参应与其对应的实参类型一致

(8)以下错误的描述是:函数调用可以 ( ) A)出现在执行语句中 B)出现在一个表达式中 C)作为一个函数的实参 D)作为一个函数的形参

(9)若用数组名作为函数调用的实参,传递给形参的是 。 ( ) A)数组的首地址 B)数组第一个元素的值 C)数组中全部元素的值 D)数组元素的个数 (12)以下程序的正确运行结果是 。 ( ) #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) { 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

(13)在C语言中,引用数组元素时,其下标的类型是 ( ) A) 整型常量 B)整型表达式 C)整型常量或整型表达式 D)没有限制

(14)下面正确的定义是: ( ) A)intt[10]; B)int t[10]; C)int t[]; D)int[10];

(15)下面正确的初始化语句是: ( )

2

A)a[]=(1,2,2); B)s[]={2;3;8}; C)b[5]={1}; D)b[3]=[1,2,3];

三、判断:(10分)

1、C语言中,用户若需调用标准库函数,在调用前必须重新定义。 ( ) 2、C语言中不允许用户重新定义标准库函数。 ( ) 3、在C程序中,函数的定义和调用都不允许嵌套。 ( )

4、如果用数组名作为函数调用的实际参数,则传递给形参的是数组的首地址。

( )

5、形式能参数也是一种局部变量。 ( ) 6、无参函数可以带回或不带回函数值,但一般以不带回函数值的居多。( ) 7、在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元。 ( ) 8、在被定义的函数中,形参的类型可以不指定,而通过实参的类型传递。( ) 9、C语言规定,实参变量对形参变量的数据传递是单向值传递。 ( ) 10、外部变量是全局变量。 ( )

四、程序填空:(10分)

1、求n的阶乘:

long factor(int n) {long int res=1;

___________________________ ___________________________; return res;} main( ) {int n,fctr;

printf(“n=”);scanf(“%d”,&n); fctr=factor(n);

printf(“%d!=%d\\n”,n,fctr); }

2、下面程序是用来计算1+2+3+…+…n的和值的,请将程序补充完成。

main( ) { int i;

Scanf(“%d”,&i);

printf(\"%d\\n\}

sub(int n) {

int a;sum=0;

__________________________

3

_____________________; return (______________); } 3、判断一个数组中的数组元素是否是素数的程序。请在___________处填入适当

内容。

int prime(int m) {int i;flag=1;

for (i=2;______________;i++)

if (m%i==0) {_____________;return 0;} if(flag==1) return 1; }

main()

{int i,a[10],n;

printf(“input a:”);

for (i=0;i<10;i++) scanf(“%d”,&a[i]); {n=___________________;

if(________________) printf(“这是一个素数”); else printf(“这不是一个素数”);} }

五、写程序结果:(20分)

1、 main ( ) { int x;

for (x=12; x>0; x--)

{

if (x%3==0) { printf(“%d”,--x); continue ; } }

} 程序结果是:_________________________

2、main ( )

{ int k=0,m=0,i,j; for (i=0; i<3; i++) { for (j=0; j<4; j++) k++ ; k-=j ; }

m = i+j ;

printf(“k=%d,m=%d”,k,m) ; }

程序结果是:_______________________

4

3、int i=0;

fun1 (int i)

{ i = (i%i)*(i*i)/(2*i)+4 ; printf(“i=%d\\n”,i); return (i) ; }

fun2(int i)

{ i = i<=2 ? 5 : 0 ; return (i) ; }

main ( ) { int i = 5 ;

fun2(i=i/2) ; printf(“i=%d\\n”,i) ; fun2(i=i/2) ; printf(“i=%d\\n”,i) ; fun2(i*2) ; printf(“i=%d\\n”,i) ; fun1(i%2) ; printf(“i=%d\\n”,i) ;

}

4、int fun(int n)

{

if(n==1) return 1;

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

main() { int x;

scanf(\"%d\ x=fun(x);

printf(\"%d\\n\}

六、编程:(20分)

1、编写函数,打印下列图形:1 22 333 4444

程序的结果是_________________

程序的结果是_________________

5

2、使用数组,将10个整数按从小到大的顺序输出。

6

因篇幅问题不能全部显示,请点此查看更多更全内容