第1题
下列叙述中正确的是( )。
所谓算法就是计算方法
程序可以作为算法的一种描述方法
算法设计只需考虑得到计算结果
算法设计可以忽略算法的运算时间
第2题
程序流程图中带有箭头的线段表示的是( )。
图元关系
数据流
控制流
调用关系
第3题
深度为5的完全二叉树的结点数不可能是( )。
15
16
17
18
第4题
下列选项中不属于结构化程序设计原则的是( )。
可封装
自顶向下
模块化
逐步求精
第5题
下列关于栈的叙述正确的是( )。
栈按“先进先出”组织数据
栈按“先进后出”组织数据
只能在栈底插入数据
不能删除数据
第6题
下面描述不属于软件特点的是( )。
软件是一种逻辑实体,具有抽象性
软件在使用中不存在磨损、老化问题
软件复杂性高
软件使用不涉及知识产权
第7题
构成计算机软件的是( )。
源代码
程序和数据
程序和文档
程序、数据及相关文档
第8题
按照C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。
大写字母
连接符
数字字符
下划线
第9题
设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为( )。
课号,成绩
学号,成绩
学号,课号
学号,姓名,成绩
第10题
第11题
以下叙述中正确的是( )。
不同函数的形式参数不能使用相同名称的标识符
用户自己定义的函数只能调用库函数
实用的C语言源程序总是由一个或多个函数组成
在C语言的函数内部,可以定义局部嵌套函数
第12题
以下叙述中错误的是( )。
C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件
用C语言编写的程序称为源程序,它以ASCI代码形式存放在一个文本文件中
C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令
C语言源程序经编译后生成后缀为.obj的目标程序
第13题
设有两行定义语句:
int
scanf
;
float
case
则以下叙述正确的是()。
两行定义语句都不合法
两行定义语句都合法
第1行语句不合法
第2行语句不合法
第14题
以下能正确表述算式 sin(2nr+30°)的C语言表达式是( )。
sin(2*n*r+30)
sin(2*3.14*r+30)
sin(2*3.14*r+3.14*30/180.0)
sin(2*3.14*r+30*3.14/360.0)
第15题
若有定义:
a,b,c;
以下选项中的赋值语句正确的是()。
a=(b=c)+1;
(a=b)=c=1;
a=(b==c)=1;
a+b=c;
第16题
有以下程序
#include <stdio.h>
main()
{
printf
(
"%d\n"
, NULL);
}
程序运行后的输出结果是( )。
1
变量无定义,输出不确定
-1
0
第17题
设有定义:double x=2.12;,以下不能完整输出变量x值的语句是( )。
printf("x=%5.0f\n",x);
printf("x=%f\n",x);
printf("x=%If\n",x);
printf("x=%0.5f\n",x);
第18题
若有定义:char c;int d; 程序运行时输入:c=1,d=2<回车>,能把字符1输入给变量c、整数2输入给变量d的输入语句是( )。
scanf("c=%c,d=%d", &c,&d);
scanf("c=%c d=%d", &c,&d);
scanf("c=%d,d=%d", &c,&d);
scanf("c=%d d=%d", &c,&d);
第19题
若有定义:int x,y;并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是( )。
(x-y==0)
(x-y<0)
(x-y>0)
(x-y<0ǁx-y>0)
第20题
char
a =
'H'
a = (a>=
'A'
&& a<=
'Z'
) ? (a+32):a;
"%c\n"
,a);
h
H
A
a
第21题
负责数据库中查询操作的数据库语言是( )。
数据定义语言
数据管理语言
数据操纵语言
数据控制语言
第22题
以下程序段中的变量已正确定义
for
( i=0; i<4; i++,i++ )
( k=1; k<3; k++ );
"*"
);
该程序段的输出结果是( )。
********
****
**
*
第23题
在一个C源程序文件中所定义的全局变量,其作用域为( )。
由具体定义位置和extern说明来决定范围
所在程序的全部范围
所在函数的全部范围
所在文件的全部范围
第24题
用typedef定义新的类型名后,原有类型名仍有效
可以用typedef将已存在的类型用一个新的名字来代表
可以通过typedef增加新的类型
用typede可以为各种类型起别名,但不能为变量起别名
第25题
数组说明符的一对方括号中只能使用整型常量,而不能使用表达 式
一条语句只能定义一个数组
每个数组包含一组具有同一类型的变量,这些变量在内存中占有 连续的存储单元
在引用数组元素时,下标表达式可以使用浮点数
第26题
char c1, c2, *c3, c4[40];是合法的变量定义语句
数组下标的下限由数组中第一个非零元素的位置决定
数组下标的下限由数组中第一个被赋值元素的位置决定
数组下标的下限是1
第27题
以下语句中存在语法错误的是( )。
char ss[6][20];ss[1]="right?";
char ss[][20]={"right?"};
char *ss[6];ss[1]="right?";
char *ss[]={"right?"};
第28题
f(
x,
y)
return
((y-x)*x);
void
a=3, b=4,c=5,d;
d=f(f(a,b),f(a,c));
,d);
9
10
8
7
第29题
函数调用时,不必区分函数名称的大小写
调用函数时,函数名必须与被调用的函数名完全一致
函数名允许用数字开头
在函数体中只能出现一次return语句
第30题
C语言中的文件是流式文件,因此只能顺序存取数据
打开一个已存在的文件并进行了写操作后,原有文件中的全部数 据必定被覆盖
在一个程序中当对文件进行了写操作后,必须先关闭该文件然后 再打开,才能读到第1个数据
当对文件的读(写)操作完成之后,必须将它关闭,否则可能导 致数据丢失
第31题
m1(
x<=y ? x :y;
m2(
x<=y ? y :x;
fun(
a,
b)
a+b;
x=2,y=3,z=1;
, fun(m1(x,y),m2(y,z)));
程序的运行结果是( )。
5
6
4
3
第32题
语句p=NULL;执行后,指针p指向地址为0的存储单元
指针变量只能通过求地址运算符(&)来获得地址值
语句p=NULL;与p=\0;是等价的语句
int* p1; int ** p2; int *p3;都是合法的定义指针变量的语句
第33题
如果企图通过一个空指针来访问一个存储单元,将会得到一个出错信息
即使不进行强制类型转换,在进行指针赋值运算时,指针变量的基类型也可以不同
设变量p是一个指针变量,则语句p=0;是非法的,应该使用p=NULL;
指针变量之间不能用关系运算符进行比较
第34题
在对指针进行加、减算术运算时,数字1表示1个存储单元的长度
如果p是指针变量,则*p表示变量p的地址值
如果p是指针变量,则&p是不合法的表达式
如果p是指针变量,则*p+1和*(p+1)的效果是一样的
第35题
#include <stdlib.h>
**s,
x[2][3])
**s =*(x[1]+1);
a[2][3]={1,2,3,4,5,6},*p;
p = (
*)
malloc
sizeof
));
fun(&p,a);
,*p);
2
第36题
若要使用C数学库中的sin函数,需要在源程序的头部加上#include <math.h>关于引用数学库,以下叙述正确的是( )。
将数学库中sin函数的源程序插入到引用处,以便进行编译链接
将数学库中sin函数链接到编译生成的可执行文件中,以便能正确运行
通过引用math.h文件,说明sin函数的参数个数和类型,以及函数返回值类型
实际上,不引用math.h文件也能正确调用sin函数
第37题
在C语言中,预处理命令行都以“#”开头
预处理命令行必须位于C源程序的起始位置
#include<stdio.h>必须放在C程序的开头
C语言的预处理不能实现宏定义和条件编译的功能
第38题
下面结构体的定义语句中,错误的是( )。
struct ord {int x;int y;int z;} struct ord a;
struct ord {int x;int y;int z;};struct ord a;
struct ord {int x;int y;int z;} a;
struct {int x;int y;int z;}a;
第39题
typedef
struct
b, p;} A;
f(A c)
j;
c.b+=1;
c.p+=2;
i;
A a={1,2};
f(a);
"%d,%d\n"
, a.b, a.p);
2,4
1,2
1,4
2,3
第40题
unsigned
a=8, c;
c = a>>3;
,c);
32
第41题
给定程序中,函数fun的功能是:找出100至x(x≤999)之间各位上的数字之和为15的所有整数,然后输出;符合条件的整数个数作为函数值返回。例如,当n值为500时,各位数字之和为15的整数有:159、168、177、186、195、249、258、267、276、285、294、339、348、357、366、375、384、393、429、438、447、456、465、474、483、492。共有26个。请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。注意:
源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!
/**********code.c**********/
x)
n, s1, s2, s3, t;
/**********found**********/
n=①______;
t=100;
while
(t<=②______)
s1=t%10;
s2=(t/10)%10;
s3=t/100;
if
(s1+s2+s3==15)
"%d "
,t);
n++;
③______;
n;
x=-1;
(x>999||x<0)
"Please input(0<x<=999): "
"%d"
,&x);
"\nThe result is: %d\n"
,fun(x));
/**********-code.c**********/
x
t++
第42题
给定程序MODI1.C中函数fun的功能:先将s所指字符串中的字符按逆序存放到t所指字符中,然后把s所指串中的字符按正序连接到t所指串的后面。例如:当s所指的字符串为:"ABCDE"时,则t所指的字符串应为:"EDCBAABCDE"。请改正程序中的错误,使它能得出正确的结果。注意:
不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include<stdio.h>
#include<string.h>
fun (
*s,
*t)
i=0;
sl =
strlen
(s);
(; i<sl; i++)
t[i] = s[sl-i];
(i=0; i<sl; i++)
t[sl+i] = s[i];
t[2*sl] =
'\0'
s[100],t[100];
"\nPlease enter string s:"
"%s"
, s);
fun(s,t);
"The result is: %s\n"
, t);
错误:int i; 正确:int i, sl;
错误:t[i] = s[sl-i]; 正确:t[i]=s[sl-i-1];
第43题
函数fun功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。例如,当a=45,b=12。调用该函数后,c=4251。注意,部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。请勿改动主函数main和其它函数中的任何内容,仅在函数fun花括号中填入你编写的若干语句。
b,
long
*c)
a,b;
c;
"Input a b:"
"%d%d"
, &a, &b);
fun(a, b, &c);
"The result is: %ld\n"
, c);
参考答案:
*c=a%10+(b%10)*10+(a/10)*100+(b/10)*1000;
一、选择题(1 - 40题,共计40分) 二、填空题(41 - 43题,共计60分)