程序设计基础试题一及答案
程序设计基础试题一及答案
一、填空题(每空1分,共10分)
(1)__________语言是计算机唯一能够识别并直接执行的语言。
(2)算法的复杂度包含两方面:和。
(3)__ 函数是C语言程序启动时惟一的入口。
(4)逗号表达式(a=3*4,a*5),则a的值为。
(5)数据的存储结构有两种:一种是顺序存储结构,另一种是______________。
(6)图的遍历有两种:_________________和广度优先搜索。
(7)对栈中元素的操作是按照“______________”的原则进行的。
(8)从是否关心软件内部结构和具体实现的角度,把软件测试分为__________________和_______________两类。
二、单选题(每题1分,共30分)
(1)世界上第一台电子计算机的英文名字为()。
A) EDVAC B)EDSAC C)ENIAC D) UNIVAC
(2)计算机的软件系统可分为()。
A)程序和数据 B)操作系统和语言处理系统
C)程序、数据和文档 D)系统软件和应用软件
(3)与十进制数100等值的二进制数是()。
A)0010011 B)1100010 C)1100100 D)1100110
(4)一个算法除了能对合法的输入数据得到正确的结果外,还应对非法的或者不合乎要求的输入数据作出正确合理的处理,这体现了算法的()。
A)正确性 B)健壮性 C)可读性 D)高效率
(5)程序设计应该遵守()的设计原则。
A) 自顶向下,逐步细化B) 自底向上,逐步细化
C) 自底向上,同步扩展D) 自顶向下,同步扩展
(6)下列关于注释的说法哪个是错误的()。
A)注释不是程序中的可执行语句
B)注释对于程序的执行有很重要的意义
C)注释将在程序的编译阶段被编译器剔除
D)编程时在程序中添加适当的注释是一个良好的编程风格
(7)下面四个选项中,不合法的用户标识符是()。
A)sum B)stu_name C)a>b D)_total
(8)设c是字符变量,以下语句中错误的是()。
A) c=’Y’; B) c=’\ \’; C) c=’Yes’; D) c =’\x23’
(9)判断char型变量ch是否为大写字母的正确表达式为()。
A) ‘A’<=ch<=’Z’ B) ‘a’<=ch<=’z’
C) (ch>=’A’)||(ch<=’Z’) D) (ch>=’A’)&&(ch<=’Z’)
(10)执行以下语句后b的值为()。
int a = 5 , b = 6 , w = 1 , x =2 , y = 3 , z = 4 ;
( a = w > x ) && ( b = y > z ) ;
A)6 B)0 C)1 D)4
(11)以下能正确地定义整型变量a,b和c并为其赋初值5的语句是()。
A) int a=b=c=5; B) int a,b,c=5;
C) int a=5,b=5,c=5; D) a=b=c=5;
(12)以下程序的运行结果是( )
main( )
{
int m = 5;
if ( m + + > 5) printf(“%d\n”, m);
else p rintf(“%d\n”,m - - );
}
A)4 B)5 C)6 D)7
(13)下面程序运行时从键盘上输入“15,20”,运行结果为( )。
#include “stdio.h”
void main()
{
int a,b,t;
t=0;
scanf("%d,%d",&a,&b);
if(a>b)
t=a;
a=b;
b=t;
printf("b=%d\n",b);
}
A)b=0 B)b=15 C)b=20 D)不确定
(14)以下程序段()
x = -1 ;
do
{ x = x * x ; }
while ( !x ) ;
A) 是死循环 B)循环执行两次 C)循环执行一次 D)有语法错误
(15)执行下面语句后,变量i的值是()。
for(i=1;i++<4;) ;
A)3 B)4 C) 5 D) 不定
(16)若有说明:int a [10] ;则对a数组元素的正确引用是()。
A) a [10] B) a[3.5] C) a (5) D) a [10-10]
(17)以下能对二维数组a进行正确初始化的语句是()。
A) int a[2][ ] = {{1,0,1} , {5,2,3}}; B) int a[ ][3] = {{1,2,3},{4,5,6}} ;
C) int a[2][4] = {{1,2,3},{4,5},{6}} ; D)int a[ ][3] = {{1,0,1}{ },{1,1}} ;
(18)对两个数组a 和b进行如下初始化:
char a[ ] = “ABCDEF” ; char b[ ] = {‘A’,’B’,’C’,’D’,’E’,’F’} ;
则以下叙述正确的是()。
A)a与b数组完全相同 B)a与b长度相同
C)a和b中都存放字符串 D)a数组比b数组长度长
(19)关于函数,下列说法正确的是()。
A) 在程序中引入函数不但使程序结构清晰,而且可提高程序运行效率
B) 函数可以使程序结构清晰,但不能提高程序运行效率
C) 使用函数只是一种编程风格,既不能使程序结构清晰,也不能提高程序运行效率
D) 使用函数可以提高程序运行效率,但使程序结构趋于复杂
(20)所有在函数中定义的变量及函数的形式参数都属于()。
A)局部变量B)全局变量C) 外部变量D)常量
(21)以下正确的函数定义形式是()。
A) double fun (int x, int y ) B) double fun (int x ;int y)
C) double fun (int x, int y) ; D) double fun (int x,y) ;
(22)变量的指针,其含义是指该变量的()。
A) 值 B) 地址 C) 名 D)一个标志
(23)下面程序段的运行结果是()。
char *s = “abcde” ;
s + = 2 ; printf (“%d” ,s) ;
A) cde B) 字符’c’ C)字符’c’的地址 D)99
(24)下面程序段得运行结果为()。
#include
void main()
{
char s[80],*sp="HELLO!";
sp=strcpy(s,sp);
s[0]=h;
puts(sp);
}
A) h B) HELLO! C) hELLO! D)H
(25)树的典型特点是各个结点之间的关系是()。
A)没有直接关系 B)一对一关系C)一对多关系D)多对多
(26)在一个长度为n的顺序表中删除第i (0
A)n-i-1 B)n-i+1 C)n- i D)i
(27)有关二叉树的下列说法正确的是()。
A)二叉树的度为2
B)一棵二叉树的度可以小于2
C)二叉树中任何一个结点的度都为2
D)任何一棵二叉树中至少有一个结点的度为2
(28)用链表表示线性表的优点是()。
A)便于随机存取 B)便于插入和删除操作
C)花费的存储空间较顺序存储少 D)元素的物理顺序与逻辑顺序相同
(29)在有n个顶点的有向图中,每个顶点的度最大可达()。
A)2*n B)n+1 C)2*(n-1) D)n
(30)在软件需求完全确定的情况下,应该采用的软件开发模型是()。
A)螺旋模型B)瀑布模型 C)原型模型D)渐进式开发模型
三、程序填空题(每空4分,共20分)
(1)下面程序的功能是:输出1~100之间不能被3整除的所有整数,要求每行输出10个数,请填空。
main( )
{ int i,n=0;
for(i=1;i<=100;i++)
1
{if(i%3==0) ;
if(n%10==0) ;
printf("%6d",i);
n++;}
}
(2)下面程序的功能是:读入一个整数m,计算如下公式的值:
1 1 1 1 1
t = 1 + ── + ── + ── + ── + …… + ──
2 3 4 5 m
例如:若输入5,则应输出2.28333。
请在程序中三处横线上填入适当的内容。
double fun(int m)
{ float t=1.0; int i;
for(i=2;i<=m;i++) t+= ;
return ______ ; }
main ( )
{ int m;
printf("\nPlease enter 1 integer number:");
scanf("%d",&m);
printf("\nThe result is % \n",fun(m));}
四、编程与操作题(每题10分,共40分)
(1)编写程序输出输出九九乘法表。
(2)编写程序打印出以下的杨辉三角形,要求打印出前10行。
1
11
12 1
13 31
14 64 1
15 10105 1
16 1520156 1
…
(3)假设一棵二叉树的层次遍历序列为abcdefghij,中序遍历序列为dbgehjacif,请画出该二叉树。
(4)写出在数据序列3,9,11,20,29,46,77,80,97,100,120中用折半检索法查找数据20的过程,并生成其二叉判定树。
参考答案
一、填空题
(1)机器(2)时间复杂度空间复杂度(3)main (4) 12 (5)链式存储结构(6)深度优先搜索(7)先进后出或后进先出
(8)黑盒测试白盒测试
二、单选题
(1)~(5) CDCBA (6)~(10) BCCDA
(11)~(15) CCACC (16)~(20) DBDAA
(21)~(25) ABDCC (26)~(30) CBBCC
三、程序填空题
(1)continue printf(“\n”)
(2)1.0/i t f
四、编程与操作题
(1)
#include “stdio.h”
main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%d",j,i,i*j);
printf(",");
}
printf("\n");
}
}
(2)
#include “s tdio.h”
#define N 10
main()
{ int i,j,a[N][N];
for(i=0;i<10;i++)
{ a[i][i]=1;a[i][0]=1;}
for(i=2;i<10;i++)
for(j=1;j<=i-1;j++)
{ a[i][j]=a[i-1][j-1]+a[i-1][j];}
for(i=0;i<10;i++)
{ for(j=0;j<=i;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
(3)
(4)
因为20 a d b c e g h f i 3 9 11 20 29 46 77 80 97 100 120 low high mid=(low+high)/2 i=0 1 2 3 4 5 6 7 8 9 10 3 9 11 20 29 46 77 80 97 100 120 1 因为20>T(mid)=11,所以检索后子表,置low=mid+1=3. 因为T (mid )=20,所以检索成功。 其二叉判定树为: 3 3 9 11 20 29 46 77 80 97 100 120 low high mid=(low+high)/2