电大程序设计基础复习题.docx
《电大程序设计基础复习题.docx》由会员分享,可在线阅读,更多相关《电大程序设计基础复习题.docx(15页珍藏版)》请在冰豆网上搜索。
电大程序设计基础复习题
《程序设计基础》题库
一、填空题
1.总线通常由3部分组成:
(数据)总线、(地址)总线和控制总线。
2.(流程图)算法描述方法是用规定式样的几何图形、流程线及文字说明组合起来表示算法的框图。
3.在数据结构的指定位置上添加一个新结点称为(插入)运算操作。
4.while语句与do-while语句的区别是(while中的循环体可能一次也不执行,而do-while中的循环体至少执行一次)。
5.采用链式存储的有序数据要进行查找,可以采用(顺序查找)。
6.队列的最主要特点是(先进先出)。
7.(过程式)语言是通过知名一系列可执行的运算及运算的次序来描述计算过程的语言。
8.软件系统按其功能可分为(系统)软件和(应用)软件两大部分。
9.冯·诺依曼型计算机的两大特征是(程序存储)和(采用二进制)。
10.计算机语言有三种类型:
(机器)语言、(汇编)语言和(高级)语言。
11.(过程式)语言,也叫命令式语言或强制式语言。
12.(过程式)语言是通过知名一系列可执行的运算及运算的次序来描述计算过程的语言。
13.微机中常用的高级语言主要有三类:
面向(过程)的程序设计语言、数据库语言和面向(对象)的程序设计语言。
14.高级语言程序翻译成机器语言程序一般有两种方法:
(编译)方式和解释方式。
15.我们用(时间复杂度)和(空间复杂度)来度量算法的运行效率。
二、选择题
1.以下各标识符组中,合法的用户标识符是(?
)。
C
A.3A3?
B.KEY%?
C._ABC?
D.char
1.以下哪种类型语言的表达方式更接近人类自然语言()C
A.汇编语言
B.机器语言
C.高级语言
D.低级语言
2.以下哪个系统是为了运行、管理、维护和使用计算机而编写的各种程序(包括文档)的总和。
()B
A.硬件系统
B.软件系统
C.总线系统
D.操作系统
3.C语言中,取地址采用运算符()C
A.&&
B.||
C.&
D.!
4.如果i的初值为3,则k=(++i)+(++i);结果k的值为()D
A.6
B.8
C.7
D.10
5.下面结论中()是错误的。
B
A.二叉树是树
B.二叉树的左右子树的位置可以颠倒
C.可以使用二叉树的思想对数值进行排序
D.可以采用链表方式存储二叉树
6.计算机发展的分代史中通常划分时代的标准是以计算机所采用的_____。
A
A逻辑元件B程序设计语言C操作系统发展D硬件运算速度
7.世界上第一台电子数字计算机研制成功的时间是______。
B
A1936年B1946年C1956年D1970年
8.CASE的含义是______。
D
A计算机辅助设计B计算机辅助制造
C计算机辅助教学D计算机辅助软件工程
器
9.硬盘是______。
C
A输入设备B输出设备C存储设备D计算设备
10.系统软件的核心软件是______。
A
A操作系统B编译程序C汇编程序D机器语言
11.下面4句话中,最准确的表述是______。
A
A程序=算法+数据结构B程序是使用编程语言实现算法
C程序的开发方法决定算法设计D算法是程序设计中最关键的因素
12.程序设计要遵循一定的开发方法及思想,以下有一个不是程序设计过程中应该遵循的开发方法,它是______。
D
A结构化设计方法B模块化程序设计方法
C面向对象的程序设计方法D数据结构优先原则
13.计算机能直接执行的语言是______。
A
A机器语言B汇编语言C高级语言D目标语言
14.世界上第一个高级语言是______。
C
ABASIC语言BC语言CFORTRAN语言DPASCAL语言
15.下面4种程序设计语言中,不是面向过程式语言的是______。
D
AFORTRANBALGOLCAdaDC++
16.下面4种程序设计语言中,不是面向对象式语言的是______。
D
AJAVABObjectPascalCDelphiDC
17.栈的最主要特点是______。
B
A先进先出B先进后出C两端进出D一端进一端出
18.队列的最主要特点是______。
A
A先进先出B先进后出C两端进出D一端进一端出
19.下面4句结论中只有一句是错误的,它是_____。
B
A二叉树是树
B二叉树的左右子树的位置可以颠倒
C可以使用二叉树的思想对数值进行排序
D可以采用链表方式存储二叉树
20.采用链式存储的有序数据要进行查找,可以采用______。
A
A顺序查找B折半查找C顺序索引查找D顺序或折半查找
21.螺旋模型中包括需求定义、风险分析、工程实现和评审四个阶段,在开发过程中______。
A
A每个周期都要包括这四个阶段B每个周期可以包括不同的阶段
C在最后交付使用之前才进行评审D开项目开始时才需要进行风险分析
22.关于计算机程序的错误说法是______。
B
A程序是按照工作步骤事先编排好的、具有特殊功能的指令序列
B运行在硬件系统之上的软件应该采用高级语言编写
C在现代的计算机系统中程序采用二进制形式存储
D同一计算机系统可以完成不同的功能是因为执行了不同的程序
23.程序设计过程中的三要素是______。
A
A算法、数据结构和程序设计方法学B数据、算法和数据结构
C输入、操作处理和输出D数据、数据结构和处理
24.JAVA语言的类别是______。
C
A面向过程的程序设计语言B面向问题的程序设计语言
C面向对象的程序设计语言D面向硬件的程序设计语言
25.在C语言中,字符串常量的定界符是______。
C
A空格B单引号C双引号D方括号
26.C语言中int变量能够表示的数值范围是______。
B
A-32767~32768B-32768~32767C0~65535D0~65536
27.C语言中的循环控制语句中属于“直到型”循环的语句是______。
D
AgotoBwhileCforDdo-while
28.数据的存储结构分为两种,它们是______。
B
A线性存储和数组存储B顺序存储和链式存储
C线性存储和树型存储D数组存储和指针存储
29.如果在内存中采用链式保存线性表,则元素之间的逻辑关系通过______。
B
A元素在内存中的相对位置表示逻辑次序
B保存在元素中的指针表示先后次序
C设立单独的区域存储元素之间的逻辑次序
D元素本身的关键字来表示逻辑次序
30.栈的逻辑结构是______。
B
A集合B线性结构C树型结构D图型结构
31.若按照一定的顺序依次访问树中的每一个结点,而且每个结点只被访问一次,则称这样的操作为______。
C
A排序B查找C遍历D建立
32.进行顺序查找的条件是______。
D
A数据有序且采用顺序存储方式B数据不需要有序,但需要顺序存储
C数据有序且采用链式存储方式D数据不需要有序,也不限制存储方式
33.早期进行程序开发过程中存在不少问题,在下列问题中有一个并不是早期程序员常见的问题,它是______。
D
A程序员过分依赖技巧与天分,不太注重所编写程序的结构
B程序中的控制随意跳转,不加限制地使用goto语句
C无固定程序设计方法
D对问题的抽象层次不够深入
34.如果在进行单元测试的时候发现错误,则针对该被发现的错误,可以判断在整个软件开发过程最可能出现错误的阶段是______。
C
A需求分析B概要设计C详细设计D单元测试
三、问答题
1.下图是一种什么类型的数据结构?
A结点度为多少?
E结点的度为多少?
根结点是哪个结点?
F结点的兄弟结点和双亲结点分别是哪些结点?
一般的树,3,0,A,E,B
2.用流程图描述求3个正整数中最大值的算法
3.简述计算机程序设计语言的分类和各类的特点。
一般分为三类:
机器语言(也称机器指令集),汇编语言和高级语言。
机器语言是每台计算机出厂时,厂家都为它配备一套机器语言,不同的计算机,其机器语言通常是不同的。
由于机器语言是面向具体机器的,所以其程序缺乏通用性,编写程序的过程繁琐复杂,易出错,错了又不易查找和修改,编出的程序可读性极差。
汇编语言是机器语言的符号化形式。
用汇编语言编写的程序(又称源程序)经汇编器加工处理后,就转换成可由计算机直接执行的目标程序。
汇编语言提高了程序设计效率和计算机利用率。
汇编语言仍属面向机器的一种低级语言,其程序的通用性和可读性较差。
高级程序设计语言是指通用性好,不必对计算机的指令系统有深入的了解就可以编写程序。
采用高级语言编写的程序在不同型号的计算机上只需做某些微小的改动便可运行,只要采用这些计算机上的编译程序重新编译即可。
高级语言具有通用性,与具体的机器无关
4.请写出下面二叉树的先根遍历、中根遍历和后根遍历序列。
5.请分别写出下面二叉树的先根遍历、中根遍历和后根遍历
四、完善程序
1.用递归方法求1到10的阶乘
#include
longfactorial(intn)
{longresult;
if(n==0)
result=1;
else
result=;
returnresult;
}
voidmain()
{intj;
for(j=0;j<10;j++)
printf(“%d”,);
}
n*factorial(n-1),factorial(j+1)
2.输入一个整数,计算并显示其绝对值
#include
voidmain()
{intx;
printf(“Input:
”);
scanf(“%d”,);
=(x>0?
;-x);
printf(“Theabsofxis:
%d”,x);
}
&x,x,x
3.输入三个整数,然后按由小到大的次序输出
#include
Voidmain()
{inta,b,c,temp;
printf("pleaseinput:
");
scanf("%d,%d,%d",&a,&b,&c);
if(a>b)
{temp=a;
a=b;
b=temp;
}
if(b>c)
{temp=b;
b=;
c=temp;
}
if()
{temp=a;
a=b;
b=temp;
}
printf("result:
%d,%d,%d",);
}
}
c,a>b,a,b,c
4.以下程序可以实现从键盘输入一串数字(要求输入的数要在长整型数值范围之内),然后以相反的顺序将它们输出,例如,输入12345,输出54321,请填空。
voidmain()
{
?
?
?
?
longintnum,n;
?
?
?
?
printf("请输入数字\n");
?
?
?
?
scanf("%d",&num);
?
?
?
?
do
?
?
?
?
{
?
?
?
?
?
?
?
?
?
n=________;
?
?
?
?
?
?
?
?
?
printf("%d",n);
?
?
?
?
?
?
?
?
?
num=________;
?
?
?
?
}while(num!
=0);
}
num%10num/10
a)阅读程序,写出运行结果
1.以下程序的输出结果是__________。
voidmain()
{
?
?
?
?
intx=17,y=26;
?
?
?
?
printf("%d\n",y/=(x%6));
}
5
2.以下程序的输出结果是?
。
voidmain()
{
?
?
?
?
intx=0,y=5,z=5;
?
?
?
?
if(x=y-z)
?
?
?
?
?
?
?
?
?
printf("0000");
?
?
?
?
else
?
?
?
?
?
?
?
?
?
printf("1111");
}
1111
3.定义:
intx=2,y=3;则下面表达式的值及运算后变量x、y和z的值是多少?
(x++)*(--y)
表达式的值为:
4
x=3
y=2
4.定义:
intx=2,y=3;则下面表达式的值及运算后变量x、y和z的值是多少?
(++x)*(--y)
表达式的值为:
6
x=3
y=2
五、改错
1.下列程序的功能是实现1+2+3+……+10。
请改正错误(不能增减语句)。
voidmain()
{
?
?
?
?
inti,s;
?
?
?
?
for(i=1,i<=10);
?
?
?
?
{
?
?
?
?
?
?
?
?
?
s+=i;
?
?
?
?
?
?
?
?
?
i+1;
?
?
?
?
}
?
?
?
?
printf("s=%d\n",s);
}
改:
voidmain()
{
?
?
?
?
inti,s=0;
?
?
?
?
for(i=1;i<=10;)
?
?
?
?
{
?
?
?
?
?
?
?
?
?
s+=i;
?
?
?
?
?
?
?
?
?
i++;
?
?
?
?
}
?
?
?
?
printf("s=%d\n",s);
}
2.请修改found提示下的一行代码(其他行不能动),使程序没有语法错误。
voidmain()
{
?
?
?
?
/************found****************/
?
?
?
?
intc,d;
?
?
?
?
scanf("%d,%d",c,d);
?
?
?
?
e=c+d;
?
?
?
?
printf("%d",e);
}
改:
voidmain()
{
?
?
?
?
/************found****************/
?
?
?
?
intc,d,e;
?
?
?
?
scanf("%d,%d",&c,&d);
?
?
?
?
e=c+d;
?
?
?
?
printf("%d",e);
}
3.请修改found提示下的一行代码(其他行不能动),使程序没有语法错误。
voidmain()
{
?
?
?
?
inta=1,b=5;
?
?
?
?
/************found**************/
?
?
?
?
IFa
?
?
?
?
?
?
?
?
?
b=a+1;
?
?
?
?
else
?
?
?
?
?
?
?
?
?
b=1;
?
?
?
?
printf("%d,%d\n",a,b);
}
改:
voidmain()
{
?
?
?
?
inta=1,b=5;
?
?
?
?
/************found**************/
?
?
?
?
if(a
?
?
?
?
?
?
?
?
?
b=a+1;
?
?
?
?
else
?
?
?
?
?
?
?
?
?
b=1;
?
?
?
?
printf("%d,%d\n",a,b);
}
六、编写程序
1.从键盘输入三个不相等的数A、B、C,把它们按由大至小的顺序排列出来。
voidmain()
{
?
?
?
?
floata,b,c,m;
?
?
?
?
scanf("%f%f%f",&a,&b,&c);
?
?
?
?
if(a
?
?
?
?
{m=a;a=b;b=m;}
?
?
?
?
if(a?
?
?
?
{m=a;a=c;c=m;}
?
?
?
?
if(b?
?
?
?
{m=b;b=c;c=m;}
?
?
?
?
printf("%f>%f>%f",a,b,c);
}
2.将一个数组的元素首尾倒置(本题15分)
#include
voidmain()
{
floata[10];
intk,m;
printf(“\nInputarray:
”);
for(k=0;k<10;k++)
scanf(“%f”,&a[k]);
for(k=0,m=9;k{
floattemp=a[k];
a[k]=a[m];
a[m]=temp;
}
for(k=0;k<10;k++)
printf(“%f,”,a[k]);
}
3.一辆卡车违犯交通规则,撞人后逃跑。
现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。
甲说:
牌照的前两位数字是相同的;乙说:
牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:
四位的车号刚好是一个整数的平方。
请根据以上线索求出车号。
#include”stdio.h"
main()
{inti,j,k,m;
for(i=1;i<=9;i++)/*i:
车号前二位的取值*/
for(j=0;j<=9;j++)/*j:
车号后二位的取值*/
if(i!
=j){/*判断两位数字是否相异*/
k=i*1100+j*11;
for(m=31;m*m/*判断是否为整数的平方*/
if(m*m==k)
printf("No.is%d.\n",k);
}
}
4.从键盘输入h值,输出h行用@号组成等腰三角形。
例:
输入h=4,输出的图形如下:
@
@@@
@@@@@
@@@@@@@
#include
main()
{inth,k,j;
scanf(”%d”,&h);
for(k=1;k<=h;k++)/*控制打印h行*/
{for(j=1;j<=h-k;j++)/*打印空格*/
printf(””);
for(j=1;j<=2*k-1;j++)/*打印*号*/
printf(”@”);
printf(”\n”);
}
}
5.从键盘输入h值,输出h行用#号组成等腰三角形。
例:
输入h=4,输出的图形如下:
#
###
#####
#######
#include
main()
{inth,k,j;
scanf(”%d”,&h);
for(k=1;k<=h;k++)/*控制打印h行*/
{for(j=1;j<=h-k;j++)/*打印空格*/
printf(””);
for(j=1;j<=2*k-1;j++)/*打印*号*/
printf(”#”);
printf(”\n”);
}
}
6.请编程序打印出一张乘法“九九表”。
表的样式如下:
123456789
24681012141618
369121518212427
4812162024283236
51015202530354045
61218243036424854
main()
{inti,j;
for(i=1;i<10;i++)
{for(j=1;j<10;j++)printf("%4d",i*j);
printf("\n");
}