二级C语言选择题专项强化真题试卷23
选择题
1.若有以下定义:
int x[10],*pt=x;
则对x数组元素的正确引用是( )。(B)
A. *&x[10]
B. *(x+3)
C. *(pt+10)
D. pt+3
解析:数组的下标是从O开始的,故x[10]实际上具体为x[0],x[1],…,x[9],而若使用x[10]就会溢出,编译出错。所以AC两项错误;D项是指向地址的,并未引用到元素;B项的表达正确,代表x[3]中的元素。
2.若函数中有定义语句:int k;则( )。(B)
A. 系统将自动给k赋初值0
B. 这时k中的值无定义
C. 系统将自动给k赋初值—1
D. 这时k中无任何值
解析:int k;这条语句是定义一个整型变量k,是动态定义,所以k中的值无定义。如果采用静态定义,则会自动初始化变量为默认值1。
3.以下叙述中正确的是( )。(A)
A. 在scanf函数中的格式控制字符串是为了输入数据用的,不会输出到屏幕上
B. 在使用scanf函数输入整数或实数时,输入数据之间只能用空格来分隔
C. 在printf函数中,各个输出项只能是变量
D. 使用printf函数无法输出百分号%
解析:scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,所以A选项正确。scanf()的格式控制串可以使用其他非空自字符,如逗号,但在输入时必须输入这些字符以保证匹配,所以B选项错误。printf函数可以输出常量,也可以输出变量,所以C选项错误。printf函数可以通过printf(“%%”)来输出百分号%,所以D选项错误。
4.有以下程序:
#include<stdio.h>
typedef struct{int b,p;}A;
void f(A c)/*注意:c是结构变量名*/
{ int j;
c.b+=1;c.p+=2;
}
main()
{
int i;
A a={1,2};f(a);
printf(\\(B)
A. 2 4
B. 1 2
C. 1 4
D. 2 3
解析:考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为12,答案选B。
5.以下叙述中正确的是( )。(D)
A. 只能在函数体内定义变量,其他地方不允许定义变量
B. 常量的类型不能从字面形式上区分,需要根据类型名来决定
C. 预定义的标识符是C语言关键字的一种,不能另作它用
D. 整型常量和实型常量都是数值型常量
解析:变量可以定义在函数体外,也可以定义在函数体内,所以A错误。常量的类型可以从字面形式上区分,比如1为整型常量,1.0为实型常量,a为字符型常量,所以B错误。预定义的标识符不是C语言的关键字,所以C错误。故D选项正确。
6.有以下程序:
#include
#include..
main()
{ int i,len;
char b[]=\\(A)
A. Beijing!
B. toBeijing!
C. Welcomeyout0Beijing!
D. youtoBeijing!
解析:for循环的作用是每次遇到空格,将空格后面的字符移动到数组的最前面。因此数组最后的状态是“Beijing!\0g!\0ng!\0eijing!\0”,但是printf(“%s”)打印时遇到\0自动结束。因此,打印结果为Beijing!。故答案为A选项。
7.有以下程序:
#include
main()
{char s[10]=\\(A)
A. too
B. verygood
C. very
D. good
解析:程序中定义指针ps后,将数组s首地址赋给ps初始化后,再使指针ps指向字符串“too”的首地址,修改s[4](即字符g)不会改变ps的值,所以输出ps的结果是“too”,答案为选项A。
8.下列叙述中正确的是( )。(D)
A. 算法就是程序
B. 设计算法时只需要考虑数据结构的设计
C. 设计算法时只需要考虑结果的可靠性
D. 以上三种说法都不对
解析:算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。
9.有以下程序
#include
main()
{
char ch=’B’:
while(ch<’E’)
{
printf(\\(A)
A. 123
B. ABC
C. abc
D. 012
解析:当满足ch<’E’,输出ch-’A’,即字符在ASCII码相减进行输出,%d表示输出十进制整数。循环开始ch=’B’,print(“%d”,ch-’A’)=1,以此类推答案为A选项。
10.下列选项中,能正确定义数组的语句是( )。(D)
A. intnum[0..2008];
B. int num[];
C. int N=2008;
int hum[N];
D. #define N2008
int num[N];
解析:C语言不允许定义动态数组,定义数组的大小必须为常量表达式。A选项错误,C语言中数组没有此类型的定义方法;B选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C选项错误,N为变量,不能用来定义数组大小。因此D选项正确。
11.以下叙述中正确的是( )。(B)
A. 计算机能直接运行未经编译的C语言程序
B. 循环结构、选择结构、顺序结构是结构化程序的三种基本结构
C. 复杂算法不能使用N-S流程图来描述
D. 计算机能够直接处理不超过20行源码的简单C语言程序
解析:任何C语言程序,无论简单或复杂,都必须经过编译、链接生成可执行文件才能由计算机运行,选项A、D错误;结构化程序的三种基本结构是顺序结构、选择结构和循环结构,选项B正确;N-S流程图是描述算法的很好的工具,复杂的算法也是可以描述的,选项C错误;本题答案为B。
12.学生关系模式中有D(D#,Dn,Dl,DAddr)(其属性分别为系编号、系名称、系主任和系地址)和S(S#,Sn,SG,Date,Mai,D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号)两个关系,关系S的主键(码)是S#,关系S的外键(码)是( )。(A)
A. D#
B. Maj
C. Dl
D. Dn
解析:在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。表A中的某属性集是某表B的键,则称该属性集为A的外键或外码。故本题答案为A选项。
13.将E-R图
本文档预览:3600字符,共8609字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载