二级C语言-26
(总分79, 做题时间90分钟)
一、选择题
1.
若有如下说明,则_______的叙述是正确的。
struct st
{ int a;
int b[2];
}a;
struct st
{ int a;
int b[2];
}a;
∙A. 结构体变量a与结构体成员a同名,定义是非法的
∙B. 程序只在执行到该定义时才为结构体st分配存储单元
∙C. 程序运行时为结构体st分配6个字节存储单元
∙D. 类型名struct st可以通过extern关键字提前引用(即引用在前,说明在后)
A B C D
分值: 1
答案:D
[解析] 结构体变量a与结构体成员a同名是合法的定义,引用成员a的方法是aa,变量a处于不同的“层次”上,系统完全能够分情。st是一个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量a分配6个字节的存储单元,故选项B和选项C错误。
2.
下列有关数据库的描述,正确的是
∙A. 数据库是一个DBF文件
∙B. 数据库是一个关系
∙C. 数据库是一个结构化的数据集合
∙D. 数据库是一组文件
A B C D
分值: 1
答案:C
[解析] 数据库(Database,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。数据库中的数据具有“集成”、“共享”之特点。
3.
若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为
∙A. a<>0
∙B. !a
∙C. a=0
∙D. a
A B C D
分值: 1
答案:D
4.
下列能正确定义一维数组的选项是 。
∙A. int a[5]={0,1,2,3,4,5};
∙B. char a[]={0,1,2,3,4,5};
∙C. char a={'A','B','C'};
∙D. int a[5]="0123";
A B C D
分值: 2
答案:B
[解析] 在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项A)错误;选项 C中定义的是一个字符变量C;选项D)中整型数组a中只能存储整型数据,而不能存储字符串常量“0123”。
5.
函数rewind的作用是
∙A. 使文件位置指针重新返回文件的开始位置
∙B. 将文件位置指针指向文件中所要求的特定位置
∙C. 使文件位置指针指向文件的末尾
∙D. 使文件位置指针自动移至下一个字符位置
A B C D
分值: 1
答案:A
[解析] 函数rewind的功能是将文件指针重新指向一个流的开头。用法如下:
int rewind(FILE * stream);并且无返值。
6.
下述程序的输出结果是
#include<stdio.h>
void main()
{ int a[5]={2,4,6,8,10};
int*p=a,**q=&p;
printf("%d,",*(p++));
pfintf("%d",**q);}
#include<stdio.h>
void main()
{ int a[5]={2,4,6,8,10};
int*p=a,**q=&p;
printf("%d,",*(p++));
pfintf("%d",**q);}
∙A. 4,4
∙B. 2,2
∙C. 4,5
∙D. 2,4
A B C D
分值: 2
答案:D
[解析] 考查一维数组的指针和指向指针的指针两个知识点。
[解题要点] 通过赋值,指针p和q都指向了数组a的首地址,*(p++)先引用数组元素,然后p++,所以输出结果为2,**q指向的数组元素为4。
[考点链接] 通过建立一个指针数组来引用二维数组元素。
7.
若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
∙A. EOF
∙B. -1
∙C. 1
∙D. NULL
A B C D
分值: 2
答案:C
[解析] EOF是文本文件的文件结束标志,NULL是打开文件错误的时候返回值。foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。如果遇到文件结束就返回1,否则返回0。
8.
有以下程序:
#include<stdio.h>
main()
{ char c1, c2, c3, c4, c5, c6;
scanf("%c% c% c%c", &c1, &c2, &c3, &c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf("%c% c\n", c5, c6);
}
程序运行后,若从键盘输入(从第1列开始):
123<回车>
45678<回车>
则输出结果是
#include<stdio.h>
main()
{ char c1, c2, c3, c4, c5, c6;
scanf("%c% c% c%c", &c1, &c2, &c3, &c4);
c5=getchar(); c6=getchar();
putchar(c1); putchar(c2);
printf("%c% c\n", c5, c6);
}
程序运行后,若从键盘输入(从第1列开始):
123<回车>
45678<回车>
则输出结果是
∙A. 1267
∙B. 1256
∙C. 1278
∙D. 1245
A B C D
分值: 2
答案:D
[解析] putchar(c1)输出1,putchar(c2)输出2,printf("%c% c\n", c5, c6)输出45。
9.
以下程序的输出结果是 。
#include<stdio.h>
int a[3][3]={1,2,3,4,5,6,7,8,9},*p;
#include<stdio.h>
int a[3][3]={1,2,3,4,5,6,7,8,9},*p;
main()
{ p=(int*)malloc(sizeof(int));
f(p,a);
printf("% d\n",*p);
free(p);c语言return的用法和搭配
}
f(int *s,int p[][3])
*s=p[1][1];)
{ p=(int*)malloc(sizeof(int));
f(p,a);
printf("% d\n",*p);
free(p);c语言return的用法和搭配
}
f(int *s,int p[][3])
*s=p[1][1];)
∙A. 1
∙B. 4
∙C. 7
∙D. 5
A B C D
分值: 2
答案:D
[解析] 本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,p[1][1]为二维数组第二行第二列的元素,对应于实参a的元素5,所以输出结果为5。
10.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论