计算机编程理论基础

写在前面的话:
要想做好一件事情,态度端正,注重基础,确立目标,提高效率,坚持执行!
1 二叉链表的逻辑结构属于非线性结构。
2 循环队列中当队头和队尾指向相同的位置时,队列中的元素为0或者队列的长度。
3 属于黑盒测试方法的是(C)A语句覆盖 B逻辑覆盖 C边界值分析 D路径覆盖
4 不能用作C语言程序合法常量的是(C) A123 B‘\123’ C1,234 D“\x7D”
5 该程序在编译时产生错误,其出错原因是()。

#include <stdio.h>
main()
{
    int case; float printF;
    printf("请输入2个数");
    scanf("%d%f", &case, &printF);
    printf("%d%f\n", case, printF);
}

定义语句出错,case是关键字,不能用作用户自定义标识符
6 从第一列开始:123<回车>45678<回车>则输出结果是(A)

#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);
}

A1245 B1256 C1278 D1267
解析:在题目中,程序执行到scanf()函数时,会暂停等待用户输入4个字符,按题意输入123<回车>后,字符1~3被分别赋值到c1~c3中,而c4会得到一个换行符’\n’。然后执行第1个getchar()函数,由于前面的scanf()函数读完了缓冲区中的所有字符,所以此时程序又会暂停等待用户输入,按题意输入45678<回车>后,缓冲区第一个字符4赋值c5,第二个字符5赋值给c6。
7 在关系数据库中,二维表用来表示实体间联系。
8 数据字典(DD)所定义的对象都包含于数据流图(DFD图)
9 若有定义语句:“int x=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为(A)。
A.1.9 B.1 C.2 D.2.4
10 选择(Selection):选择是单目运算,其运算对象是一个表。该运算按给定的条件,从表中选出满足条件的行形成一个新表作为运算结果。
投影(Projection):投影也是单目运算,该运算从表中选出指定的属性值组成一个新表
连接(JOIN):把两个表中的行按着给定的条件拼接而形成的新表。
并是指两个结果集合并,并消除重复(也可以选择不消除重复)
交是指找出两个结果集的共有部分
笛卡尔积是指将两个结果集的每一行两两组合得到的结果
11 属于白盒测试方法的是(B)A等价类划分法 B逻辑覆盖 C边界值分析法 D错误推测法
12 下面描述中不属于数据库系统特点的是()A数据共享 B数据完整性 C数据冗余度高 D数据独立性高
13 选项中合法的标识符是(C)A1_1 B1-1 C_11 D1_ _
标识符以字母或下划线开头
14 以下选项中,值为1的表达式是(B)A1-‘0’ B1-‘\0’ C’1’-0 D’\0’-‘0’
15 程序执行后的输出结果是() 3 5 7

#include <stdio.h>
int main()
{
    int i, t[][3] = {9,8,7,6,5,4,3,2,1};
    for (i = 0; i < 3;i++)
        printf("%d", t[2 - i][i]);
}

16 正确的字符串常量是(D)A”\\\” B’abc’ COlympic Games D””
17 struct { char mark[12]; int num1; double num2;}t1,t2;若变量均已正确赋值,下列语句中错误的是
At1 = t2 Bt2.num1 = t1.num1 Ct2.mark= t1.mark Dt2.num2 = t1.num2
18 一个二叉树中共有80个叶子节点与70个度为1的节点,则该二叉树中的总结点数为(B)
A219 B229 C230 D231
解析:二叉树中只有度为0.1.2的结点,其中度为2的节点数比度为0的结点数(叶子结点)少1
N0+N1+N2=80+70+79=229
19 对长度为n的线性表进行冒牌排序,最坏的情况下需要比较的次数为:n(n-1)/2
20 构成计算机软件的是(程序、数据及相关文档)
21 不能作为结构化方法软件需求分析工具的是(A)
A系统结构图 B数据字典 C数据流程图(DFD图) D判定表
22 算法的时间复杂度是执行算法所需要的计算工作量
23 某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为:12
24 下面不属于软件测试实施步骤的是(B)
A集成测试 B回归测试 C确认测试 D单元测试
25 下面描述中,不属于软件危机表现的是(A)
A软件过程不规范 B软件开发生产率低 C软件质量难以控制 D软件成本不断提高
26 在黑盒测试方法中,设计测试用例的主要根据是(D)
A程序内部逻辑 B程序外部功能 C程序数据结构 D程序流程图
27 在软件设计中不使用的工具是(B)
A系统结构图 B.PAD图 C数据流图(DFD图) D程序流程图
28 下列描述中正确的是(D)
A程序就是软件 B软件开发不受计算机系统的限制 C软件既是逻辑实体,又是物理实体 D软件是程序、数据与相关文档的集合
29 设二叉树的前序序列为ABDEGHCFIJ,中序序列为DBGEHACIFJ。则后序序列为:
DGHEBIJFCA
前序遍历:根左右 中序遍历:左根右 后序遍历:左右根
30 设顺序表的长度为n,对该表进行简单插入排序。在最坏情况下需要比较的次数为:n(n-1)/2
31 数据流图(DFD)构造规则中正确的是(D)
A”数据存储”间应有数据流 B“数据流”可不带有数据流名 C父图子图是指任意上下层的两个数据流图 D子图的输入输出数据流与父图中相关加工的输入输出数据流必须一致
32 在关系数据库中,描述全局数据逻辑结构的是(B)
A内模式 B概念模式 C用户模式 D物理模式
33 在关系模式A(S,SN,D)和B(D,CN,NM)中,关系A的主键是S,关系B的主键是D,则属性D在关系A中称为(D)A超键 B主键 C候选键 D外键
34通常,现代计算机内部用来表示信息的方法是(A)
A计算机内部均采用二进制表示各种信息
B计算机内部混合采用二进制、十进制和十六进制表示各种信息
C计算机内部采用十进制数据、文字显示以及图形描述等表示各种信息
D计算机内部均采用十进制表示各种信息
35 下列叙述中错误的是(C)
A具有两个根结点的数据结构一定属于非线性结构
B具有两个以上叶子结点的数据结构一定属于非线性结构
C具有两个以上指针域的链式结构一定属于非线性结构
D具有一个根结点且只有一个叶子结点的数据结构也可能是非线性结构
36 下面不属于结构化程序设计原则的是(C)
A模块化 B自顶向下 C可继承性 D逐步求精
37 数据库管理系统(DBMS)是(A)
A系统软件 B硬件系统 C一个完整的数据库应用系统 D既包括硬件、也包括软件的系统
38字长是计算机的一个重要指标,在工作频率不变和CPU体系结构相似的前提下,字长与计算机性能的关系是(A)
A字长越长,计算机的数据处理速度越快
B字长越短,计算机的数据处理速度越快
C字长表示计算机的存储容量大小,字长越长计算机的读取速度越快
D字长越短,表示计算机的并行能力越强
38 一台计算机的硬盘容量标为800GB,其存储容量是()800*2^30B
39 计算机中字符包括西文字符和中文字符,关于字符编码,下列说法错误的是(A)
A在计算机中,西文字符和中文字符采用相同的二进制字符编码进行处理
B计算机中最常用的西文字符编码时ASCII,被国际标准化组织指定为国际标准
C在计算机中,对于西文与中文字符,由于形式不同,使用不同的编码
D国标码是一种汉字的编码,一个国标码用两个字节来表示一个汉字
40 作为现代计算机理论基础的冯诺依曼原理和思想是(C)
A十进制和存储程序概念 B十六进制和存储程序概念
C二进制和存储程序概念 D自然语言和存储器概念
41 下列叙述中正确的是(C)
A算法的时间复杂度与算法程序中的语句条数成正比
B算法的时间复杂度与计算机的运行速度有关
C算法的时间复杂度与运行算法时特定的输入有关
D算法的时间复杂度与算法程序编制者的水平有关
42 下列各排序法中,最坏情况下的时间复杂度最低的是(C)
A希尔排序 B快速排序 C堆排序 D冒泡排序
43 结构化程序的三种基本结构是(C)
A递归、迭代和回溯 B过程函数和子程序 C顺序、选择和循环 D调用、返回和选择
44建立表示学生选修课程活动的实体联系模型,其中的两个实体分别是(B)
A课程和课程号 B学生和课程 C学生和学号 D课程和成绩
45 定义学生、教师和课程的关系模式 S (S#,Sn,Sd,Dc,SA )(其属性分别为学号、姓名、所在系、所在系的系主任、年龄); C ( C#,Cn,P# )(其属性分别为课程号、课程名、选修课); SC ( S#,C#,G) (其属性分别为学号、课程号和成绩),则该关系为( A)
A.第二范式 B.第一范式 C.第三范式 D.BCNF范式
https://www.nowcoder.com/questionTerminal/c789fc109a73467db5a81fe48014df30?toCommentId=445669
46 在Window7操作系统中,磁盘维护包括硬盘的检查、清理和碎片整理等功能,碎片整理的目的是(C)
A删除磁盘小文件 B获得更多磁盘可用空间 C优化磁盘文件存储 D改善磁盘的清洁度
47 在Internet中实现信息浏览查询服务的是(C)
A.DNS B.FTP C.WWW D.ADSL
48 下列数据结构中不能采用顺序存储结构的是(A)
A非完全二叉树 B堆 C队列 D栈
49 下列叙述中错误的是(B)
A二叉链表是二叉树的存储结构 B循环链表是循环队列的存储结构
C栈是线性结构 D循环队列是队列的存储结构
50 用树形结构表示实体之间联系的模型是(B)
A关系模型 B层次模型 C网状模型 D运算模型
51 关系数据模型的三个组成部分不包括(D)
A关系的完整性约束 B关系的数据操纵 C关系的数据结构 D关系的并发控制
52 在进行数据库逻辑设计时,可将E-R图中的属性表示为关系模式的(A)
A属性 B键 C关系 D域
53 下列叙述中正确的是(B)
A结点中具有两个指针域的链表一定是二叉链表
B结点中具有两个指针域的链表可以是线性结构,也可以是非线性结构
C二叉树只能采用链式存储结构
D循环链表是非线性结构
54 不能作为软件设计工具的是(C)
A.PAD图 B程序流程图 C数据流程图(DFD图)D总体结构图
55 逻辑模型是面向数据库系统的模型,下面属于逻辑模型的是(A)
A关系模型 B谓词模型 C物理模型 D实体-联系模型
56 程序运行后的输出结果是(B)

#include <stdio.h>
struct ball
{
    char color[10];
    int dim;
};

int main()
{ 
    struct ball list[2] = { { "white", 2 }, { "yellow", 3 } };
    printf("%s:%d\n", (list + 1)->color, list->dim);
}

Ayellow:3 Byellow:2 Cwhite:2 Dwhite:3
60 若有定义:typedef int *T[10];T a;
则以下选项与上述定义中a的类型完全相同的是(A)
A.int *a[10] B.int (*a)[10] C.int a[10] D.int (*a[10])();
61 struct complex{int real,unreal;} data1 = {1,8},data2;
以下赋值语句中错误的是(A)
A.data2=(2,6) B.data2=data1
C.data2.real=data1.real D.data2.real=data1.unreal
62 设有以下程序段,下列叙述正确的是(D)
float a[8]={1.0,2.0}; int b[1]={0};
char c[]={“A”,”B”}; char d==”1”;
A只有变量c的定义是合法的 B只有变量abc的定义是完全合法的
C所有变量的定义都是完全合法的 D只有变量ab的定义是完全合法的
63 若有定义语句 double a, *p = &a;以下叙述中错误的是(A)
A定义语句中的*号是一个间址运算符
B定义语句中的*号是一个说明符
C定义语句中的p只能存放double类型变量的地址
D定义语句中*p=&a把变量a的地址作为初值赋给指针变量p
64 有以下程序,当执行程序输入数据为12<回车>34<回车>,输出结果是(A)

#include <stdio.h>
int main(){
    char a, b, c, d;
    scanf("%c%c", &a, &b);
    c = getchar();
    d = getchar();
    printf("%c%c%c%c\n", a, b, c, d);
}

A12 3 B12 C1234 D12 34
65 软件生命周期是指(D)
A软件的定义和开发阶段 B软件的需求分析、设计与实现阶段
C软件的开发阶段 D软件产品从提出、实现、使用维护到停止使用退役的过程
66 下列叙述中错误的是(A)
A数据结构中的元素不能是另一数据结构 B数据结构中的元素可以是另一数据结构
C空数据结构可以是线性结构也可以是非线性结构 D非空数据结构可以没有根结点
67 为了降低算法的空间复杂度,要求算法尽量采用原地工作(in place).所谓原地工作是指(A)
A执行算法时所使用的额外空间固定(即不随算法所处理的数据空间大小的变化而变化)
B执行算法时使用的额外空间随算法所处理的数据空间大小的变化而变化
C执行算法时不使用额外空间
D执行算法时不使用任何存储空间
68 关于程序模块化,以下叙述错误的是(A)
A程序模块化可以提高程序运行的效率 B程序模块化可以提高程序编制的效率
C程序模块化可以提高程序代码复用率 D程序模块化可以提高调试程序的效率
69 在以下程序,执行时输入:1 2 3<回车>,则输出结果是(C)

#include <stdio.h>

int main(){

    int a,b;
    for(a=0;a<3;a++)
    {
        scanf("%d",&b);
        switch(b)
        {
            default:printf("%d",b+1);continue;
            case 1:printf("%d",b+1);
            case 2:printf("%d",b+1);continue;
        }
    }
    return 0;
}

A2,2,3,4,4,4, B2,3,4, C2,2,3,4, D2,3,3,4,5,6,
70 以下程序实现计算sum=1+1/2+1/3+…+1/50.程序运行后不能得到正确结果,
出现问题的语句是(A)

#include <stdio.h>

int main(){

    int i; double sum; sum=1.0; i=1;
    do{i++;sum+=1/i;}
    while(i<50) printf("sum=%lf\n",sum);

    return 0;
}

Asum+=1/i; Bwhile(i<50); Csum=1.0; Di++;
71 若有语句:int a[3][4],(*p)[4];p=a;,则以下选项中叙述错误的是(A)
A系统将开辟一个名为p的二维数组,p[0][0]中的值即为a[0][0]中的值
Bp+1代表a[1][0]的地址
Cp中将存放a数组的首地址
Dp+2代表a数组最后一行的首地址
72 以下程序运行后的结果为(A)

#include <stdio.h>
int fun(int a[], int n, int x)
{
    int *p = a;
    while (p < a + n && *p != x)p++;
    if (p < a + n)return p - a;
    else return -1;
}

int main(){

    int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    printf("%d\n", fun(a, 10, 10));
}   
A9 B-1 C10 D0

73 以下程序运行后的输出结果是(D)

#include <ctype.h>
#include <stdio.h>

long fun(char s[])
{
    long n; int sign;
    for (; isspace(*s); s++);
    sign = (*s == '-') ? -1 : 1;
    if (*s == '+' || *s == '-')s++;
    for (n = 0; isdigit(*s); s++)
    n = 10 * n + (*s - '0');
    return sign*n;
}

int main(){

    char s[] = "-26a3";
    printf("%d\n", fun(s));
}
A-263 B2 C0 D-26

74 若文件指针fp已正确指向文件,ch为字符变量,以下不能把字符
输出到文件中的语句是(A)
Afget(fp,ch) Bfputc(ch,fp)
Cfprintf(fp,”%c”,ch) Dfwrite(&ch,sizeof(ch),1,fp);
75 语句printf(“%d\n”, strlen(“\t\”\\n\’\065\08AB”));的输出结果是(A)
A6 B7 C8 D9
解析:
\t(跳格符) \”(双引号) \ \n(换行符) \’ \065(ASCII值为八进制065,也即十进制为51的字符)
而strlen()函数从字符串第一个字符开始扫描,直到碰到第一个结束符’\0’为止,然后返回计数器值,故输出结果为6
76 以下程序运行后的输出结果是(A)

#include <stdio.h>
int m = 1, n = 2;
void sub1(int m, int n)
{
    m += 2; n++;
}
void sub2()
{
    m++; n += 2;
}
int main(){
    printf("%d,%d,", m, n);
    sub1(4, 5);
    printf("%d,%d,", m, n);
    sub2();
    printf("%d,%d\n",m, n);
}

A1,2,1,2,2,4 B1,2,6,6,7,8
C1,2,2,4,2,4 D1,2,6,6,2,4
77 有以下程序,程序运行后的输出结果是(A)

#include <stdio.h>
void change(char* array, int len)
{
    for (len--; len >= 0; len--)
    array[len] += 1;
}
int main(){

    int i;
    char array[5] = "ABCD";
    change(array, 4);
    for (i = 0; i < 4; i++)
    printf("%c,", array[i]);
}

A.B,C,D,E
B.A,B,C,D
C.C,D,E,F
D.B,D,F,H,
78 关于函数返回值,以下叙述正确的是(A)
A函数可以返回整个结构体,即使结构体中有数组
B函数只能返回基本数据类型的数值或指针
C函数不能返回一个数组
D函数不能没有返回值
79 若有定义:int a,b,c;以下程序段的输出结果是(A)
a = 11; b = 3; c = 0;
printf(“%d\n”, c = (a / b, a%b));
A2 B0 C3 D1
C语言中的逗号表达式 输出的总是后面位置的数
80 某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m,rear=m-1,则该循环队列中的元素个数为(A)
Am-1 Bm C1 D0
解析:
循环队列长度为m,由初始状态为front=real=m可知此时循环队列为空。入队运算时,首先队尾指针(rear)进1(即rear+1),然后在lear指针指向的位置插入新元素。特别的,当队尾指针rear=m+1时,置rear=1。退队运算时,排头指针(front)进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。
81 某棵树只有度为3的结点和叶子结点,其中度为3的结点有8个,
则该树中的叶子结点数为(C)
A15 B16 C17 D不存在这样的树
82某二叉树共有530个结点,其中度为2的结点有250个,则度为1的结点数为(A)
A29 B30 C249 D251
二叉树中只有度为0 1 2的结点,其中度为0的结点比度为2的结点多1
83下列叙述中正确的是(A)
A软件是程序、数据和文档
B软件是程序和数据
C软件是算法和数据结构
D软件是算法和程序
84下列叙述正确的是(A)
A数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能
B数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件
C数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少
D数据库系统独立性差,而文件系统独立性好。
85 以下程序运行后的输出结果是(B)

#include <stdio.h>
#define S(x) x*x/x
int main(){
    int k = 6, j = 3;
    printf("%d,%d\n", S(k + j + 2), S(j + k + 2));
}

A11,11 B29,29 C26,29 D121,121

#define S(6+3+2) = 6+3+2*6+3+2/6+3+2 = 29
#define S(3+6+2) = 3+6+2*3+6+2/3+6+2 = 29

86 以下程序运行后的输出结果(A)

#include <stdio.h>
int main(){

    FILE *fp;
    int i, a[6] = { 1, 2, 3, 4, 5, 6 }, k;
    fp = fopen("data.dat", "w+");
    for (i = 0; i < 6; i++)
    fprintf(fp, "%d\n", a[5 - i]);
    rewind(fp);

    for ( i = 0; i < 6; i++)
    {
    fscanf(fp, "%d", &k);
    printf("%d", k);
    }
    fclose(fp);
    return 0;
}

A6,5,4,3,2,1, B1,2,3,4,5,6,
C1,1,1,1,1,1, D6,6,6,6,6,6,
rewind()将文件指针重新指向一个流的开头
87 有以下程序运行后的结果是(A)

#include <stdio.h>
#include <stdlib.h>
void fun(double *p1, double *p2, double *s)
{
    s = (double*)calloc(1, sizeof(double));
    *s = *p1 + *p2;
}
int main(){

    double a[2] = { 1.1, 2.2 }, b[2] = { 10.0, 20.0 }, *q = NULL;
    fun(a, b, q);
    printf("%5.2f\n", *q);
}

A有运行结果 B输出11.10 C输出12.10 D输出21.10
正确的程序应该是

#include <stdio.h>
#include <stdlib.h>
void fun(double *p1, double *p2, double **s)
{
    *s = (double*)calloc(1, sizeof(double));
    **s = *p1 + *p2;
}
int main(){
    double a[2] = { 1.1, 2.2 }, b[2] = { 10.0, 20.0 }, *q = NULL;
    fun(a, b, &q);
    printf("%5.2f\n", *q);
}

88 下列叙述中正确的是(A)
A程序可以作为算法的一种表达方式
B算法的有穷性是指算法的规模不能太大
C算法的复杂度用于衡量算法的控制结构
D算法效率与数据存储结构无关
89从任意一个结点开始没有重复的扫描到所有结点的数据结构是(A)
A循环链表 B双向链表 C二叉链表 D有序链表
90 输出语句:printf(“%d”,11+011);的输出结果是(A)
A20 B22 C022 D021
011是八进制的9
91 若有定义:double x,则表达式x=0,x+10,x++的值是(C)
A11.0 B10.0 C0.0 D1.0
92 关于地址和指针叙述正确的是(A)
A可以通过强制类型转换让char型指针指向double型变量
B函数指针p指向一个同类型的函数f时,必须写成:p=&f;
C指针p指向一个数组f时,必须写成p=&f;
D一个指针变量p可以指向自身
93 以下选项中的预编译预处理命令行,正确的是(A)
A#define E 2.38 B##define PI_2 1.56
C#define int INT D#DEFINE TRUE
94 若有定义char c;double d;程序运行时输入:1 2<回车>能把字符1
输入给变量c、数值2输入给变量d的输入语句是(B)
Ascanf(“%d%lf”,&c,&d); Bscanf(“%c%lf”,&c,&d);
Cscanf(“%c%f”,&c,&d); Dscanf(“%d%f”,&c,&d);
95 设定义int x[10],*p=x,i;,若要为数组x读入数据,以下选项正确的是(A)
Afor(i=0;i<10;i++)scanf(“%d”,p+i);
Bfor(i=0;i<10;i++)scanf(“%d”,*p+i);
Cfor(i=0;i<10;i++)scanf(%d”,*(p+i));
Dfor(i=0;i<10;i++)scanf(“%d”,x[i]);
scanf(“<格式化字符串>”,<地址表>);可知第二个参数是地址

猜你喜欢

转载自blog.csdn.net/davebobo/article/details/79638599