上海甚佳面试题
1.以下正确的说法是( )
A、用户若需要调用标准函数,调用前必须重新定义
B、用户可以重新定义标准函数,若如此,该函数将失去原有含义
C、系统根本不允许用户重新定义标准库函数
D、用户若需调用标准库函数,调用前不必使用预编译指令将函数所在文件包括到用户源文件中,系统自动去调
2.以下正确的函数声明形式是( )
A、double fun(int x,int y)
B、double fun(int x;int y)
C、double fun(int x,int y);
D、double fun(int x,y)
3.以下正确的函数形式是( )
A、double fun(int x,int y){z = x + y;return z;}
B、fun(int z,y){int z;return z;}
C、fun(x,y){int x,double z; z=x+y;return z;}
D、double fun(int x,int y){double z; z=x+y;return z;}
4.在C语言中,以下正确的说法是( )
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参共占用一个存储单元
C、只有当实参和与其对应的形参同名是才共占用存储单元
D、形参是虚拟的,不占用存储单元;
5.若调用一个函数,且此函数中没有return语句,则正确的说法是( )
A、没有返回值
B、返回若干个系统默认值
C、能返回 一个用户所希望的函数值
D、返回一个不确定的值
6、C语言规定中,以下不正确的说法是( )
A、实参可以是常量、变量、表达式
B、形参可以是常量、变量、表达式
C、实参可以是任意类型
D、形参应与其对应的实参类型一致
`
7.以下正确的说法是( )
A、定义函数时,形参的类型说明可以放在函数体内
B、return后边的值不能为表达式
C、如果函数值的类型与返回值类型不一致,以函数值类型为准
D、如果形参和实参的类型不一致,以实参类型为主
8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( )
A、地址传递
B、单向值传递//实参传给形参,函数之间值的传递是单向传递
C、由实参传给形参,再有形参传回给实参
D、由用户指定传递方式
9.以下程序有语法性错误,有关错误的原因的正确说法是( )
void main( )
{
int G = 5,k;
void prt_char();
k=prt_char(G);
}
A、语句 void prt_char();有错,它是函数调用语句,不能用void说明
B、变量名不能使用大写字母
C、函数说明和函数调用之间有矛盾
D、函数名不能使用下划线
10、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( )
A、float型
B、int型
C、long型
D、double型
11、C语言规定中,函数返回值的类型是由( )
A、return语句中的表达式类型所决定
B、调用该函数时的主调函数类型所决定
C、调用该函数时系统临时决定
D、在定义该函数时所指定的函数类型所决定
12.下面函数调用语句含有实参的个数为()
func((exp1,exp2),(exp3,exp4,exp5));
A、1
B、2
C、3
D、4
13.以下错误的描述是( )
函数调用可以
A、出现在执行语句中
B、出现在一个表达式中
C、做为一个函数的实参
D、作为一个函数的形参
14.以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y) + (z+y)/(z-y)的值,请选择填空①( )②( )
#include
#include
void main()
{
float x,y,z,sum;
scanf("%f,%f,%f",&x,&y,&z);
sum=f(①) + f(②);
printf("sum = %f\n",sum);
}
float f(float a,float b)
{
float value;
value = a/b;
return(value);
}
①A、x-y,x+y
B、x+y,x-y
C、z+y,z-y
D、z-y,z+y
②A、x-y,x+y
B、x+y,x-y
C、z+y,z-y
D、z-y,z+y
15.在C语言中,以下正确的描述是( )
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用均不可以嵌套
D、函数的定义和函数的调用均可以嵌套
16.关于static全局变量与普通的全局变量,以下说法正确的是( )
A、两者都是静态的存储方式
B、两者都是动态的存储方式
C、两者都是作用域相同
D、static全局变量的作用范围在限于一个源文件内,普通全局变量是在几个源文件中,两者都不能在整个源程序中使用
17.局部变量能否和全局变量重名,以下说法正确的是( )
A、不可以,编译时会报错
B、可以,局部变量只能一次和全局变量重名
C、可以,局部变量的作用域只从它被定义代码开始
D、可以,只能在一个文件内多次定义同名全局变量和局部变量
18.int a =5,b=7,c;c=a+++b;左边运行完成后,a,b,c的结果是( )
A、a=5,b=7,c=12B、a=6,b=7,c=13
C、a=6,b=7,c=12
D、a=5,b=7,c=13
19.以下语句中,错误语句是( )
A、int a[5];a[0]=1;a[5]=3;a[2]=a[0];a[3]=a[0];a[4]=a[5];
B、unsigned char a;unsigned char b;if(a!=0){b=1}
C、unsigned char a;unsigned char b;if(a=0){b=1}
D、unsigned char *a;unsigned char b;a=&b;*a=1;
20.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是型,C语言规定,函数返回值的类型是由所决定( )
A、float型,return语句中的表达式类型
B、int型,在定义该函数时所指定的函数类型
C、long型,调用该函数时的主调函数类型
D、double型,调用该函数时系统临时决定
21、以下有效的程序段是( )
#define TEST_MODE_1
#define TEST_MODE_2 ON
#ifndef TEST_MODE
#if 1
(程序段A)
#endif
#ifdef TEST_MODE_1
(程序段B)
#endif
#ifdef TEST_MODE_2 == ON
(程序段C)
#else
(程序段D)
#endif
#endif
22.下面add函数的功能是求两个参数的和,并将和值返回调用函数
函数中错误的部分是( ),改正后为( )
void add(float a,float b)
{
float c;
c=a+b;
return c;
}
23.以下程序的运行结果是()
int max(int x,int y)
{
int z;
z=(x>y)?x:y;
return(z);
}
void main()
{
int a=1,b=2,c;
c=max(a,b);
printf("max is %d\n",c);
}
24.数字位颠倒
输入一个数字,从个数开始输出
例如:输入123,输出321
输入120,输出21
```