2017西电电院软件技术基础上机大作业答案
软件技术基础习题答案
操作系统1.如何理解虚拟机的概念?答:虚拟机就是在裸机上扩展一层软件,将硬件实现细节隐藏起来,使用户能够更方便、更灵活使用的计算机。
2.什么是多道程序设计,它的主要优点是什么?答:多道程序设计就是允许多个程序同时进入内存并运行。
主要优点:提高资源利用率,从而提高了系统的吞吐量。
3.试述分时系统与实时系统,并比较它们的区别。
答:分时系统是指能够允许多个用户同时使用一台计算机的系统。
实时系统是指能够及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件处理的系统。
实时系统对系统响应速度要求更高,可靠性要求更高。
(或者说明分时系统与实时系统各自特点)4.一般从哪几方面对操作系统的性能进行评价?1)可靠性2)方便性3)效率4)可维护性5)可移植性5.试说出几种你所熟悉的操作系统名称,并说明其特征。
答:Linux特征:支持多用户、多任务,具有良好的用户界面,设备独立性,系统安全性能高,良好的可移植性。
Windows特征:支持多用户、多任务,具有友好的图形用户界面,强大的内存管理功能,可靠性高,操作简单。
6.根据你试用计算机系统的经验,说明操作系统的作用。
答:控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用。
7.如何理解网络操作系统的主要功能?答:用于管理网络通信和共享资源,协调各主机上任务的运行,并向用户提供统一的、有效的网络接口,包括网络管理、通信、资源共享、系统安全和多种网络应用服务。
8.如何理解进程的概念?进程与程序的区别是什么?进程与作业的联系和区别是什么?答:进程是一个可以并发执行的程序或程序段在一个数据集合上的执行过程,他是系统分配资源的基本单位。
区别:1)经常是一个动态的概念,是执行程序的动态过程,它因创建而产生,因调度而执行,因撤销而消亡。
而程序是一个静态的概念,是进程运行的静态文本。
《计算机软件技术基础》习题及参考答案
4.以下数据结构中不属于线性数据结构的是______。
A. 队列 B. 线性表 C . 二叉树 D. 栈
5.在计算机中,算法是指______。
A. 查询方法 B. 加工方法 C. 解题方案的准确而完整的描述 D. 排序方法
6.在下列选项中,哪个不是一个算法一般应该具有的基本特征______。
B. 随机存取的存储结构、顺序存取的存储结构
C. 随机存取的存储结构、随机存取的存储结构
D. 任意存取的存储结构、任意存取的存储结构
14.下列关于栈的描述中错误的是。
A.栈是先进后出的线性表B.栈只能顺序存储
C.栈具有记忆作用D.对栈的插入和删除操作中,不需要改变栈底指针
15.栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是______。
A. 程序的规模 B. 程序的易读性 C. 程序的执行效率 D. 程序的可移植性
30.对建立良好的程序设计风格,下面描述正确的是______。
A. 程序应简单、清晰、可读性好 B. 符号名的命名要符合语法
C. 充分考虑程序的执行效率 D. 程序的注释可有可无
31.下面对对象概念描述错误的是______。
A. 任何对象都必须有继承性 B. 对象是属性和方法的封装体
C. 对象间的通讯靠消息传递 D. 操作是对象的动态性属性
32.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送______。
A. 调用语句 B. 命令 C. 口令 D. 消息
33.面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是______。
《计算机软件技术基础》参考答案A.doc
《计算机软件技术基础》参考答案A一、单项选择题(每空1分,共50分)1-5 CBCBD 6-10 ADDCB11-15 ACABB 16-20 BLJCI21-25 CCABC 26-30 BADAB31-35 BCDBA 36-40 DDCDA41-45 DDCAC 46-50 BBCAB评分标准:本题每空1分,多选、少选、错选均不得分。
二、本题10分(1) v != NULL或v(2) x > v->val 或x != v->val(3) p->next(4) u->next(5) head->next评分标准:本题10分,每空2分,在(3)-(5)中未写出next扣1分三、本题10分(1) A!=NULL && B!=NULL(2) A->data==B->data(3) B=B->next;(4) A!=NULL(5) last->next=NULL;评分标准:本题10分,每空2分,在(2)中未写出data扣1分,在(3)和(5)中未写出next扣1分四、本题10分解:(1) A、B、C三个进程之间存在互斥的制约关系。
因为打印机属于临界资源,必须一个进程使用完之后另一个进程才能使用。
(2)mutex:用于互斥的信号量,初值为1。
各进程的代码如下:进程A 进程B 进程C... … ...... … ...P(mutex) P(mutex) P(mutex)申请打印机申请打印机申请打印机使用打印机使用打印机使用打印机V(mutex) V(mutex) V(mutex)… … …评分标准:本题10分,(1)题3分,(2)题7分,其中给出信号量含义和初值1分,三个进程代码各2分五、本题10分解:FIFO淘汰算法:内存块为3时,缺页中断(或称缺页次数、页面故障)为9;内存块为4时,缺页中断为10。
LRU淘汰算法:内存块为3时,缺页中断为10评分标准:本题10分,FIFO淘汰算法两种情况各3分,LRU淘汰算法1分,要求有分析过程六、本题10分解:段式存储管理的地址转换过程为:(1)根据逻辑地址中的段号查段表的相应栏目;(2)根据段内地址<段长度,检查地址是否越界;(3)若不越界,则绝对地址=该段的主存起始地址+段内地址。
电子科技大学2017年计算机机考参考答案
1.操作系统是一种( C ) (A) 编译系统 (B) 操作规范 (C) 系统软件 (D) 应用软件 分值:2 完全正确 得分:22.在 Word 的默认状态下,不用打开“文件”对话框就能直接打开最近使用过的文档方法是( D ) (A) 选择“文件”菜单中的“打开”命令 (B) 工具栏上的“打开”按钮 (C) 快捷键 Ctrl+O (D) 选择“文件”菜单底部文件列表中文件 分值:2 完全正确 得分:23.在具有常规格式的单元中输入数值后,其显示方式是(B ) (A) 左对齐 (B) 右对齐 (C) 居中 (D) 随机 分值:2 完全正确 得分:24.在幻灯片切换中,可以设置幻灯片切换的( B ) (A) 在幻灯片切换中,可以设置幻灯片切换的( ) (B) 换片方式 (C) 强调效果 (D) 退出效果 分值:2 完全正确 得分:25.动态 RAM 的特点是( D ) (A) 工作中需要动态地改变访存地址(B) 工作中需要动态地改变存储单元内容 (C) 每隔一定时间需要刷新 (D) 每次读出后需要刷新 分值:2 答题错误 得分:06.启动 Excel 自动建立的工作薄文件中自动带有的电子工作表有( B ) (A) 2 个 (B) 3 个 (C) 1 个 (D) 4 个 分值:2 完全正确 得分:27.当向 Excel 工作薄文件中插入一张电子工作表时,表标签中的英文单词为( D ) (A) Book (B) List (C) Table (D) Sheet 分值:2 完全正确 得分:28.演示文稿中,超链接所链接的目标可以是( D ) (A) 幻灯片中的文本 (B) 幻灯片中的图拍案 (C) 幻灯片中的动画 (D) 同一演示文稿的某一张幻灯片 分值:2 完全正确 得分:29.在 PowerPoint 自定义动画中,可以设置( D) (A) 隐藏幻灯片 (B) 动作 (C) 超链接(D) 动画重复次数 分值:2 完全正确 得分:210.显示磁盘卷标的 DOS 命令是( D ) (A) TYPE (B) DIR (C) VER (D) VOL 分值:2 完全正确 得分:211.计算机内部用于处理数据和指令的编码是(B ) (A) 十进制 (B) 二进制 (C) 汉字编码 (D) ASCII 码 分值:2 完全正确 得分:212.计算机的存储系统一般指主存储器和( B ) (A) 寄存器 (B) 辅助存储器 (C) 累加器 (D) 鼠标器 分值:2 完全正确 得分:213.在 Windows 中,“回收站”是( C ) (A) 内存中的一块区域 (B) 高速缓存中的一块区域 (C) 硬盘中的特殊文件夹 (D) 软盘上的文件 分值:2完全正确 得分:214.PowerPoint 的页眉可以( D ) (A) 用作标题 (B) 将文本放置在每张幻灯片的顶端 (C) 将图片放置在每张幻灯片的顶端 (D) 将文本放置在讲义打印页的顶端 分值:2 完全正确 得分:215.时至今日,计算机仍采用程序内存或称存储程序原理,原理的提出者是( B ) (A) 比尔盖茨 (B) 冯诺依曼 (C) 莫尔 (D) 科得 分值:2 完全正确 得分:216.计算机最主要的工作特点是( D ) (A) 有记忆能力 (B) 可靠性与可用性 (C) 高速度与高精度 (D) 存储程序与自动控制 分值:2 完全正确 得分:217.用来表示计算机辅助设计的英文缩写是( C) (A) CAM (B) CAT (C) CAD (D) CAI 分值:2 完全正确 得分:218.在 Word 编辑状态下,若要进行字体效果的是指,首先应该打开( D )下拉菜单。
《计算机软件技术基础》试题答案
《计算机软件技术基础》试题答案一、选择题(每题5分,共30分)1. 下列关于软件工程的描述,错误的是(D)。
A. 软件工程是计算机科学的一个分支B. 软件工程的目标是提高软件质量和生产率C. 软件工程包括软件开发、维护和管理等方面D. 软件工程只关注大型软件的开发2. 下列哪种编程范式主要用于描述程序逻辑和数据的结构?(B)A. 面向过程编程B. 面向对象编程C. 函数式编程D. 逻辑编程3. 下列关于软件测试的描述,错误的是(C)。
A. 软件测试是软件开发过程中的重要环节B. 软件测试的目的是发现和修正软件中的错误C. 软件测试无需考虑软件的性能和稳定性D. 软件测试分为单元测试、集成测试和系统测试等阶段4. 下列关于软件维护的描述,正确的是(B)。
A. 软件维护是指对软件进行升级和优化B. 软件维护包括纠正软件错误、改进软件性能和增加新功能等C. 软件维护不需要考虑软件的可维护性D. 软件维护仅限于软件开发完成后5. 下列关于软件项目管理工具的描述,错误的是(D)。
A. 软件项目管理工具可以协助项目经理进行项目规划B. 软件项目管理工具可以协助项目经理进行项目监控C. 软件项目管理工具可以协助项目经理进行项目沟通D. 软件项目管理工具无法协助项目经理进行项目风险管理二、填空题(每题5分,共30分)1. 软件生命周期可以分为______、______、______、______和______五个阶段。
答案:需求分析、设计、实现、测试、维护2. 在面向对象编程中,一个对象通常包括______和______两部分。
答案:属性、方法3. 软件测试的目的是______、______和______。
答案:发现错误、修正错误、提高软件质量4. 软件维护的类型包括______、______、______和______。
答案:纠错性维护、适应性维护、完善性维护、预防性维护5. 软件项目管理工具主要包括______、______、______和______。
西电—软件大作业
软件技术基础大作业电子工程学院2016.121、//单链表逆置void invert(linklist*head) {linklist*p, *q, *r;//p指向前一个结点,q指向p后的结点,r用于保存q指针域的值p = head->next; //p指向第一个结点q = head->next->next; //q指向第二个结点head->next->next = NULL;while (q != NULL) {r = q->next;//保存q指针域的值,接下来会将此值赋予pq->next = p; //修改q的指针域,使其指向p所指结点,以达到逆置的目的p = q;//p 后移q = r;//q后移}head->next = p;}分析:2、//按字母、数字、其它字符分解单链表void resolve(linklist*head, linklist*letter, linklist*digit, linklist*other) { linklist *p;while (head->next != NULL) {p = head->next; //p指向第一个节点head->next = head->next->next; //缩短循环链表if ((p->data >= 'A'&&p->data <= 'Z') || (p->data >= 'a'&&p->data <= 'z')) insert(letter, p);elseif (p->data >= '0'&&p->data <= '9')insert(digit, p);else insert(other, p); //判断字母、数字和其它字符}}分析:3、//判字符串是否中心对称int symmetry(linklist*head, stack*s) {int l = length(head);int n = l / 2;int x;linklist*p = head->next;for (int i = 1; i <= n; i++) {push(s, p->data);//把单链表的前一半元素压入堆栈p = p->next;}if (l % 2 == 1) p = p->next;//当链表长度为奇数时while (p->next != NULL) {x = pop(s);if (x == p->data)p = p->next;elsereturn 0;}return 1;}分析:4、//入队void enqueue(qu *sq, datatype x) {for (int i = 0; i < m; i++) {sq->sequ[i] = x;}}//出队datatype *dequeue(qu *sq){datatype *temp;if (sq->quelen == 0){printf("queue is empty\n"); return NULL;}else {temp = (datatype*)malloc(sizeof(datatype));sq->quelen--;*temp = sq->sequ[(sq->rear - sq->quelen + m) % m];return (temp);}}分析:5、//顺序串的朴素模式匹配int Index(seqstring*S, seqstring*subS) {int i = 1, j = 1; //位序从1开始while (i <= S->len&&j <= subS->len)if (S->str[i - 1] == subS->str[j - 1]){i++; j++;} //继续比较后面的字符else{i = i - j + 2; j = 1;} //本趟不匹配,设置下一趟匹配的起始位序if (j >subS->len) return(i - subS->len); //匹配成功elsereturn(-1); //匹配不成功}分析:6、//添加删除子串算法void strDelete(seqstring*S, int pos, int len) {char temp[maxsize];if (pos>= 1 &&len<= S->length - len + 1) {strncpy_s(temp, S->str, pos - 1);//strncpy_s与strncpy具有相同的功能,用于将源字符串复制到目的字符串strcpy_s(temp + pos - 1,maxsize,S->str + pos + len - 1);//strcpy_s与strcpy具有相同的功能strcpy_s(S->str,maxsize, temp);S->length = S->length - len;}}分析:7、//希尔排序void shellsort(rectype r[], int d[]){int i, j, k, h;rectype temp;int maxint = 32767;for (i = 0; i<D1; i++)r[i].key = -maxint;//设置T个监视哨k = 0;do {h = d[k];//取一趟的增量for (i = h + D1; i<N + D1; i++){temp =r[i];j = i - h;while (temp.key<r[j].key){r[j + h] =r[j];j = j - h;}r[j + h] = temp;}//组内直接插入法排序print(r, N);//输出一趟的排序结果k++;} while (h != 1);}分析:8、//折半查找索引表,块内顺序查找int blksearch(record r[], index idx[], keytype k, int n) {int i, low = 0, high = n - 1, mid, bh, find = 0;//折半查找索引表while (low <= high && !find){mid = (low + high) / 2;if (k<idx[mid].key)high = mid - 1;elseif (k>idx[mid].key)low = mid + 1;else{high = mid - 1;find = 1;}}if (low<n){i = idx[low].low;//块的起始地址bh = idx[low].high;//块的终止地址}//块内顺序查找while (i<bh&&r[i].key != k)i++;if (r[i].key != k)i = -1;return i;}分析:9、//双向起泡排序void dbubblesort(sequenlist r[], int n){int i = 1, j, noswap = 1;sequenlist temp;while (noswap) {noswap = 0;for (j = n - i + 1; j >= i + 1; j--)if (r[j].key<r[j - 1].key){noswap = 1;temp =r[j];r[j] =r[j - 1];r[j - 1] = temp;}for (j = i + 1; j <= n - i; j++)if (r[j].key>r[j + 1].key){noswap = 1;temp =r[j];r[j] =r[j + 1];r[j + 1] = temp;}for (int k = 1; k <= n; k++)printf("%5d", r[k].key);printf("\n");i++;}}分析:10。
《计算机软件技术基础》试题及答案
《计算机软件技术基础》试题1.线性表的链式储存结构与次序储存结构对比优点是CD 。
A.所有的操作算法实现简单B.便于随机存取C.便于插入和删除D.便于利用零落的储存器空间2.线性表是拥有n个 C 的有限序列。
A.表元素B.字符C.数据元素D.数据项E.信息项3.若长度为n的线性表采纳次序储存结构, 在其第I个地点插入一个新元素的算法的时间复杂度为 C 。
(1≤I≤n+1)A.O(0)B.O(1)C.O(n)D.O(n2)4.设A是一个线性表(a1,a2,…,an), 采纳次序储存结构, 则在等概率的前提下, 均匀每插入一个元素需要挪动的元素个数为 B , 均匀每删除一个元素需要挪动的元素个数为A ;若元素插在ai与ai+1之间(0≤I≤n-1)的概率为, 则均匀每插入一个元素所要挪动的元素个数为 C ;A. B.C. D.5.以下函数中, 按它们在时的无量大阶数, 最大的是 D 。
A.lognB.nlognC.2n/2D.n!6.将以下图所示的s所指结点加到p所指的结点以后, 其语句应为: D 。
A.s->next=p+1.p->next=s;B.(*p).next=s.(*s).next=(*p).next;C.s->next=p->next.p->next=s->next;D.s->next=p->next.p->next=s;7.将两个各有n个元素的有序表合并为一个有序表时, 其最少的比较次数是A 。
A.nB.2n-1C.n-1D.2n8.下边的程序段是合并两个无头结点链表(ha和hb)为一个无头结点链表ha的过程, 作为参数的两个链表都是按结点的data域由大到小链接的。
合并后新链表的结点仍按此方式链接。
请填写下述空框, 使程序能正确运转。
#define NULL 0typedef struct node{int data;struct node *next;}node, linklisttype;void combine(linklisttype *ha, linklisttype *hb){linklisttype *h, *p;h = (linklisttype *)malloc(sizeof(linklisttype));h->next = NULL;p = h;while(ha != NULL && hb != NULL)if(ha->data>=hb->data){ /*较大的元素先插入*/p->next = (1) ;p = (2) ;(3) ;}else{p->next = (4) ;p = (5) ;(6) ;}if(ha==NULL) (7) ;if(hb==NULL) (8) ;ha = h->next;free(h);}参照答案: (1) ha (2) p->next (3) ha=ha->next(4) hb (5) p->next (6) hb=hb->next(7) p->next=hb (8) p->next=ha9.假如表A中所有元素(a1,a2,…,an)与表B的一个次序子表(bk,bk+1,…bk+n-1)完好同样(即a1=bk,a2=bk+1,…an=bk+n-1), 则称表A包含在表B中。
西电软件技术基础大作业
西电软件技术基础大作业现有若干学生的学籍档案信息,要求编写一个应用软件实现对其进行日常管理,以实现学生档案信息的插入和删除,并能根据学号查询.#include<stdio.h>#include<stdlib.h>#include<string>typedef struct student{char ID[10];char name[10];char sex[3];int age;char addr[30];struct student *next;}stu;void Input(stu *&head){stu *temp,*current;temp=(stu *)malloc(sizeof(stu));printf("输入学生信息:\n");printf("学号\t姓名\t性别\t年龄\t地址\t\n");fflush(stdin);scanf("%s%s%s%d%s",temp->ID,temp->name,temp->sex,&temp->age,temp->addr);temp->next=NULL;if(head==NULL){head=(stu *)malloc(sizeof(stu));head->next=temp;}else{current=head->next;while(current->next)current=current->next;current->next=temp;}printf("添加成功\n");system("pause");}void FindByID(stu *&head){if(head==NULL){printf("数据为空\n");system("pause");return ;}else{stu *current =head->next;bool flag=0;char a[10];printf("输入要查询的学号:\n");fflush(stdin);scanf("%s",a);do{if(strcmp(current->ID,a)==0){flag=1;break;}current=current->next;}while(current!=NULL);if(flag){printf("学号:%s 姓名:%s 性别:%s 年龄:%d 地址:%s\n",current->ID,current->name,current->sex,current->age,current->addr);system("pause");}else{printf("没有找到\n");system("pause");}}}void FindByName(stu *&head){if(head==NULL){printf("数据为空\n");system("pause");return ;}else{stu *current =head->next;bool flag=0;char a[10];printf("输入要查询的姓名:\n");fflush(stdin);scanf("%s",a);do{if(strcmp(current->name,a)==0){flag=1;break;}current=current->next;}while(current!=NULL);if(flag){printf("学号:%s 姓名:%s 性别:%s 年龄:%d 地址:%s\n",current->ID,current->name,current->sex,current->age,current->addr);system("pause");}else{printf("没有找到\n");system("pause");}}}void Delete(stu *&head){if(head==NULL){printf("数据为空\n");system("pause");return ;}else{ stu *current =head->next;stu *prev=NULL;char a[10];printf("输入要删除的学号:\n");fflush(stdin);scanf("%s",a);while(current!=NULL){if(strcmp(current->ID,a)==0)break;prev=current;current=current->next;}if(prev==NULL){head->next=current->next;free(current);}else{prev->next=current->next;free(current);}printf("删除成功\n");system("pause");}}void Show(stu *&head){stu *current =head->next;if(current==NULL){printf("数据为空\n");system("pause");return ;}printf("学号\t姓名\t性别\t年龄\t地址\t\n");while(current!=NULL){printf("%s\t%s\t%s\t%d\t%s\n",current->ID,current->name,current->sex,current->age,current->ad dr);current=current->next;}system("pause");}void Modify(stu *&head){if(head==NULL){printf("数据为空\n");system("pause");return ;}bool flag=0;char a[10];printf("输入要查询的学号:\n");fflush(stdin);scanf("%s",a);stu *current=head->next;do{if(strcmp(current->ID,a)==0){flag=1;break;}current=current->next;}while(current!=NULL);if(flag){printf("学号:%s 姓名:%s 性别:%s 年龄:%d 地址:%s\n",current->ID,current->name,current->sex,current->age,current->addr);printf("请重新输入该学生信息:\n");printf("学号\t姓名\t性别\t年龄\t地址\t\n");scanf("%s%s%s%d%s",current->ID,current->name,current->sex,current->age,current->addr); printf("修改成功\n");printf("pause");}else{printf("没有找到\n");system("pause");}}void Print(){system("cls");printf(" 请选择功能(按0退出)\n");printf(" 1------添加学生\n");printf(" 2------通过学号查询学生\n");printf(" 3------通过姓名查询学生\n");printf(" 4------删除学生\n");printf(" 5------修改学生\n");printf(" 6------显示所有学生\n");}int main(){char ch;stu *head=NULL;do{Print();fflush(stdin);ch=getchar();//system("cls");switch(ch){case '1':Input(head);break;case '2':FindByID(head);break; case '3':FindByName(head);break; case '4':Delete(head);break;case '5':Modify(head);break; case '6':Show(head);break;}}while(ch!='0');}。
大一计算机上机题目及答案(西电专用)
《《程序设计实践》上机报告要求:五次上机(每次8机时)正确完成8~10 题。
最终提交:(1) 电子版文档。
格式模板参见《程序设计基础实验报告》(注意文档最后一部分包含课程设计小结)。
(2) 打印电子版文档。
(3) 源程序,打包成压缩文件提交。
注意:(1) 压缩文件格式:学号.zip (或rar)。
例如:03051122.zip(或03051122.rar) (2) 各源程序命名方式:no题号.c 。
例如:no3.c (3) 源程序压缩包内只包含各题目的源程序和程序运行过程中需要的相关文件,不包含编译后的可执行文件和运行结果。
(4) 课程设计小结写本次课设的收获和体会。
备选题目如下:算法类1、已知2000年1月1日为星期六,输入任一年的年份后,打印该年的年历。
2、假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,实际的长整数m表示为:m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1]其中a[0]保存该长整数的位数。
完成(任选一题):(1) 长整数乘普通整数。
(2) 长整数除普通整数。
3、假定用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,实际的长整数m表示为:m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1]其中a[0]保存该长整数的位数。
完成(任选一题):(1) 转换成16进制数输出。
(2) 转换成8进制数输出。
文件类1、用文件保存一段英文文本。
(1) 统计各字母在文本中出现的次数(忽略大小写)。
(2) 查找并替换文本中的某字符串,将替换后的文本存入另一个文件。
2、编写文件拷贝命令行程序,命令行格式为:HCOPY filename1filename2 。
3、现有两个文本文件file1.txt和file2.txt。
file1中第一列为姓名,第二列为英语成绩;file2中第一列为姓名,第二列为数学成绩。
西电 C++ 面向对象程序设计 软件技术基础 课后答案
习题3 四、1int compare(SeqList*La,SeqList*Lb){int i;i=1;while(i<=La->last&&i<=Lb->Last&& La->data[i]==Lb->data[i]) i++;if(i<=La->last&&j>Lb->last|| La->data[i]>Lb->data[i]) return 1; //A>B if(i>La->last&&j<=Lb->last|| La->data[i]<Lb->data[i]) return -1; //A<B if(i>La->last&&j>Lb->last) return 0; //A=B}四、2 (1)顺序表int invert(SeqList*L){int i=1;datatype temp;while(i<=L->last/2){temp=L->data[i];L->data[i]=L->data[L->last-i+1];L->data[L->last-i+1]=temp;}}(2)链表void invert (linklist*head){linklist*p,*q,*r;p=head->next;q=p->next;while(q!=NULL){r=q->next;q->next=p;p=q;q=r;}head->next->next=NULL;head->next=p;}四、5void mergelist(Linear_list*La,Linear_list*Lb,Linear_list*&Lc){Lc=(Linear_list*)malloc(sizeof(Linear_list)); //产生C表的头结点头插法Lc->next=NULL;while(La->next!=NULL&&Lb->next!=NULL) //La、Lb均非空if(La->next->data<=Lb->next->data){p=La->next;La->next=La->next->next;insert(Lc,p);}else{p=Lb->next;Lb->next=Lb->next->next;insert(Lc,p);}while(La->next!=NULL){p=La->next;La->next=La->next->next;insert(Lc,p);}while(Lb->next!=NULL){p=Lb->next;Lb->next=Lb->next->next;insert(Lc,p);}}//O(Length(La)+Length(Lb))void insert(Linear_list*Lc,Linear_list*p){p->next=Lc->next;Lc->next=p;}//O(1)四、8void deleteFront(Link*s){Link*p=s,*q;while(p->next->next!=s)p=p->next;q=p->next;p->next=s;free(q);}习题4 四、1int symmetry(linklist*head,stack*s)//具有头结点的单链表中存放有一个字符串,每个结点的数据域存放一个字符。
软件技术基础_课后答案_周大为_西电
{
bitree*t1,*t2; if(p!=NULL) { 1=swap(p->lchild); t2=swap(p->rchild); p->lchild=t2; p->rchild=t1; } return p;
}
12、已知结点序列{21,18,37,42,65,24,19,26,45,25},
循环队列的结构类型定义:
const int m=5;
7
typedef int datatype; typedef struct { datatype sequ[m]; int rear, quelen; }qu; 说明:队满条件:sq->quelen==m 队空条件:sq->quelen==0 (注意:不需要空出一个位置) 入队: void enqueue(qu *sq, datatype x) { if(sq->quelen==m) printf("queue is full"); else { sq->quelen++; sq->rear=(sq->rear+1)%m; //修改队尾指针 sq->sequ[sq->rear]=x; } } 出队: int dequeue(qu *sq , datatype&x) { if(sq->quelen==0) { printf("queue is empty "); return 0;} else { sq->quelen--; x=sq->sequ[(sq->rear-sq->quelen+m)%m]; return 1;
四、2
(1)顺序表
电子科技大学-软件技术基础试题带标准答案
………密………封………线………以………内………答………题………无………效……一、填空题(共20分,共 10题,每空1分)1.若经常需要对线性表进行插入和删除运算,则最好采用_ 链式 _存储结构,若经常需要对线性表进行查找运算,则最好采用_ 顺序 ___存储结构。
2.在操作过程中会出现“假溢出”现象的是 顺序队列 结构,解决此问题的方法是 采用循环对列 。
3.已知一棵二叉树的顺序存储结构为 则元素G 的父结点是 D 。
4. 假定一个有向图的顶点的集合为{1,2,3,4,5,6},边的集合为{<1,2>,<1,3>,<2,5>,<3,2>,<3,4>,<4,6>,<5,1>,<5,6>},则出度为2的顶点个数为 3 ,入度为1的顶点个数为 4 。
5.二分查找算法适用于 顺序存储的 数据结构,且数据的组织应该 按查找的关键字有序 。
6. 虚拟存储方式分为: 分页存储 、 分段存储 、 段页存储 。
7. 用户通过操作系统提供的 命令接口 、 系统调用、 图形用户接口来使用计算机。
8. 文件的物理结构分为: 连续 、 链接 、 索引 。
9. 因特网是由许多 大小 不同、类型 不同的网络互连而成。
10. 有表score (stuid ,name,engish ),写出查询姓名和英语成绩的查询语句 Select name,English from score 11. 主建 二、选择题(共30分,共 30题,每题1分)1.线性表若采用链式存储结构时,要求内存中可用存储单元的地址( D ) A . 必须是连续的 B . 部分地址必须是连续的 C . 一定是不连续的 D . 连续或不连续都可以………密………封………线………以………内………答………题………无………效……2.下面哪个结构不是线性结构( B )。
A. 队列B. 图C线性表D. 栈3.一个下图所示的双链表,定义P为指针变量,则P->next->next->.prior 和P->prior->next指向的数据域的值分别是(B)A.80和20 B. 64和47 C. 64和20 D. 80和474.在一个无向图中,所有顶点的度数之和等于所有边数(C)倍。
电大《程序设计基础》机考网考纸考题库及答案
最新电大《程序设计基础》机考网考纸考题库及答案本人针对该科目汇总了该科所有的题,形成一个完整的题库,并且每年都在更新。
该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。
做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。
题库一一填空题1.世界公认的第一台通用电子数字计算机是美国宾夕法尼亚大学莫尔学院的莫奇利和埃克特领导的科研小组建造的,取名为ENLAC。
2.第一代电子计算机(1946—1958)采用的基本逻辑元件是电子管。
第二代电子计算机(1958~1964)采用的是基本逻辑元件是晶体管。
第三代电子计算机(1964~1974)采用的基本逻辑元件是半导体中小规模集成电路。
第四代电子计算机(1974年以后)采用的基本元件是大规模集成电路。
3.世界上最早的高级程序程序语言是FORTRAN。
4.计算机按照工作原理进行分类可以分为数字计算机,和模拟计算机。
5.当前计算机的最基本原理采用的是,冯`诺依曼的“存储程序原理”。
6.计算机存储器一般分为两级,它们是主存储器,和外存储器。
7.计算机系统中的软件包括,所有程序和相关的文档。
8.计算机硬件通常由5大功能部件组成,它们是:存储器,运算器,控制器,输入设备和输出设备。
9.计算机语言有3种类型,它们是:机器语言,汇编语言和高级语言。
10.高级语言源程序的翻译有两种方式,一种是解释方式,另一种是编译方式。
11.微机中常用的高级语言主要有3类:它们是:面向过程的程序设计语言,面向问题的程序设计语言和面向对象的程序设计语言。
12.程序设计过程的3个阶段是编程阶段,编译阶段和执行阶段。
13.最基本的程序控制有三种,它们是顺序执行,分支控制和循环控制。
14.C语言中分支语言是if 语句和switch 语句。
15.C语言中循环语言是while 语句,for 语句和do—while语句。
16.C语言中自增运算符是++ ,求余数的运算符号是% 。
软件技术基础第一次作业题及答案.doc
第1次作业一、单项选择题(本大题共100分,共40小题,每小题2.5分)1. 若执行以下程序段,其运行结果是()char c [[二{'a', ' b', ' \0', ' c', ' \0'} ; printf (,,%s\n ,/, c ); A. ab cB. 'a''b'C. abcD. ab2. 一个C 语言程序是由()组成A.主程序B.子程序C.函数D.过程3. 已知各变量定义如下:int i 二& a, b; double x=l. 42, y=5. 2;则以下符合C 语言语法的表达式是 ()A. a+二a -二(b 二4) * (a 二3)B. ei 二a*3二2C. x%(-3)D.(y+i )++ 4. 下列程序的输岀结果为()void main () { int &□二{1, 2, 3, 4, 5}, *p;P=a; * (p+4)+=5;printf %d\n\ *p, * (p+4)); } A. 4,10 B. 10,4 C. 1,4 D. 1, 105. 下列数据屮,属于“字符串常量”的是()A. Abcddd B. 〃3bcddd 〃 C. ,abcddd , D. <a ,6. 以下语句或语句组中,能正确进行字符串赋值的是()A. char*sp;*sp 二〃right!" B. char s[10];s 二〃right!〃 C. char s[10];*s 二〃right!〃 D. char *sp 二〃right!"7. 已知 long a=-2L ; printf (z ,%d\ n ,z , a );则有()A.赋值不合法 B. 输出值为-2 C.输出为不确定值D.输出值为2&在C 语言屮,类型名char 表示的数据类型是()A.实型B.字符型C. 整型D.双精度实型9. 判断char 型变量cl 是否小写字母的正确表达式为()A.,a<=cl<=z ,B. (cl>二'a')&&(cl 〈二'z') C. (cl>=a )&&(cl<=z ) D.(务‘〈二cl ) | | ('z'>二cl )10. 下列有关共同体说法正确的是()A.任一时刻,只有一个分量有效,其他 分量无意义B.共同体变量可以用作函数参数C.结构变量可以出现在共同体 类型中,而共同体变量不能出现在结构类型中D.在定义共同体变量时不能为 其初始化11・以下程序的输岀结果是()void main () {int x=020^ y=0x20^ z=20; 32, 16, 20 C. 16, 32, 20 D. 20, 32, 20printf 冷 * z) ; } A. 20, 20, 20 B.12.若有运算符:>、*二、==、%、sizeof,则它们按优先级(由低至高)的正确排列次序为()A. *二-> ==->>->% -> sizeof B. == -> *二->>->% -> sizeof C. *二-〉 > -〉二二-〉sizeof -> % D. *二-〉 > -〉二二 -〉% -> sizeof13.char s[]二” student”,*(s+2)的值是()A.,u,B. <d,C. “s' D. 't'14.用C语言编写的源程序,必须经过编译、连接和运行才能得到结果。
西电软件技术基础大作业
软件技术基础大作业通讯录管理的设计一、程序设计目的通过对通讯录管理链表的课程设计,加深对程序设计的理解,熟练掌握和加深c语言的基本知识和语法规范,同时更进一步地理解数据结构对单链表知识的应用。
二、实验内容设计一个含有多个菜单项的程序,菜单项内容如下:1.通讯链表的建立2.通讯者结点的插入3.通讯者结点的查询4.通讯者结点的删除5.通讯录链表的输出0.退出管理系统三、算法分析首先,应运用c语言中结构体的知识。
把通讯者的各项信息储存到结构体的链表中,定义一个新的结构体类型struct(struct是声明结构体时所必须使用的关键字)它向编译系统声明这是一个“结构体类型”,它包括num, name ,phone 等不同类型的数据项。
其次运用数据结构中线性表的知识。
线性表的存储结构分为线性表的线性存储结构和线性表的链式存储结构,线性表的顺序存储结构是指用一组地址连续的存储单元一次存储线性表的数据元素。
线性表的链式存储结构则是通过指针反映元素之间的关系,不要求逻辑上相邻的元素在物理位置上也相邻,所以该方法可以克服顺序表的一些缺点。
所以本次应运用线性链表的链式存储结构。
线性链表的链式存储结构又分为单链表、循环链表和双链表,本次运用单链表的知识。
四、模块分析1. 通讯链表的建立建立单链表有两种方法,头插入法和尾插入法。
头插入法是将每次新插入的结点插入在链表的表头,而尾插入法是将新插入的结点插入到链表的表尾。
在这个通讯录的建立中将采用尾插入法建立链表。
2. 链表的插入链表结点的插入是要求将一个通讯录数据结点按其编号的顺序插入有序通讯录表的相应位置,以保持其有序性。
使用两个指针变量分别指向刚访问的结点和下一个结点,寻找插入结点的位置,其中一个指向待插入位置的前一个结点。
3. 链表的查询首先输入要查找的通讯录的编号或姓名,从表头顺序访问表中结点,查找成功则返回指向查找的通讯者信息的结点,否则返回一个空的指针。
4. 单链表的删除输入要查找的通讯录的编号或者姓名,从表头顺序访问表中结点,查找成功则返回指向查找的通讯者信息的结点,删除结点即可。
西电软计技术上机
西安电子科技大学机电工程学院软件技术大作业任课老师许威上机报告一、上机目的1.熟悉线性表,链表,队列,二叉树等数据结构2.学习利用C语言实现多种数据结构的建立和多种操作(插入,删除等)3.在编程过程中学习程序的调试方式二、上机内容一共完成5题——1,2,4,5,61题:设有一个由正整数组成的无序单链表,编写完成下列功能的算法:①找出最小值结点,且打印该数值;②若该数值是奇数,则将其与直接后继结点的数值交换;③若该数值是偶数,则将其直接后继结点删除。
2题:编一程序:①建立一个数据域为1至10的带头结点的链表;②将此链表就地逆转。
4题:某百货公司仓库中有一批电视机,试按价格从高到底的次序建立一个循环链表,每个结点有价格、数量和指针三个域。
现新到10台价格为4000元的电视机,修改原链表并输出修改后链表的所有内容。
5题:假设称正读反读都相同的字符序列为回文。
例如,‘abba’,‘abcba’都是回文,‘ababab’不是回文,试编写程序判别从标准输入读入的以’@’为结束符的字符序列是否是回文。
6题:试设计一个程序,求二叉树的结点数目和叶子结点数目。
三、设计说明1题1)用带头结点的单链表是实现2)结点声明typedef struct node{int data;struct node *next;}linklist3)共定义了5个函数CREAT——建立单链表函数DELETE——删除结点函数SEARCH——查找数据域最小的结点函数基本思想:定义两个指针,其中s指针始终记录值较小的结点,并与p所指结点比较,直到将整个链表比较完毕。
EXCHANGE ——交换结点值函数PRINT——打印单链表,显示结点数据值函数4)输入说明:以为单链表由正整数组成,所以以输入0为输入结束标志。
2题1)用带头结点的单链表实现2)共定义了3个函数CREAT——建立单链表REVERSE——将单链表逆置基本思想:有3个指针r,s。
r指向单链表尾部,s指向单链表头部,s为用于交换结点数据值的中间量。
计算机软件技术基础(第三版)课后习题答案较全
计算机软件技术基础(第三版)课后习题答案较全第一章信息与计算机1.1 什么是信息?信息与数据的区别和联系在何处?信息定义之一:信息是现实世界中存在的客观实体、现象、关系进行描述的数据。
信息定义之二:信息是经过加工后并对实体的行为产生影响的数据。
与数据的区别和联系:数据定义:数据是现实世界客观存在的实体或事物的属性值,即指人们听到的事实和看到的景象。
我们把这些数据收集起来,经过处理后,即得到人们需要的信息。
信息和数据的关系可以归结为:1. 信息是有一定含义的数据。
2. 信息是经过加工(处理)后的数据。
3. 信息是对决策有价值的数据。
1.2 信息有哪些基本属性?信息的基本属性有: 1. 事实性。
2. 等级性。
3. 可压缩性。
4. 可扩散性。
5. 可传输性。
6. 共享性。
7. 增值性和再生性。
8. 转换性。
1.3 计算机的主要特点是什么?计算机最主要的特点是: 1. 高速自动的操作功能。
2. 具有记忆的能力。
3. 可以进行各种逻辑判断。
4. 精确高速的计算能力。
1.5 完整的计算机系统应该包括哪几部分?目前最完整的计算机系统学说认为由五部分组成: 1. 人员 2. 数据3. 设备 4. 程序 5. 规程1.6 什么是计算机硬件?什么是计算机软件?硬件:泛指实际存在的物理设备,包括计算机本身及其外围设备。
微型计算机的硬件系统:主机、外存储器、输入设备、输出设备、微机的系统总线。
软件:是指计算机程序、方法、规则的文档以及在计算机上运行它时所必须的数据。
计算机软件一般分为系统软件和应用软件。
1.8 软件技术发展的几个阶段各有什么特点?它与硬件的关系如何?第一阶段:高级语言阶段特点:这一时期,编译技术代表了整个软件技术,软件工作者追求的主要目的是设计和实现在控制结构和数据结构方面表现能力强的高级语言。
但在这一时期内,编译系统主要是靠手工编制,自动化程度很低。
硬件关系:此时期计算机的硬件要求仅能用机器指令来编制可运行的程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.若在矩阵Am×n中存在一个元素A[i][j],其满足A[i][j]是第i行元素中最小值,且又是第j列元素中最大值,则称此元素为该矩阵的一个马鞍点。用二维数组存储矩阵Am×n,设计算法求出矩阵中所有马鞍点。(文件夹:找马鞍点)
2.A和B是两个n×n阶的对称矩阵,以行为主序输入对称矩阵的下三角元素,压缩存储存入一维数组A和B,编写一个算法计算对称矩阵A和B的乘积,结果存入二维数组C。(文件夹:对称矩阵相乘)
2.采用二叉链表结构存储一棵二叉树,编写一个算法统计该二叉树中结点总数及叶子结点总数。(文件夹:统计二叉树结点)
实验六图
一、实验目的
1.熟悉图的邻接矩阵和邻接表的存储结构
2.熟悉图的邻接矩阵和邻接表的建立算法
实验五树
一、实验目的
1.熟悉二叉树的链式存储结构
2.掌握二叉树的建立、深度优先递归遍历等算法
3.能够利用遍历算法实现一些应用
二、实验内容
1.已知二叉树采用二叉链表存储结构,如果左、右子树非空,且左子树根结点大于右子树根结点,则交换根结点的左、右子树。即按要求交换二叉树及子树的左、右子树。(文件夹:交换左右子树)
二、实验内容
1.串采用顺序存储结构,编写朴素模式匹配算法,查找在串中是否存在给定的子串。(文件夹:模式匹配)
思路6:朴素模式匹配对于字串和子串逐个字符进行匹配,在某一位置如果该字符与子串中的字符不相等时,那么进行回溯,子串到开始位置,字串到下一位置重新开始遍历,直到遍历结束,判断在该字串中是否存在给定的子串。
思路1:对于顺序表,使用一个结构体,结构体中包含一个数组,来储存顺序表里的信息,同时还有一个表示位置的变量来储存该顺序表的当前位置,便于循环遍历,在交换的时候,其本质上只是使得该顺序表上的DATA实现逆序,在顺序表中等于对于数组的内容实现交换逆序。
思路2:对于线性表,使用结构体,包含data,用来储存线性表里该节点的信息,同时还有一个nest指针用于指向下一个节点,在计算机内部根据地址指向实现一个链表结构,当实现该线性表逆序的时候,我们先对该线性表进行循环遍历得到该线性表中节点的个数,然后从头开始遍历把线性表中每个节点的data都存储在一个数组里面,对于数组中的元素实现逆序交换,得到一个逆序后的数组然后循环遍历线性表对于线性表的每一个元素逐个重新赋值,实现线性表的逆置。
实验二栈和队列
一、实验目的
1.熟悉栈和队列的顺序和链式存储结构
2.掌握栈和队列的基本运算
3.能够利用栈和队列的基本运算完成栈和队列应用的运算
二、实验内容
1.设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)(文件夹:判字符串中心对称)
思路5:队列的入操作是从尾部,出操作仕从头部,当入队列时,用数组存放循环队列的元素,需要判断当对尾越过数组上界时,需要变成数组的下界,当出队列时,从队列头部开始,根据队尾部和队列长度得到队列的头部,同时考虑越过数组下界的问题,从而改变成数组的上界。
实验三串
一、实验目的
1.熟悉串的顺序存储结构
2.掌握串的基本运算及应用
3.能够利用线性表的基本运算完成线性表应用的运算
二、实验ห้องสมุดไป่ตู้容
1.设有一个线性表E={e1, e2,…, en-1, en},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ en, en-1,…, e2, e1},要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。(文件夹:顺序表逆置、单链表逆置)
思路4:设置一个栈结果,将单链表中的元素逐个添加到栈中,入栈操作,栈有先进后出的特点,因此栈底元素对应链表的第一个元素,栈顶元素对应链表的最后一个元素,刚好是链表的逆置,不断的出栈得到当前的栈顶元素与链表对应的元素进行比较,如果有一俩个值不相等的话,那么就可以判断该字符串是否具有中心对称关系。
2.假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen分别指示循环队列中队尾元素的位置和内含元素的个数。编写实现该循环队列的入队和出队操作的算法。提示:队空的条件:sq->quelen==0;队满的条件:sq->quelen==m。(文件夹:循环队列)
2.已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。(文件夹:分解单链表)
思路3:根据每个对应的字符的值进行判断,如果该字符的值在“a”-“z”或者在“A”-“Z”之间的话,那么就插入字符循环链表中,如果在“0”-“9”之间,就插入到数字循环链表中,如果都不是,就插入到other循环链表中,对于单链表中的每一个节点逐个判断。
思路7:调用字符串函数在第i个字符删除,定义一个临时变量temp,先将S中的0至i-1字符全部复制到temp中,然后衔接i+m-1之后的字符串全部复制到temp中,最后将temp的值重新复制到S中。
实验四数组
一、实验目的
1.熟悉数组的结构
2.掌握矩阵的压缩存储
3.能够对数组和矩阵的压缩存储进行运算
二、实验内容
说明
每个实验题目含有一个main函数和一些函数,与实验题目相关的基本运算的函数定义和main函数定义的代码在附录以及对应的文件夹中给出,供上机实验参考使用。对于每个题目,只需要根据题目要求设计算法,补充函数定义,然后对程序进行编译、调试。
实验一线性表
一、实验目的
1.熟悉线性表的顺序和链式存储结构
2.掌握线性表的基本运算