国二c语言笔试题库(专升本会出40分的题) 下载本文

inverse(char str[ ]) {char t; int i, j;

for(i=0, j=strlen(str); i

str[i]=str[j-1]; str[j-1]=t; } }

main( )

{char str[100]; scanf(“%s”, str); inverse(str);

printf(“%s\\n”, str); }

如果输入an anple,该程序的输出结果是( )。

A) an anple B) elpna na C) an D) na 18.在下列叙述中,正确的一条是( )。

A) puts和gets函数只能输入或输出一个字符串 B) 在C语言中,函数可以递归调用或递归定义

C) 用scanf函数输入数据时可以规定精度,例如scanf(“%7.2f”,&a); D) 外部变量只限于本文件中使用 19.以下程序的输出结果是( )。 power(int x, int n) {int p;

if(n>0) p=power(x, n-1)*x; else p=1; return (p); }

main( )

{int x=2, n=3;

printf(“%d\\n”, power(x, n)); }

A) 5 B) 6 C) 8 D) 9 20.在C语言的函数中( )。

A) 必须有形参 B) 形参必须是变量名 C) 可以有也可以没有形参 D) 数组名不能作形参 21.当输入a1b2c3d4e时,以下程序的输出结果为( )。 #include main( )

{char str[40];

printf(“请输入含有四个数字字符的字符串:\\n”); scanf(“%s”,str); insert(str);

}

insert(char str[ ]) {int i;

for(i=strlen(str);i>0;i--) {str[2*i]=str[i]; str[2*i-1]= ? ?; }

printf(“\\n结果是:%s”, str); }

A) a 1 b 2 c 3 d 4 e B) 1 2 3 4

C) a 1 b 2 D) 因输入错误,程序出错 22.在下列叙述中,错误的一条是( )。

A) 主函数main中定义的变量在整个文件或程序中有效 B) 不同函数中,可以使用相同名字的变量 C) 函数中的形式参数是局部变量

D) 在一个函数内部,可在复合语句中定义变量,这些变量只在本复合语句中有效

23.以下程序的输出结果是( )。 #include main( ) {int i;

for(i=0; i<2; i++) as ( ); } as( )

{int lv=0;

static int sv=0;

printf(“lv=%d, sv=%d”, lv, sv); lv++; sv++; }

A) lv=0,sv=0,lv=0,sv=1 B) lv=0,sv=0,lv=1,sv=1 C) lv=0,sv=0,lv=0,sv=0 D) lv=0,sv=1,lv=0,sv=1 24.在下列叙述中,错误的一条是( )。 A) 全局变量存放在静态存储区中,在程序开始执行时就给全局变量分配存储区,程序执行完才释放

B) 在有参函数中,形参在整个程序一开始执行时便分配内存单元

C) 用数组名作函数实参和形参时,应在主调函数和被调用函数中分别定义数组 D) 在同一个源文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用

25.在下列语句中,不正确的是( )。

A) c=2*max(a,b); B) m=max(a,max(b,c));

C) printf(“%d”,max(a,b)); D) int max(int x,int max(int y,int z));

26.若输入1.5、2.5,以下程序的输出结果为( )。 main( )

{int max(float x, float y); float a, b; int c;

scanf(“%f, %f” , &a, &b); c=max(a, b); printf(“%d”, c); }

max(float x, float y) {float z;

z=x>y ? x : y; return(z); }

A) 1 B) 2.5 C) 2 27.下列程序结构中,正确的是( )。 A) main()

{float a,b,c;

scanf(“%f,%f”,&a,&b); c=add(a,b); ? }

int add(float x,float y) { ? } B) main()

{float a,b,c;

scanf(“%f,%f”,&a,&b); c=add(a,b); ? }

float add(float x,float y) { ? }

C) float add(); main()

{float a,b,c;

scanf(“%f,%f”,&a,&b); c=add(a,b); ? }

float add(float x,float y) { ? }

D) float add(float x,float y) { ? } main()

D) 3 {float a,b,c;

scanf(“%f,%f”,&a,&b); c=add(a,b); ? }

28.在下列叙述中,错误的一条是( )。

A) scanf函数可以用来输入任何类型的多个数据 B) 数组名作函数参数时,也采用“值传递”方式 C) 如果形参发生改变,不会改变主调函数的实参值 D) 函数的实参与形参的类型应一致 29.以下程序的输出结果是( )。 main()

{int i=1,j=3;

printf(“%d”,i++); {int i=0; i+=j*2;

printf(“%d,%d”,i,j); }

printf(“%d,%d\\n”,i,j); }

A) 1,6,3,1,3 B) 1,6,3,2,3 C) 1,6,3,6,3 1,7,3,2,3

30.C语言中形参的缺省存储类别是( )。

A) 自动(auto) B) 静态(static) C) 寄存器(register) D) 外部(extern) 31.设有如下函数: ggg(float x)

{printf(“\\n%d”, x*x);} 则函数的类型为( )。

A) 与参数x的类型相同 B) void C) int D) 无法确定 32.C语言规定,程序中各函数之间( ) A) 既允许直接递归调用也允许间接递归调用 B) 不允许直接递归调用也不允许间接递归调用 C) 允许直接递归调用不允许间接递归调用 D) 不允许直接递归调用允许间接递归调用 33.下面程序的输出结果是( )。 main()

{int i=2,p; p=f(i,i+1);

printf(“%d”,p); }

int f(int a,int b) {int c;

D)