🎯问题:
一. 单选题(共30题,100分)
1. (单选题)【选择题】若有以下程序
#include<stdio.h>
int f(int a[],int n)
{
if(n>1)
{
int t;
t=f(a,n-1);
return t>a[n-1]?t:a[n-1];
}
else
return a[0];
}
main()
{
int a[]={8,2,9,1,3,6,4,7,5};
printf("%d\n",f(a,9));
}
则程序的输出结果是( )
A. 1
B. 9
C. 8
D. 5
2. (单选题)【选择题】有以下函数:
#include <stdio.h>
void func(int n)
{
int i;
for(i=0;i<=n;i++)
printf("*");
printf("#");
}
main()
{
func(3);
printf("????");
func(4);
printf("\n");
}
程序运行后的输出结果是( )
A. ****#????***#
B. ****#????*****#
C. **#????*****#
D. ***#????*****#
3. (单选题)【选择题】有以下程序:
#include <stdio.h>
int f(int x);
main()
{
int a,b=0;
for(a=0;a<3;a++)
{
b=b+f(a);
putchar('A'+b);
}
}
int f(int x)
{
return x*x+1;
}
程序运行后的输出结果是( )
A. ABE
B. BDI
C. BCF
D. BCD
4. (单选题)【选择题】有以下程序:
#include<stdio.h>
void fac2(int);
void fac1(int n)
{
printf("*");
if(n>0)
fac2(n-1);
}
void fac2(int n)
{
printf("#");
if(n>0)
fac2(--n);
}
main()
{
fac1(3);
}
程序的运行结果是( )
A. **##f
B. *##*
C. *#*#
D. *###
5. (单选题)【选择题】C语言程序中, 若函数无返回值, 则应该对函数说明的类型是( )
A. int
B. void
C. char
D. double
6. (单选题)【选择题】
以下程序中函数f的功能是: 当flag为1时, 进行由小到大排序; 当flag为0时, 进行由大到小排序。
#include <stdio.h>
void f(int b[],int n,int flag)
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(flag?b[i]>b[j]:b[i]<b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
}
main()
{
int a[10]={5,4,3,2,1,6,7,8,9,10},i;
f(&a[2],5,0);
f(a,5,1);
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是( )
A. 5,4,3,2,1,6,7,8,9,10,
B. 1,2,3,4,5,6,7,8,9,10,
C. 3,4,5,6,7,2,1,8,9,10,
D. 10,9,8,7,6,5,4,3,2,1,
7. (单选题)【选择题】以下叙述中错误的是( )
A. 改变函数形参的值, 不会改变对应实参的值
B. 可以给指针变量赋一个整数作为地址值
C. 函数可以返回地址值
D. 当在程序的开头包含头文件stdio.h时, 可以给指针变量赋NULL
8. (单选题)【选择题】有以下程序
#include<stdio.h>
void fun(int n,int *s)
{
int f;
if(n == 1)
*s = n+ 1;
else
{
fun(n-1,&f);
*s = f;
}
}
main()
{
int x =0;
fun(4,&x);
printf("%d\n",x);
}
程序运行后的输出结果是( )
A. 4
B. 2
C. 1
D. 3
9. (单选题)【选择题】设有以下函数:
void fun(int n,char* s){……}
则下面对函数指针的定义和赋值均是正确的是( )
A. void (* pf)(int,char);pf=&fun;
B. void * pf(); *pf=fun;
C. void (* pf)();pf=fun;
D. void *pf();pf=fun;
10. (单选题)【选择题】有以下程序:
#include<stdio.h>
void fun(int a[],int n)
{
int i,t;
for(i=0;i<n/2;i++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
}
main()
{
int k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++)
printf("%d",k[i]);
printf("\n");
}
程序运行的结果是( )
A. 321678
B. 876543
C. 345678
D. 1098765
11. (单选题)【选择题】有以下程序:
#include <stdio.h>
int fun(int n)
{
if(n==1)
return1;
else
return(n+fun(n-1));
}
main()
{
int x;
scanf("%d",&x);
x=fun(x);
printf("%d\n",x);
}
执行程序时, 给变量x输入10, 程序的输出结果是( )
A. 54
B. 45
C. 65
D. 55
12. (单选题)【选择题】有以下程序
#include <stdio.h>
int f(int n)
{
int t=0,a=5;
if(n/2)
{
int a=6;
t+=a++;
}
else
{
int a=7;
t+=a++;
}
return t+a++;
}
main()
{
int s=0,i=0;
for(;i<2;i++)
s+=f(i);
printf("%d\n",s);
}
程序运行后的输出结果是( )
A. 32
B. 36
C. 24
D. 28
13. (单选题)【选择题】有以下程序
#include <stdio.h>
int fun1(double a)
{
return (int)(a*= a);
}
int fun2(double x,double y)
{
double a = 0,b = 0;
a = fun1(x);
b =fun1(y);
return (int)(a+b);
}
main()
{
double w;
w =fun2(1.1,2.0);
printf("%4.2f",w);
}
程序执行后输出结果是( )
A. 0.0
B. 5.00
C. 5.21
D. 5
14. (单选题)【选择题】以下叙述正确的是( )
A. C语言中除了main函数, 其他函数不可作为单独文件形式存在
B. C语言程序是由过程和函数组成的
C. C语言函数不可以单独编译
D. C语言函数可以嵌套调用, 例如: fun(fun(x))
15. (单选题)【选择题】以下叙述中正确的是( )
A. 用户自己定义的函数只能调用库函数
B. 不同函数的形式参数不能使用相同名称的标识符
C. 实用的C语言源程序总是由一个或多个函数组成
D. 在C语言的函数内部, 可以定义局部嵌套函数
16. (单选题)【选择题】有以下程序:
#include <stdio.h>
double f(double x);
main()
{
double a=0;
int i;
for(i=0;i<30;i+=10)
a+=f((double)i);
printf("%5.0f\n",a);
}
double f(double x)
{
return x*x+1;
}
程序运行后的输出结果是( )
A. 500
B. 503
C. 1404
D. 401
17. (单选题)【选择题】以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。
#define MIN -2147483647
int fingmax (int x[],int n)
{
int i,max;
for(i=0;i<n;i++)
{
max=MIN;
if(max<x[i])
max=x[i];
}
return max;
}
造成错误的原因是( )
A. 赋值语句max=MIN;中, 不应给max赋MIN值
B. 语句if(max<x[i]) max=x[i];中判断条件设置错误
C. 赋值语句max=MIN;放错了位置
D. 定义语句int i,max;中max未赋初值
18. (单选题)【选择题】设有定义语句int(*f)(int);, 则以下叙述中正确的( )
A. f是基类型为int的指针变量
B. f是指向函数的指针变量, 该函数具有一个int类型的形参
C. f是函数名, 该函数的返回值是基类型为int类型的地址
D. f是指向int类型一维数组的指针变量
19. (单选题)【选择题】若函数调用时的实参为变量时, 以下关于函数形参和实参的叙述中正确的是( )
A. 同名的实参和形参占同一存储单元
B. 函数的形参和实参分别占用不同的存储单元
C. 形参只是形式上的存在, 不占用具体存储单元
D. 函数的实参和其对应的形参共占同一存储单元
20. (单选题)【选择题】有以下函数:
#include <stdio.h>
void exch(int t[])
{
t[0] = t[5];
}
main()
{
int x[10] = {1,2,3,4,5,6,7,8,9,10},i=0;
while(i <=4)
{
exch(&x[i]);
i++;
}
for(i = 0;i <5;i++)
printf("%d",x[i]);
printf("\n");
}
程序运行后的输出结果是( )
A. 6 7 8 9 10
B. 1 3 5 7 9
C. 2 4 6 8 10
D. 1 2 3 4 5
21. (单选题)【选择题】若有以下程序
#include <stdio.h>
void fun(int a[],int n)
{
int t,i,j;
for(i=1;i<n;i+=2)
for(j=i+2;j<n;j+=2)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
main()
{
int c[10]={10,9,8,7,6,5,4,3,2,1},i;
fun(c,10);
for(i=0;i<10;i++)
printf("%d,",c[i]);
printf("\n");
}
则程序的输出结果是( )
A. 10,1,8,3,6,5,4,7,2,9,
B. 1,10,3,8,5,6,7,4,9,2,
C. 2,9,4,7,6,5,8,3,10,1,
D. 10,9,8,7,6,5,4,3,2,1,
22. (单选题)【选择题】有以下程序
#include <stdio.h>
void f(int b[])
{
int i;
for(i=2;i<6;i++)
b[i]*=2;
}
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10},i;
f(a);
for(i=0;i<10;i++)
printf("%d,",a[i]);
}
程序运行后的输出结果是( )
A. 1,2,6,8,10,12,7,8,9,10,
B. 1,2,6,8,10,12,14,16,9,10,
C. 1,2,3,4,10,12,14,16,9,10,
D. 1,2,3,4,5,6,7,8,9,10,
23. (单选题)【选择题】若有以下函数首部
int fun(double x[10],int*n)
则下面针对此函数的函数声明语句中正确的是( )
A. int fun(double x,int*n);
B. int fun(double*,int*);
C. int fun(double,int);
D. int fun(double *x,int n);
24. (单选题)【选择题】有以下程序:
#include<stdio.h>
int f(int x[],int n)
{
if(n>1)
{
f(&x[1],n-1);
printf("%d,",x[0]);
}
else
printf("%d,",x[0]);
}
main()
{
int z[6]={1,2,3,4,5,6};
f(z,6);
printf("\n");
}
程序的运行结果是( )
A. 6,5,4,3,2,1,
B. 1,2,3,4,5,6,
C. 1,1,
D. 1,1,1,1,1,1,
25. (单选题)【选择题】有以下程序
#include<stdio.h>
int fun(int x)
{
int p;
if(x==0||x==1)
return (3);
p=x-fun(x-2);
return p;
}
main()
{
printf("%d\n",fun(7));
}
执行后的输出结果是( )
A. 7
B. 2
C. 3
D. 0
26. (单选题)【选择题】以下关于函数的叙述中正确的是( )
A. 函数形参的类型与返回值的类型无关
B. 函数必须要有形参
C. 函数必须要有返回值
D. 函数调用必须传递实参
27. (单选题)【选择题】有如下程序:
#include<stdio.h>
void get_put()
{
char ch;
ch=getchar();
if(ch!='\n')
get_put();
putchar(ch);
}
main()
{
get_put();
printf("\n");
}
程序运行时, 输入1234<回车>, 则输出结果是( )
A. 1111
B. 4444
C. 4321
D. 1234
28. (单选题)【选择题】在源程序的开始处加上“#include<stdio.h>”进行文件引用的原因, 以下叙述正确的是( )
A. stdio.h文件中包含标准输入输出函数的函数说明, 通过引用此文件以便能正确使用printf、 scanf等函数
B. 将stdio.h中标准输入输出函数的二进制代码插入到引用处, 以便进行编译链接
C. 将stdio.h中标准输入输出函数链接到编译生成的可执行文件中, 以便能正确运行
D. 将stdio.h中标准输入输出函数的源程序插入到引用处, 以便进行编译链接
29. (单选题)【选择题】有如下程序:
#include <stdio.h>
int sum(int a,int b)
{
return a+b-2;
}
main()
{
int i;
for(i = 0;i <5;i++)
printf("%d",sum(i,3));
printf("\n");
}
程序运行后的输出结果是( )
A. 12345
B. 45678
C. 01234
D. 54321
30. (单选题)【选择题】有以下程序:
#include <stdio.h>
void fun(int p)
{
int d=2;
p=d++;
printf("%d",p);
}
main()
{
int a=1;
fun(a);
printf("%d\n",a);
}
程序运行后的输出结果是( )
A. 12
B. 22
C. 32
D. 21
🎯答案 :
1-5:BBBDB
6-10:CBBAA
11-15:DCBDC
16-20:BCBBA
21-25:AABAB
16-30:ACAAD