一、选择题
1.以下正确的函数定义是(    )
A.double fun(int x, int y)                    B.double 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 ;                         { double z ;
  z=x+y; return z;}                           return z;}
答案】D         
说明】其返回值与函数类型相符。
2.若调用一个函数,且此函数中没有return语句,则正确的说法是字符串处理函数 如果是a展示b(    )
A.该函数没有返回值                        B.该函数返回若干个系统默认值
C.能返回一个用户所希望的函数值            D.返回一个不确定的值
答案】A
3.以下不正确的说法是(    )
A.实参可以是常量,变量或表达式
B.形参可以是常量,变量或表达式
C.实参可以为任意类型
D.如果形参和实参的类型不一致,则以形参类型为准
答案】B
说明】形参只能是变量或数组。
4.C语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是(    )
A.地址传递                                B.值传递
C.有实参传给形参,再由形参传给实参        D.由用户指定传递方式
答案】B
说明】地址传递是在实参和形参是数组的情况下进行的。
5.C语言规定,函数返回值的类型是决定于(    )
A.return语句中的表达式类型              B.调用该函数时的主调函数类型
C.调用该函数时由系统临时                  D.在定义函数时所指定的函数类型
答案】D
6.若用数组名作为函数调用的实参,传递给形参的是(    )
A.数组的首地址                          B.数组中第一个元素的值
C.数组中的全部元素的值                  D.数组元素的个数
答案】A
7.如果在一个函数中的复合语句中定义了一个变量,则该变量(   
A.只在该复合语句中有定义                B.在该函数中有定义
C.在本程序范围内有定义                  D.为非法变量
答案】C
说明】因为该变量为局部变量。
8.下面程序的输出是(    )
int i=2;
printf("%d%d%d",i*=2,++i,i++);
A.8,4,2              B.8,4,3                C.4,4,5                D.4,5,6
【答案】A
9.已知一个函数的定义如下:
double fun(int x, double y)
{    }
则该函数正确的函数原型声明为(    )
A.double fun (int x,double y)                B.fun (int x,double y)
C.double fun (int ,double );                  D.fun(x,y) ;
【答案】A
10.以下不正确的说法是(    )
A.全局变量,静态变量的初值是在编译时指定的
B.静态变量如果没有指定初值,则其初值为0
C.局部变量如果没有指定初值,则其初值不确定
D.函数中的静态变量在函数每次调用时,都会重新设置初值
【答案】D
【说明】静态局部变量在其函数调用结束后仍然可以保留变量值。
11.以下任何情况下计算平方数时都不会引起二义性的宏定义是(    )
A.#define POWER(x) x*x                  B.#define POWER(x) (x)*(x)
C.#define POWER(x) (x*x)                D.#define POWER(x) ((x)*(x))
【答案】D
12.以下正确的叙述是(    )
A.C语言的预处理功能是指完成宏替换和包含文件的调用。
B.C语言的预处理指令只能位于C源程序文件的首部。
C.凡是C源程序中行首以“#”标识的控制行都是预处理指令。
D.C语言的编译预处理就是对源程序进行初步的语法检查。
【答案】B
13.C语言提供的预处理功能包括条件编译,其基本形式是:
#XXX  标识符
  程序段1
#else
  程序段2
#endif
这里XXX可以是(    )
A.define include                        B.ifdefinclude 
C.ifdefifndefdefine                 D.ifdef ifndef
【答案】D   
二、填空题
1.C语言函数返回类型的默认定义类型是       
【答案】整型
2.函数调用语句:fun((a,B.,(c,d,e))实参个数为       
【答案】2
3.函数的实参传递到形参有两种方式:               
【答案】传值、传址
4.在一个函数内部调用另一个函数的调用方式称为        。在一个函数内部直接或间接调用该函数成为函数        的调用方式。
【答案】嵌套调用  递归
5.C语言变量按其作用域分为                ;按其生存期分为               
【答案】全局变量  局部变量  动态变量  静态变量
6.已知函数定义:void dothat(int n,double x) { … },其函数声明的两种写法为     
       
【答案】dothat(int n,double x) { … }  dothat(int,double) { … }
7.C语言变量的存储类别有                               
【答案】自动变量和寄存器变量  静态外部变量  静态局部变量  外部变量
8.凡在函数中未指定存储类别的局部变量,其默认的存储类别为       
【答案】自动
9.在一个C程序中,若要定义一个只允许本源程序文件中所有函数使用的全局变量,则该变
量需要定义的存储类别为       
【答案】静态全局变量
10.变量被赋初值可以分为两个阶段:即               
答案】定义时赋值  运行中赋值
11.下面程序的运行结果是       
#define MAX(a,b) (a>b?a:b)+1
main()
{ int j=6,k=8,f;
  printf("%d\n",MAX(j,k));} 
【答案】9
12.下面程序的运行结果是       
#define A 4
#define B(x) A*x/2
main()
{ float c,a=4.5;
  c=B(a );
  printf("%5.1f\n",c );} 
【答案】9.0
13.以下程序的输出结果是       
#include "stdio.h"
#define  F(y)  3.84+y
#define  PR(A.  printf("%d",(int)(A.)
#define  PRINT(A. PR(A.;putchar('\n')
main()
{ int x=2;
  PRINT(F(3)*x);}
【答案】9
14.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。
       
main()
{ int x=2,y=3;
  printf("%d\n",pow(x,y));}
答案】#include <math.h>
15.下面程序的运行结果是       
main()
{ int a=10,b=20,c;
  c=a/b;
  #ifdef DEBUG
    printf("a=%d,b=%d",a,b );
  #endif
  printf("c=%d\n", c );}
【答案】c=0
16.下面程序的运行结果是       
#define DEBUG
main()
{ int a=14,b=15,c;
  c=a/b;
  #ifdef DEBUG
    printf("a=%d,b=%d, ",a,b );
  #endif
  printf("c=%d\n", c );}
【答案】a=14,b=15,c=0
三、程序阅读题
1.写出下面程序的运行结果。
func(int a,int B.
{ static int m=0,i=2;
  i+=m+1;
  m=i+a+b;
  return (m);
}
main()
{ int k=4,m=1,p1,p2;
  p1=func(k,m); p2=func(k,m);
  printf("%d,%d\n",p1,p2); 
}
【答案】8,17
2.写出下面程序的运行结果。
#define MAX 10
int a[MAX], i;
sub1()
{ for(i=0; i<MAX; i++) a[i]=i+i;
}
sub2()
{ int a[MAX], i ,max;
  max=5;
  for(i=0; i<MAX; i++) a[i]=i;
}
sub3(int a[])
{ int i;
  for(i=0; i<MAX; i++) printf("%d",a[i]);
  printf("\n");
}
main()
{ sub1(); sub3(A.; sub2(); sub3(A.;
}
【答案】
024*********
024*********
3.若输入的值是-125,写出下面程序的运行结果。
#include <math.h>
fun(int n)
{ int k,r;
  for(k=2; k<=sqrt(n); k++)
  { r=n%k;
    while(!r)
      { printf("%d",k); n=n/k; 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。