一、 填空:(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
因篇幅问题不能全部显示,请点此查看更多更全内容