二级C语言笔试-48_真题(含答案与解析)-交互
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二级C语言笔试-48
(总分90, 做题时间90分钟)
一、选择题
在下列各题的A) 、B) 、C) 、D) 四个选项中,只有一个选项是正确的。
1.
以下函数调用语句中实参的个数是( )
func((exp1,exp2),(exp3,exp4,exp5));
SSS_SINGLE_SEL
A 1
B 2
C 4
D 5
分值: 1
答案:B
2.
有以下程序
#includ2<stdio.h>
#include<string.h>
main()
char b1[8]="abcdefg",b2[8],*pb=b1+3,
while(--pb>b1)strcpy(b2,pB) ;
printf("%d\n",strlen(b2));
程序运行后的输出结果是( )
SSS_SINGLE_SEL
A 8
B 3
C 1
D 6
分值: 1
答案:D
3.
有以下结构体说明和变量的定义,且如下图所示指针p指向变量a,指针q指向变量b。
则不能把结点 b连接到结点a之后的语句是( ) struct node
char data;
struct noe *next;
a,b,*p=&a,*q=&b;
SSS_SIMPLE_SIN
A B C D
分值: 1
答案:B
4.
若有说明:int * p,m=51; n;,以下正确的程序段是( )
SSS_SINGLE_SEL
A
p=&m;
scanf("%d",&p)
B
p=&n;
scanf("%d",&P)
C
scanf("%d",&p)
p=&n;
D
p=&n;
p=&m;
分值: 1
答案:D
5.
若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是( )
SSS_SINGLE_SEL
A p=2 *(int *)malloc(sizeof(int));
B p=(int*)calloc(2*sizeof(int));
C p=(int*)malloc(2* sizeof(int));
D p=2 *(int*)calloc(sizeof(int));
分值: 1
答案:C
6.
下列定义正确的是( )
SSS_SINGLE_SEL
A static int a[]=1,2,3,4,5
B int b[]=2,5
C int a(10)
D int 4e[4]
分值: 1
答案:A
7.
在软件工程中,白箱测试法可用于测试程序的内部结构。
此方法将程序看做
是( )
SSS_SINGLE_SEL
A 路径的集合
B 循环的集合
C 目标的集合
D 地址的集合
分值: 1
答案:A
8.
下面的说法不正确的是( )
SSS_SINGLE_SEL
A 函数调用时,先求出实参表达式,然后带入形参。
而使用带参的宏只是进行简单的字符替换
B 函数调用是在程序运行时处理的,分配临时的内存单元。
而宏展开则是在编译时进行的,在展开时也要分配内存单元,进行值传递
C 对于函数中的实参和形参都要定义类型,二者的类型要求一致,而宏不存在类型问题,宏名有类型
D 调用函数只可得到一个返回值,而用宏可以设法得到几个结果
分值: 1
答案:B
9.
若要打开A盘中user子目录下名为aaa.txt的文本文件进行读、写操作,下面符合此要求的函数调用是( )
SSS_SINGLE_SEL
A fopen("A:\user\aaa.txt","r")
B fopen("A:\\user\\aaa.txt","r+")
C fopen("A:\user\aaa.txt","rb")
D fopen("A:\\user\\aaa.txt","w")
分值: 1
答案:B
10.
下列程序的输出结果是( )
main()
char*p1,*p2,str[50]="xyz";
p1="abcd";
p2="ABCD";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
SSS_SINGLE_SEL
A xyabcAB
B abcABz
C Ababcz
D XycdBCD
分值: 1
答案:D
11.
若有如下说明:
int a,b=5,*t=&a;
则能完成a=b赋值功能的语句是( )
SSS_SINGLE_SEL
A &a=&b;
B *t=b;
C *t=&b;
D *a=*t;
分值: 1
答案:B
12.
若有代数式“e x+y2+y/x”,则正确的C语言表达式是( )
SSS_SINGLE_SEL
A ex+y*y+y/x
B exp x+pow(y,2)+y/x
C exp(x)+pow(y,2)+y/x
D ex+y2+y/x
分值: 1
答案:C
13.
为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为( )
SSS_SINGLE_SEL
A PAD图
B N-S图
C 结构图
D 数据流图
分值: 1
答案:B
14.
执行语句“for(n=10;n>0;)printf("%d",--n+n--);”后,下列说法正确的是( )
SSS_SINGLE_SEL
A 循环体执行了5次,最终n的值是-1
B 循环体执行了6次,最终n的值是-1
C 循环体执行了6次,最终n的值是0
D 循环体执行了5次,最终n的值是0
分值: 1
答案:D
15.
下列字符串不属于标识符的是( )
SSS_SINGLE_SEL
A sum
B average
C day_night
D M,D.JOHN
分值: 1
答案:D
16.
有以下程序
#include <stdio.h>
main()
int.i=0,a=0;
while(i<20)
for(;;)
if((i%10)==0) break;
else i--;
i+=11;a+=i;
printf("%d\n",
SSS_SINGLE_SEL
A
;
&nbs
分值: 1
答案:B
17.
若t已定义为double类型,表达式:t=1,t++,t+5的值是( )
SSS_SINGLE_SEL
A 1
B 7.0
C 2.0
D 1.0
分值: 1
答案:B
下列有关数据库的描述,正确的是( )
SSS_SINGLE_SEL
A 数据处理是将信息转化为数据的过程
B 数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C 关系中的每一列称为元组,一个元组就是一个字段
D 如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字
分值: 1
答案:D
19.
若变量已正确定义并赋值,对库函数错误调用的是( )
SSS_SINGLE_SEL
A k=scanf("%d%d",&i,&j);
B printf("\\%d\\n",k);
C getchar(ch);
D putchar(ch);
分值: 1
答案:C
20.
将E-R图转换到关系模式时,实体与联系都可以表示成( )
SSS_SINGLE_SEL
A 属性
B 关系
C 键
D 域
分值: 1
答案:B
21.
若有如下程序;
main()
char *p="china";p+=1;
printf("%d\n",p);
则程序运行后的输出结果是( )
SSS_SINGLE_SEL
A china
B 字符h的地址
C hina
D 字符h的ASCII码值
分值: 1
答案:B
在设计程序时,应采纳的原则之一是( )
SSS_SINGLE_SEL
A 不限制goto语句的使用
B 减少或取消注解行
C 程序越短越好
D 程序结构应有助于读者理解
分值: 1
答案:D
23.
若x=3,y=z=4,则下列表达式的值分别为( )
(1)(z>=y>=x)?1:0
(2)y+=z,x*=y
SSS_SINGLE_SEL
A 0 24
B 1 8
C 0 8
D 1 12
分值: 1
答案:A
24.
在单链表中,增加头结点的目的是( )
SSS_SINGLE_SEL
A 方便运算的实现
B 使单链表至少有一个结点
C 标识表结点中首结点的位置
D 说明单链表是线性表的链式存储实现
分值: 1
答案:A
25.
下述程序段的执行结果是( )
#include<stdio.h>
void main()
int x;
for(x=1; x<=100; x++)
if(++x%3==0)
if(++x%4==0)
if(++x%7==0)
printf("%d",x);
SSS_SINGLE_SEL
B 76
C 77
D 84
分值: 1
答案:C
26.
交换两个变量的值,不允许用临时变量,应该使用下列哪一个位运算
符( )
SSS_SINGLE_SEL
A ~
B &
C ^
D |
分值: 1
答案:C
27.
若有如下定义:
int (*p)(),*q();
则下列说法正确的是( )
SSS_SINGLE_SEL
A p是一个函数名,q是一个指针变量
B p是一个指向整型变量的指针变量,q是一个指向一维数组的指针变量
C p和q是等价的,都是指针变量
D p是指向函数的指针变量,函数的返回值是整型数据;q是带回指针值的函数
分值: 1
答案:D
28.
以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是
SSS_SINGLE_SEL
A
main()
int*p;
fun(p);
…
int fun(int*p)
int s; p=&s;
B
int *p;
fun(&p);
…
int fun(int**p)
int s; *p=&s;
C
#include <stdlib.h>
main()
int *p;
fun(&p);
…
int fun(int**p)
*p=(int*)malloc(2);
D
#include <stdlib.h>
main()
int *p;
fun(p);
…
int fun(int *p)
p=(int*)malloc(sizeof(int));
分值: 1
答案:C
29.
有以下程序
main()
int y=10;
do y--;while(--y);
printf("%d\n",y--);
程序运行后的输出结果是( )
SSS_SINGLE_SEL
A -1
B 1
C 8
D 0
分值: 1
答案:D
30.
对表进行水平方向和垂直方向的分割,分别对应的关系运算是( )
SSS_SINGLE_SEL
A 选择和投影
B 投影和选择
C 选择和联接
D 投影和联接
分值: 1
答案:A
31.
以下程序调用findmax函数返回数组中的最大值
findmax(int *a,int n)
int *p,*s;
for(p=a,s=a;p-a<n;p++)
if (______)s=p;
return(*s);
main()
int x[5]=12,21,13,6,18;
printf("%d\n",findmax(x,5));
在下划线处应填入的是( )
SSS_SINGLE_SEL
A p>s
B *p>*s
C a[p]>a[s]
D p-a>p-s
分值: 1
答案:B
32.
一个C程序由函数A、B、C和函数P构成,在函数A中分别调用了函数B和函数C,在函数B中调用了函数A,且在函数P中也调用了函数A,则可以
说( )
SSS_SINGLE_SEL
A 函数B中调用的函数A是函数A的间接递归调用
B 函数A被函数B调用是函数A间接递归调用
C 函数P直接递归调用了函数A
D 函数P中调用的函数A是函数P的嵌套
分值: 1
答案:D
33.
以下程序的运行结果是( )
#define MAX 10
int a[MAX],i;
main()
printf("\n");sub1();sub3(
SSS_SINGLE_SEL
A
,sub2(),sub3(A) ;
sub2()
int a[MAX],i,max;
max=5;
for(i=0;i<max;i++)a[i]=i;
sub1()
for(i=0;i<MAX;i++)a[i]=i+i;
sub3(int a[])
int i;
for(i=0;i<MAX,i++)printf("%d",a[i]);
printf("\n");
A) 0 2 4 6 8 10 12 14 16 18
&
B
0 1 2 3 4
0 2 4 6 8 10 12 14 16 18
C
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4
D
0 2 4 6 8 10 12 14 16 18
0 2 4 6 8 10 12 14 16 18
分值: 1
答案:D
34.
数据结构中,与所使用的计算机无关的是数据的( )
SSS_SINGLE_SEL
A 存储结构
B 物理结构
C 逻辑结构
D 物理和存储结构
分值: 1
答案:C
35.
执行下列程序时输入:123<空格>456<空格>789<回车>,输出结果
是( )
main()
char s[100]
int c,i;
scanf("%c",&C) ;
scanf("%d",&i);
scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);
SSS_SINGLE_SEL
A 1,456,789
B 1,23,456
C 1,23,456,789
D 123,456,789
分值: 1
答案:B
36.
设有如下定义和声明:
struct 3
int a;
struct s *next ;
struct s x[4]=1,&x[1],3,& x[2],5,&x[3],7,'\0'),*t;
t=&x[0];
则下列表达式值为2的是( )
SSS_SINGLE_SEL
A ++t->a
B (*t).a++
C t->a++
D t++->a
分值: 1
答案:A
37.
下列程序的输出结果是( )
struct abc
int a,b,c;;
main()
struct abc s[2]=1,2,3,4,5,6;
int t;
t=s[0].a+s[1].b;
printf("%d\n",t);
SSS_SINGLE_SEL
A 3
B 4
C 5
D 6
分值: 1
答案:D
38.
算法的时间复杂度是指( )
SSS_SINGLE_SEL
A 执行算法程序所需要的时间
B 算法程序的长度
C 算法执行过程中所需要的基本运算次数
D 算法程序中的指令条数
分值: 1
答案:C
39.
有以下程序
#inelude<stdio.h>
main()
float x,y;
scan("%f",&x);
if(x<0.0)y=0.0;
else if((x<5.0)&&(x!=2.0))
y=1.0/(x+2.0);
else if(x<10.0)y=1.0/x;
else y=10.0;
printf("%f\n",y);
若运行时从键盘上输入2.0<CR>(<CR>表示回车),则上面程序的输出结果是( )
SSS_SINGLE_SEL
A 0.000000
B 0.250000
C 0.500000
D 1.000000
分值: 1
答案:C
40.
若有如下程序:
main()
int a=6;char ch=c;
printf("%d\n",(a&2)&&(ch<'m'));
则程序运行后的输出结果是( )
SSS_SINGLE_SEL
A 0
B 1
C 2
D 3
分值: 1
答案:A
41.
若有如下程序:
sub(int a,int b,int *z)
*z=a+b;
return;
main()
int a=1,b=2,c=3,d,e;
sub(a,b,&D) ;
sub(c,d,&e);
printf("%d",e);
则程序运行后的输出结果是( )
SSS_SINGLE_SEL
A 3
B 4
C 5
D 6
分值: 1
答案:D
42.
若有以下定义和语句:
int u=010,v=0x10,w=10;
printf("%d,%d,%d\n",u,v,w);
则输出结果是( )
SSS_SINGLE_SEL
A 8,16,10
B 10,10,10
C 8,8,10
D 8,10,10
分值: 1
答案:A
43.
fscanf函数的正确调用形式是( )
A fscanf(fp,格式字符串,输出表列);
B fscanf(格式字符串,输出表列,fp);
C fscanf(格式字符串,文件指针,输出表列),
D fscanf(文件指针,格式字符串,输入表列);
分值: 1
答案:D
44.
在C语言中,整数65534在存储单元中的存储情况是( )
SSS_SINGLE_SEL
A 11 11 11 11 11 11 11 11
B 10 00 00 00 00 00 00 10
C 01 11 11 11 11 11 11 11
D 11 11 11 11 11 11 11 10
分值: 1
答案:D
45.
下列说法不正确的是( )
SSS_SINGLE_SEL
A
下列结构体定义时,占据了5个字节的空间
struct s int num;
int age;
char sex;
B 结构体的成员名可以与程序中的变量名相同
C 对结构体中的成员可以单独使用,它的作用相当于普通变量
D 结构体的成员可以是一个结构体变量
分值: 1
答案:A
46.
以下各选项企图说明一种新的类型名,其中正确的是( ) SSS_SINGLE_SEL
A typedef v1 int,
B typedef v2=int;
C typedef int v3;
D typedef v4:int;
分值: 1
答案:C
47.
以下叙述中不正确的是( )
A 一个变量的作用域完全取决于变量定义语句的位置
B 全局变量可以在函数以外的任何部位进行定义
C 局部变量的“生存期”只限于本次函数调用,因此不可能将局部变量的运算结果保存至下一次调用
D 一个变量说明为static存储类是为了限制其他编译单位的引用
分值: 1
答案:B
48.
若以下对fun函数的调用是正确的:
x=fun(fun(a,b,c) ,(a+b,a+c) ,a+b+c);
则fun函数的形参个数为( )
SSS_SINGLE_SEL
A 3
B 4
C 5
D 6
分值: 1
答案:A
49.
下面程序的输出结果是( )
main()
int i,j;
i=16;j=(i++)+i;printf("%d",j);
i=15;printf("%d%d",++i,i);
SSS_SINGLE_SEL
A 32 16 15
B 33 15,15
C 34 15,16
D 34 16 15
分值: 1
答案:A
50.
下面不属于软件工程的3个要素的是( )
SSS_SINGLE_SEL
A 工具
B 过程
C 方法
D 环境
分值: 1
二、填空题
请将每空的正确答案写在【1】~【20】序号的横线上。
1.
结构化程序设计的三种基本逻辑结构为顺序、选择和【1】。
SSS_FILL
分值: 2
答案:重复(或循环)
2.
冒泡排序算法在最好的情况下的元素交换次数为【2】。
SSS_FILL
分值: 2
答案:0
3.
软件结构是以【3】为基础而组成的一种控制层次结构。
SSS_FILL
分值: 2
答案:模块
4.
在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【4】。
SSS_FILL
分值: 2
答案:消息
5.
关系数据库的关系演算语言是以【5】为基础的DML语言。
SSS_FILL
分值: 2
答案:谓词演算
6.
执行以下for语句后,变量i的值是【6】。
for(i=1;i++<=5;);
SSS_FILL
分值: 2
7.
已有定义:int x;,执行以下语句后的辅出结果是【7】。
x=11/3;y=5;
printf("%%d,%%%d\n",x,y);
SSS_FILL
分值: 2
答案:%d,%3
8.
以下程序的输出结果是【8】。
main()
char *p[]="BOOL","OPK","H","SP";
int i;
for(i=3, i>=0; i--,i--)printf("%c",*p[i]);
printf("\n");
SSS_FILL
分值: 2
答案:SO
9.
以下程序的输出结果是【9】。
void fun()
static int a;
a+=2;
printf("%d",A) ;
main()
int cc;
for(cc=1;cc<=4;cc++)fun();
printf("\n");
SSS_FILL
分值: 2
答案:2468
10.
表示条件;10<x<100或x<0的C语言表达式是【10】。
SSS_FILL
分值: 2
答案:(x>10&&x<100)||x<0
11.
设有如下程序段:
int i=0,sum=1;
do
sum+=i++;
while(i<6);
printf("%d\n",sum);
上述程序段的输出结果是【11】。
SSS_FILL
分值: 2
答案:16
12.
以下程序通过函数指针p调用函数fun,请在填空栏内写出定义变量p的语句。
void fun(int x,int * y)
……
main()
int a=10,b=20;
【12】;/*定义变量p*/
p=fun;p(&a,&b) ;
SSS_FILL
分值: 2
答案:void(*p)()或void(*p)(int *,int *)
13.
以下程序输出矩阵中值为。
的元素的行下标和列下标。
行下标和列下标分别放在同一下标的r和c数组元素中。
程序通过调用随机函数给矩阵赋值。
#define N 5
#include <stdlib.h>
main()
int a[N][N],i,j,c[N*N],r[N*N],n;
for(i=0,i<N;i++)
for(j=0;j<N;j++)a[i][j]=rand()%5;
n=gindex( 【13】);
printf("\n\nThe result:\nn=%d\n",n);
for(i=0;i<n;i++)printf("%4d%4d\n",r[i],c[i]);
int gindex(int(*p)[N],int *c,int *r) int i,j,k;
【14】;
for(i=0;i<N,i++)
for(j=0;j<N;j++)
if( 【15】==0)
r[k]=i;c[k]=j; 【16】;return 【17】;
SSS_FILL
分值: 10
答案:[13]a,c,r
[14]k=0
[15]p[i][j]
[16]k++
[17]k
14.
若有如下程序:
main()
int s[]=1,2,3,4,5,6,*p=s;
printf("%d,%d\n",*(p+3),*(p+6)); 则程序运行后的输出结果是【18】。
SSS_FILL
分值: 2
答案:4,不定值
15.
以下程序的输出结果是【19】。
#include<stdio.h>
main()
struct stru
int a;
float b;
char d[4];
;
printf("%d\n",sizeof(struct stru));
SSS_FILL
分值: 2
答案:14
16.
以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度。
请填空。
FILE *myf;long f1;
myf= 【20】("test,t","rb");
fseek(myf,0,SEEK_END) ;f1=ftell(myf);
fclose(myf);
printf("%1d\n",f1);
SSS_FILL
分值: 2
答案:fopen
1。