《计算机软件基础》强化实践能力培养实践部分考核作业(1)说课材料.doc
《《计算机软件基础》强化实践能力培养实践部分考核作业(1)说课材料.doc》由会员分享,可在线阅读,更多相关《《计算机软件基础》强化实践能力培养实践部分考核作业(1)说课材料.doc(13页珍藏版)》请在咨信网上搜索。
《计算机软件基础》强化实践能力培养实践部分考核作业(1) 精品文档 《计算机软件基础》强化实践能力培养实践部分考核作业 强化实践能力培养的考核要求: 要求学生通过对本课程中所学知识的归纳、总结,能够体会数据结构的思想和方法,考生发挥自主学习精神,能独立完成实验要求,并提交实验报告。 实验报告的基本要求如下: (1)题目 (2)实验环境 (3)实验内容与完成情况:陈述程序设计的任务和程序所能够达到的功能,提交带有注释的源程序清单。 (4)调试分析: 1)调试过程中所遇到的问题及解决的方法; 2)算法的时间和空间复杂度分析(数据结构部分); 3)经验和体会:列出遇到的问题和解决办法及没有解决的问题。 (5)测试结果:列出使用典型的数据输入用例所产生的输出结果。 强化实践能力培养的考核内容: (1) 编程实现计算器。(10分) 要求:输入:两个操作数和一个操作符的数学表达式.; 输出:输入的表达式和结果。 (2)利用栈的存储结构,编程实现任意表达式中各种括号(“(、)”,“[、]”,“{、}”)交叉使用时,语法的匹配是否合法判定。(10分) (3)排序:实现冒泡排序、直接插入排序和直接选择排序的算法。(10分) 要求:手写。 山东大学《计算机软件基础》强化实践能力培养实践部分考核作业 课程名称: 试点学校名称(章): 学生姓名: 学生准考证号码: 收集于网络,如有侵权请联系管理员删除 实验一 计算器 1.实验环境:VC++6.0 ,WindowsXp 2.实验目的:熟悉VC++6.0环境; 掌握C语言编程基本思想; 掌握基本操作符的使用; 掌握基本输入输出语句; 3.程序清单: #include "stdio.h" main() { float a,b,output; char op; printf("please input two numbers and operator\n"); scanf("%f%f\n",&a,&b); scanf("%c",&op); switch(op) { case '+':output=a+b;break; case '-':output=a-b;break; case '*':output=a*b;break; case '/':output=(float)a/b;break; default:printf("wrong operator\n"); return 0; } printf("%5.2f%c%5.2f=%5.2f\n",a,op,b,output); } 4.时间复杂度: O(n) 5.空间复杂度: O(1) 6.测试结果: 实验二 栈在判断括号匹配中的应用 1.实验环境:VC++6.0 ,WindowsXp 2.实验目的:1.掌握顺序栈的类型定义方法。。 2.掌握栈先进后出运算原则在解决实际问题中的应用 3.掌握使用栈的原理来解决表达式中的括号配对问题。 3.程序清单: #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX_STACK_SIZE 100 typedef struct SqStack{ char data; struct SqStack *next; }SqStack;//链元素 typedef struct Stack{ struct SqStack *base; //栈底指针 struct SqStack *top; //栈顶指针 }Stack;//栈 Stack S; int a,Aj=0;//全局变量 char string[100]; typedef struct node{ char key; }element_tr;//运算符栈 typedef struct Node{ int data; }element_nd;//操作数元素 void creatstack(Stack &S) { S.top=S.base=NULL; }//建立初始化链栈 void push(Stack &S,char e) { SqStack* Q; Q=(SqStack*)malloc(sizeof(SqStack)); Q->next=S.top; S.top=Q; S.top->data=e; ++Aj; }//左括号入栈 char Pop(Stack &S) { char e; SqStack *q; e=S.top->data; q=S.top->next; free(S.top); S.top=q; return e; }//括号出栈 int check( ) { a=1,Aj=0; int w=0; char sh,ch,*st,*stt; printf("请输入算术表达式并以"="结束输入:\n"); scanf("%s",string); getchar(); st=stt=string; ch=*st; sh=*++stt; while(ch!='=') { if(w==0) if(ch==']'||ch=='}'||ch==')') {a=-1; Aj=1;} if((ch=='['||ch=='('||ch=='{')&&(sh=='=')) {a=-1; Aj++; break;} if(a==-1) break; w++; if(ch=='['||ch=='('||ch=='{'||ch==']'||ch=='}'||ch==')')//判断是否满足入栈和出栈条件 switch(ch) { case '[': { push(S,ch); break;} case '{': { push(S,ch); break;} case '(': { push(S,ch); break;}//左括号入栈 case ']': if(Pop(S)!='[') {a=-1; Aj++; break;} else { Aj++; break;} case ')': if( Pop(S)!='(') {a=-1; Aj++; break;} else {Aj++; break;} case '}': if( Pop(S)!='{') { a=-1; Aj++; break;} else {Aj++; break;} }//出栈并与字符ch匹配比较 ch=*(++st); sh=*(++stt); if((S.base==S.top)&&(ch==']'||ch=='}'||ch==')')) { a=-1; Aj++;} if(a==-1) break;} if(S.base!=S.top) a=-1; return a; } void main()//主函数 { int st; char w='y'; printf("\n*******括号配对判别********\n"); LL :while(w!='n'&&w!='N') { creatstack(S); st=check(); if(st==-1) { printf("表达式中第( %d )个括号与对应括号不匹配,请重新输入\n",Aj); goto LL;} else {printf("表达式中括号匹配\n"); } printf("继续请输入"y",退出请输入"n"!\n"); w=getchar(); getchar(); } printf("********谢谢使用本系统!********\n"); } 4.实验分析:算术表达式中各种括号的使用规则为:出现左括号,必有相应的右括号与之匹配,并且每对括号之间可以嵌套,但不能出现交叉情况。我们可以利用一个栈结构保存每个出现的左括号,当遇到右括号时,从栈中弹出左括号,检验匹配情况。 4.1括号不匹配的情况: 在检验过程中,若遇到以下几种情况之一,就可以得出括号不匹配的结论。 (1)当遇到某一个右括号时,栈已空,说明到目前为止,右括号多于左括号; (2)从栈中弹出的左括号与当前检验的右括号类型不同,说明出现了括号交叉情况; (3)算术表达式输入完毕,但栈中还有没有匹配的左括号,说明左括号多于右括号。 4.2括号匹配的情况 表达式中允许含有三种括号,括号对之间允许嵌套,本实验编写一个程序判断从键盘输入的任意表达式中括号是否配对,括号不配对包括以下几种情况: (1)左括号多余 (2)右括号多余 (3)左右括号不匹配,如左圆括号对着的是右方括号等。 5.运行结果: 1.表达式中括号匹配: 2.表达式中括号不匹配: 实验三 排序算法 一、实验题目:冒泡排序、直接插入排序和直接选择排序的算法。 二、实验环境:windowXP、VC++6.0 三、实验目的:通过编程熟练掌握实现冒泡排序、直接插入排序和直接选择排序的算法。 四:程序清单: 1. 冒泡排序: void bubble_sort(int *x, int n) { int j, k, h, t; for (h=n-1; h>0; h=k) /*循环到没有比较范围*/ { for (j=0, k=0; j <h; j++) /*每次预置k=0,循环扫描后更新k*/ { if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/ { t = *(x+j); *(x+j) = *(x+j+1); *(x+j+1) = t; /*完成交换*/ k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/ } } } } 冒泡排序算法分析: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。时间复杂度:算法时间复杂度O(n2) 2. 直接插入排序: void insert_sort(int *x, int n) { int i, j, t; for (i=1; i <n; i++) /*要选择的次数:1~n-1共n-1次*/ { /* 暂存下标为i的数。注意:下标从1开始,原因就是开始时 第一个数即下标为0的数,前面没有任何数,单单一个,认为 它是排好顺序的。 */ t=*(x+i); for (j=i-1; j>=0 && t <*(x+j); j--) /*注意:j=i-1,j--,这里就是下标为i的数,在它前面有序列中找插入位置。*/ { *(x+j+1) = *(x+j); /*如果满足条件就往后挪。最坏的情况就是t比下标为0的数都小,它要放在最前面,j==-1,退出循环*/ } *(x+j+1) = t; /*找到下标为i的数的放置位置*/ } } 直接插入排序算法分析:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。 直接插入排序是稳定的。算法时间复杂度O(n2) 3. 直接选择排序: void SelectSort(ElemType A[], int n) { int i, j, k; ElemType x; for ( i=0; i<=n-2; i++ ) { //每一趟选择最小元素并与A[i]交换 k=i; for (j=i+1; j<=n-1; j++) //查找最小元素的下标 if (A[j].stn <A[k].stn ) k=j; if (k!=i) { //交换 x=A[i]; A[i]=A[k]; A[k]=x; } } } 直接选择排序算法分析:也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。直接选择排序的时间复杂度为 O(n2)- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件基础 计算机软件 基础 强化 实践 能力 培养 部分 考核 作业 材料
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文