数学科学学院C语言复习资料
p=(char*)malloc(sizeof(char)*20); q=p;
scanf(“%s%s”,p,q); printf(“%s %s\\n”,p,q); }
若从键盘输入:abc def<回车>,则输出结果是:
A. def def B. abc def C. abc d D. d d
99、设定义某函数时,函数头如下:int f(int a[],int b),则下列说法中错误的是( )。
A、该函数有整型的返回值 B、调用时要给形参b分配内存
C、数据传递都是地址传递方式 D、调用时第一个实参要以是指针变量 100、下列说法中,正确的是( )。 A、函数可以嵌套定义,但是不能嵌套调用
B、可以通过return(表达式1,表达式2,?) 语句返回多个值 C、函数的返回值可以是整型、实型、字符型、地址型及结构型 D、函数f( )不能直接调用自己,但是可以调用函数g( ),在函数g( )调用f( ) 101、C语言允许函数值类型默认定义,此时该函数值隐含的类型是( )。
A、float型 B、int型 C、long型 D、double型
102、如果在一个函数的复合语句中定义了一个变量,则该变量( )。 A、只在该复合语句中有效 B、在该函数中有效 C、在本程序范围内均有效 D、为非法变量
103、几是函数中未指定存储类别的局部变量,其隐含的存储类别为( )。
A、自动(auto) B、静态(static)
C、外部(extern) D、寄存器(register)
104、在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使用的存储类别是( )。 A、extern B、register C、auto D、static
105、若调用一个函数,且此函数中没有return语句,则该函数( )。 A、没有返回值 B、返回若干个系统默认值 C、能返回一个用户所希望的函数值 D、返回 一个不确定的值
106、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )。
A、地址传递 B、单向值传递
C、由实参传给形参,再由形参传回给实参 D、由用户指定传递方式
16
数学科学学院C语言复习资料
107、若数组名作为函数调用的实参,传递给形参的是( )。 A、数组的首地址 B、数组第一个元素的值 C、数组中全部元素的值 D、数组元素的个数 108、以下正确的说法是( )。在C语言中简单变量作函数参数时, A、实参和与其对应的形参各占用独立的存储单元 B、实参和与其对应的形参共同占用一个存储单元
C、只有当实参和与其对应的形参同名时才共占存储单元 D、形参是虚拟的,不占用存储单元
109、以下程序的正确运行结果是( main() {int a=2,i;
for(i=0;i<3;i++) printf(“M”,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 110、以下正确的函数形式是( )。A、double fun(int x,int y) {z=x+y ;return z;} B、 fun(int x,y) {int z;return z;} C、fun(x,y) {int x,y; double z;
z=x+y; return z;}
D、double fun(int x,int y) {double z; z=x+y; return z;}
111、以下程序的正确运行结果是( #include
17
)。 9 11 D、7 。 8 9 )数学科学学院C语言复习资料
void num()
{extern int x,y; int a=15,b=10; x=a-b; y=a+b; } int x,y; main()
{int a=7,b=5; x=a+b; y=a-b; num( );
printf(“%d,%d\\n”,x,y); }
A、12,2 B、不确定 C、5,25 D、1,12 112、以下不正确的说法为( )。
A、在不同函数中可以使用相同名字的变量 B、形式参数是局部变量
C、在函数内定义的变量只在本函数范围内有效
D、在函数内的复合语句中定义的变量在本函数范围内有效
113、以下程序有语法性错误,有关错误原因的正确说法是( )。 main() {int G=5,k; void prt_char(); ?
k= prt_char(G); ? }
A、语句void prt_char();有错,它是函数调用语句,不能用void说明 B、变量名不能使用大写字母
C、函数说明和函数调用语句之间有矛盾 D、函数名不能使用下划线
114、C语言规定,函数返回值的类型由( )。 A、return语句中的表达式类型所决定 B、调用该函数时的主调函数类型所决定 C、调用该函数时系统临时决定
D、在定义该函数时所指定的函数类型所决定
18
数学科学学院C语言复习资料
115、若有定义: int a[10],则对数组a元素的正确引用是( )。 A、a[10] B、a[3,5] C、 a(5) D、a[10-10]
116、设有宏定义命令:#define MUL 2+3 ,则表达式“5+MUL*5.0”的值为( )。
A、50.0 B、30.0 C、22.0 D、20.0
117、设有宏定义:# define M(x,y) x A、15 B、11 C、-15 D、-11 118、C语言程序中,main函数( )。 A、可以在任何地方出现 B、必须在所有函数的前面 C、必须在所有函数的后面 D、以上说法都不对 119、以下说法中,正确的是( )。 A、宏参数本身无数据类型 B、宏名只能由大写字母组成 C、宏替换是在程序执行时进行的 D、宏替换时参数数据类型应和定义时相同 120、运行下列程序的输出结果是( )。 # define SUB(X,Y) (X)*Y main() {int a=3,b=4; printf(“%d\\n”,SUB(a++,b++)); } A、12 B、15 C、16 D、20 121、运行下列程序的结果是( )。 # define A(x) (x*x) # define B(y,z) A(y) {int a=2,b=3,c; c=B(a,b); printf(“%d\\n”,c); } A、4 B、5 C、6 D、9 122、以下叙述中不正确的是( )。 A、预处理命令行都必须以#开始 B、在程序中凡是以#开始的语句行都是预处理命令行 19 数学科学学院C语言复习资料 C、C程序在执行过程中对预处理命令进行处理 D、以下是正确的宏定义:#define IBM_PC 123、以下有关宏替换的叙述不正确的是( )。 A、宏替换不占用运行时间 B、宏名无类型 C、宏替换只是字符替换 D、宏名必须用大写字母表示 124、若有以下宏定义,则语句z=2*(N+Y(5));执行后的结果是( )。 #define N 2 #define Y(n) ((N+1)*n) A、语句有错误 B、z的值为34 C、z=70 D、z无定值 125、设有指针变量p已指向float型变量x,正确的输入语句是( )。 A、scanf(“%f”,x); B、scanf(“%d”,&x); C、scanf(“%f”,p); D、scanf(“%f”,*p); 126、以下叙述中,不正确的是( )。 A、C语言中,顺序读写方式不适用于二进制文件 B、C语言中的文本文件以ASCII码形式存储数据 C、C语言中,随机读写方式不适用于文本文件 D、C语言中对二进制文件的访问速度比文本文件快 127、设有数据定义语句int a,*pa=&a;和赋值语句*pa=a; 则下列说法正确的是( )。 A、定义语句中的“*pa=&a”表示将a的地址赋予pa B、定义语句中的“*pa=&a”表示将a的值赋予pa C、赋值语句中的“*pa=a” 表示将a的地址赋予pa D、赋值语句中的“*pa=a” 表示将a的值赋予pa 128、和定义语句char *a=”ccw”;功能完全相同的程序段是( )。 A、char *a,a=”ccw”; B、char *a; a=”ccw”; C、char *a; *a=”ccw”; D、char *a,*a=”ccw”; 129、下列数据定义语句中,正确的是( )。 A、char ch[2],*p=ch[1]; B、char ch,*p=&ch; C、float *p=&a,a=5; D、float b1,b2,p=&b1; 130、设有char str[100];int i=5;则引用数组元素的错误形式是( )。 A、*((str++)+i) B、*(str+i-1) C、*(str+i) D、str[i+10] 131、设有定义语句int x[]={1,2,3},*p=x;则结果不是地址值的是( )。 A、p+1 B、x C、*p D、&x[0] 132、设有数据定义语句int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为8的 20