软件技术基础上机作业
《软件技术基础》上机实验报告实验一:指针和结构体部分1.从键盘上输入10个整数,将其中最小的数与第一个数交换,把最大的数与最后一个数交换,并将交换之后的序列打印出来。
(提示:用指针实现,参考教材习题10.3)#include<stdio.h>void swap (int *k1,int *k2);int main(){int num[10],i,*min, *max,min_num=0,max_num=0;printf("请输入十个整数:");for (i=0; i<10 ; i++)scanf("%d",&num[i]);min = max = &num[0];printf("原始序列为:\n",num[i]);for(i=0;i<10;i++)printf("%2d",num[i]);printf("\n");for (i=1; i<10 ; i++){if (num[i]<*min) {min = &num[i];min_num = i;}if (num[i]>*max) {max = &num[i];max_num = i;}}swap(min,&num[0]);if (max_num == 0){if (min_num == 9);elseswap(min,&num[9]);}else swap(max,&num[9]);if (min_num == 9);printf("交换后的序列为:\n");for (i=0; i<10 ; i++)printf("%d ",num[i]);}void swap (int *k1,int *k2){int a;a = *k1;*k1 = *k2;*k2 = a;}2.要求在主函数输入一串文字,并编写一个函数计算该文字串中的大写字母,小写字母,数字以及其它字符的个数,并在主函数中将文字串和以上计算结果打印出来。
参考教材习题10.8#include<stdio.h>int main(){int upper=0,lower=0,num=0,other=0,i=0;char *p,s[200];printf("请输入字符串:");while((s[i]=getchar())!='\n')i++;p=&s[0];while(*p!='\n'){if (('A' <= *p)&&(*p<= 'Z'))upper++;else if (('a' <= *p)&&(*p <= 'z'))lower++;else if (('0' <= *p)&&(*p <= '9'))num++;elseother++;p ++;}printf("%d个大写字母,%d个小写字母,%d个数字,%d个其它字符\n",upper,lower,num,other);return 0;}3.已知一个班有10名同学英语考试成绩为{88.5,76, 83.5,92,96.5,80,62,85.5,74,87.5},平时成绩为{4.0,3.5,4.5,2.0, 3.0,3.5,4.0,2.5,3.5,4.0},主函数中用C的指针分配函数:malloc()分配两块连续的存储单元存放以上的考试成绩和平时成绩,用一个函数计算该班同学的考试平均成绩和各同学的最终成绩(考试成绩+平时成绩),在主函数中将以上计算结果打印出来。
#include <stdio.h>#include <stdlib.h>float count(float *mark,float *weekday);float mark_0[10] = {88.5,76,83.5,92,96.5,80,62,85.5,74,87.5};float weekday_0[10] = {4.0,3.5,4.5,2.0,3.0,3.5,4.0,2.5,3.5,4.0};int main(){float *mark = NULL;float *weekday = NULL;int i = 0;if (malloc(sizeof(float) * 20) == NULL) exit(1);else{mark = (float *)malloc(sizeof(float) * 10);weekday = (float *)malloc(sizeof(float) * 10);}mark = mark_0;weekday = weekday_0;printf("最终成绩是:\n");for (i = 0 ;i<10;i++)printf("%6.2f",count(mark++,weekday++));}float count(float *mark,float *weekday){return (*mark + *weekday);}4.编写一个函数input,输入学生的成绩,包含3个学生的数据即学号(num),姓名(name)和三科成绩score[3]。
再编写一个函数print,打印学生的信息。
编写一个主函数实现学生成绩的输入和输出。
#include <stdio.h>#include <stdlib.h>struct Students{int num;char name[10];int score[3];};void input (struct Students *address);void print (struct Students student[5],int used);int main(){int diff;struct Students student[5];struct Students *address;int used = 0;while(1){printf("1请输入学生信息\n2请输出学生成绩\n3退出\n请输入要执行的编号:");scanf("%d",&diff);if (diff == 3) break;switch (diff){case 1 : if(used>4) {printf("已达到5个的输入上限!\n\n");break;}address = &student[used++];input(address);break;case 2 : if(used<1) {printf("还未输入任何数据!\n\n");break;}printf("\n");print(student,used-1);printf("\n\n");break;}}return 0;}void input (struct Students *address){int i;printf("学号:");scanf("%d",&address->num);printf("姓名:");scanf("%s",&address->name);printf("成绩:");for (i = 0; i<3 ; i++) scanf("%d",&address->score[i]);}void print (struct Students student[5],int used){int i;if (used != 0) print(student,used-1);printf("学号:%d",student[used].num);printf("\n姓名:%s",student[used].name);printf("\n成绩(三个):");for (i = 0; i<3 ; i++) printf("%d",student[used].score[i]);}实验二、顺序表的相关操作1.有序的一组整数,1-2-3-4-6-5-9-19设计顺序表并实现以下操作:A.初始化线性表;B.添加上述一组数;C.删除第四个数据元素; D.显示B,C操作后的结果。
#include<stdio.h>#define N 20typedef struct list_type{int date[N];int num;}list;list a;void chushihua(list *l){l->num=0;}int list1(list *l,int i,int x){if(l->num>=N){printf("the list is full");return(0);}if((i<0)||(i>l->num)){printf("i is invalid value");return(0);}l->date[i]=x;l->num++;return(1);}int shanchu(list *l, int i){int j;if((i<0)||(i>l->num-1)) {printf("not exist");}for(j=i;j<l->num;j++)l->date[j-1]=l->date[j];l->num--;return(1);}int main(){int d,k[8];list *w;printf("请输入列表\n");for(d=0;d<8;d++)scanf("%d",&k[d]);w=&a;chushihua(w);for(d=0;d<8;d++){list1(w,d,k[d]);}shanchu(w,4);for(d=0;d<7;d++)printf("%d ",w->date[d]);}2、教材P74页,习题9。
《软件技术基础》实验指导书_实验三、四
《软件技术基础》实验指导书电子商务教研室2009年9月实验三队列的应用◆实验目的与基本要求1、掌握队列的顺序存储和链式存储结构。
2、掌握队列的特点。
3、掌握队列的基本运算。
◆实验条件1、硬件:一台微机2、软件:操作系统和C语言系统◆实验方法确定存储结构后,上机调试实现队列的基本运算。
◆实验内容1、写出队列的出队和入队算法。
2、设有一个可以停放n辆汽车的狭长停车场,它只有一个大门可以供车辆进出。
车辆按到达停车场时间的早晚,依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。
如果停车场已停放n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。
停车场内如有某辆车要开走,在它之后进入停车场的车都必须先退出停车场为它让路,待其开出停车场后,这些车辆再依原来的次序进场。
每辆车在离开停车场时,都应根据它在停车场内停留的时间长短交费。
如果停留在便道上的车未进停车场要离去,允许其离去,不收停车费,并且仍然保持在便道上等待的车辆次序。
编制一个程序模拟该停车场的管理。
◆性质:必做◆类型:验证◆2h队列是从日常排队现象抽象出来的一种数学模型。
当然数据结构中的队列远没有生活中的排队灵活。
数据结构中的队列规定:数据只能从队尾进,从队首出来。
已经进入队列的数据次序不能再做改变。
这就叫做“先进先出”(FIFO)或者说“后进后出”(LILO)。
允许插入的一端称为队尾,通常用一个称为尾指针(rear)的指针指向队尾元素,即尾指针总是指向最后被插入的元素;允许删除的一端称为队首,通常也用一个队首指针(front)指向队首元素的前一个位置(当然也可以直接指向队首元素,只是许多数据结构的书上都习惯这么定义)。
与队列类似,我们可以用一维数组来模拟队列这种数据结构,也可以用链表来模拟。
根据以上描述,队列可以可以有以下基本操作:1、创建初始化:按约定置队列为空状态。
计算机软件技术基础实验报告
《计算机软件技术基础》实验报告专业_____________年级_____________学号_____________学生姓名_____________指导老师_____________南华大学计算机学院编I 实验要求1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。
2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。
3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。
4.上机结束后,应整理出实验报告。
书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。
实验一线性表【实验目的】1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。
2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。
3.熟练掌握线性表的综合应用问题。
【实验内容】必做:1.一个线性表有n个元素(n<MAXSIZE, MAXSIZE指线性表的最大长度),且递增有序。
(1)现有一元素x要插入到线性表的适当位置上,并保持线性表原有的顺序不变。
采用链式存储表示方法实现,设计程序实现(2)从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。
要求:①指定的值x由键盘输入;②程序能处理空链表的情况。
选做:3.设有头结点的单链表,编程对表中的作一值只保留一个结点,删除其余值相同的结点。
要求:①该算法用函数(非主函数)实现;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。
4.已知非空单链表第一个结点由head指出,请写一算法,交换p所指结点与其下一个结点在链表中的位置。
要求:①该算法用函数Reverse(head,p)实现,其中head为表头指针,p指向要交换的结点;②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。
软件上机作业
实验二:链表(续)
ex2_2:
1)创建一个单链表,其数据元素为整数,从键盘输 入,输入0结束(注意0不放到链表内); 2)从键盘任意输入一个整数,在单链表中查询该数, 如果单链表中已经存在这个数,就调用删除函数,删 除该元素所在结点,并将单链表在删除前后的数据元 素依次输出到屏幕上; 如果单链表中不存在这个数,就调用插入函数,将这 个数插入到单链表尾,并将单链表在插入前后的数据 元素依次输出到屏幕上。
提示:创建顺序表函数 /*create a list:input data from keyboard,end by -1*/ void createlist(list_type *lp) { int i, elem; lp->length=0; printf("\nplease input datas of the list\n"); for(i=0; i< MAXNUM; i++) { scanf(" %d", &elem); if(elem== -1) break; lp->data[i]=elem; lp->length++; } }
提示:插入函数,成功返回true,反之返回false。
int insertlist(list_type *lp, int new_elem, int i) { int j; if(lp->length>=MAXNUM) { printf("the list is full,can not insert."); return(false); } if(i<1 || i>lp->length+1) { printf("\n%d is invalid value",i); return(false); } for(j=lp->length-1; j>=i-1; j--) lp->data[j+1]=lp->data[j]; lp->data[i-1]=new_elem; lp->length++; return(true); }
计算机软件技术基础上机编程-推荐下载
上机题一:线性表
1. 建立单向链表;表长任意;
2. 可交互输出单链表中的内容;
3. 编写算法计算出自己所建单链表的长度并输出;
4. 输出自己所建立单链表中的第 K 个结点,并将剩余结点输出;
5. 将单链表倒排并输出结果
#include<stdio.h> #include<malloc.h> typedef int datatype; typedef struct node { datatype data;
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
软件技术基础课程上机作业
实习一、编写程序解决下列问题:1、楼梯有n级台阶,上楼时可以一步上1阶,也可以一步上2阶,编写程序计算共有多少种不同的上楼梯的方法。
2、任给十进制的正整数,请从高位到低位逐位输出各位数字。
3、求a+a2+a3+…+a n之值,其中a是一个数字,n表示a的位数,如:2+22+23+24+25(此时n=5),a、n由键盘输入。
实习二、线性表(顺序存储)及其应用(分四个实验)实习目的:掌握顺序表的建立及基本操作。
问题:建立一个顺序表,表中元素为学生,每个学生信息包含姓名、学号和成绩三部分,对该表实现:①输出、②插入、③删除、④查找功能,并计算出平均成绩和总成绩。
实习三、栈的应用(选做)实习目的:掌握栈的特点及其基本运算,用栈解决一个应用问题。
问题:判断一个数是否是回文(如:123456654321和123404321是回文数)基本要求:利用栈结构实现判断,任输入一个数,判断它是否是回文数,并输出判断结果。
实习四、线性表(链式存储)及其应用(分四个实验)实习目的:掌握链式存储结构下线性表的建立及基本操作。
问题:建立一个采用链式存储的线性表,表中元素为学生,每个学生信息包含姓名、学号和成绩三部分,对该表实现:①输出、②查找、③插入、④删除功能,并计算出平均成绩和总成绩。
实习五、线性链表的应用(选做)实习目的:在实习三的基础上,用线性链表解决一个应用问题。
问题:约瑟夫问题(Joseph)的求解。
问题描述:n只猴子要选大王,选举方法是:所有猴子按1、2、3、……、n编号顺时针方向围坐一圈,从第1号开始按1、2、3、……、m报数,凡报到m号的退出圈外,如此循环报数,直到圈内剩下一只猴子时,这只猴子就是大王。
试设计一个C程序,输出猴子出列顺序。
基本要求:利用单循环链表存储结构模拟此过程,n和m值由键盘输入,按照出列的顺序打印各个猴子的编号。
实验报告要求:上机前必须先写出实验预习报告(程序),上机过程中记录程序调试过程,程序调试正确后打印出正确的程序清单并附上程序运行结果,并进行本次实验的分析总结。
大连理工大学软件学院编译第五次上机作业属性计算1
编译技术第5次上机内容
目的:充分理解语义分析的方法及相关语义计算的执行时机,用C++程序实现。
要求:
1.以S属性的语法制导定义为基础,将下表的语义规则嵌套在语法分析的过程中,即实现语法制导的翻译过程。
2.以语法分析部分的两次上机结果为基础,添加语义分析部分。
即以LL(1)文法或者LR文法为基础。
当产生式完全推导出来或者归约时执行对应的语义动作。
3.输入:
5+3+8*2
输出:24
4.若输入有误,如:3**2(4+5)
则应提示:*后面缺少运算对象,
2后面缺少运算符,
请重新输入!
5.由于输入串是具体的数值,因此应调用相应的词法分析的功能。
扩展:
1.对浮点数也能完成上述的操作。
2.增加减法和除法对应的产生式,并能计算其语义结果。
3.在FTP中第五次上机的文件夹中有两个压缩包,用递归下降法实现的程序在压缩包“recursion_calculator.rar”中,用非递归的预测分析方法实现的程
序在压缩包“predict_calculator.rar”中。
可以任选其一作为基础进行改进。
将其改造成有减法和除法的程序,并写出对应的产生式。
计算机软件技术基础作业1
在面向对象的程序设计中,可被对象识别的动作称为( )。
B A.方法 B.事件 C.过程 D.函数如果窗体上的标签控件是激活的,现在要对窗体进行属性设置,则(),然后在属窗口中进行设置。
A A.单击标签控件 B.双击标签控件 C.在窗体上的空白处单击 D.在窗体上的空白处双击要存放一个人的年龄数据,使用下面的()数据类型占用的字节数最少。
A A.Short B.Byte C.Integer D.Long日期型数据常量的格式是()。
A A.#mm/dd/yyyy# B. mm-dd-yyyy C. mm&dd&yyyy D. mm/dd/yyyy在设计阶段,双击窗体Form1的空白处,打开代码窗口,显示下面哪个事件过程()。
C A.Form1_Click B.Form1_Enter C.Form1_Load D.Form1_MouseEnter在IDE环境中,进行窗体和控件的属性设置,可以在()中进行操作。
B A.解决方案资源管理器 B.属性窗口 C.工具箱 D.IDE菜单一个简单的VB窗体应用程序被设计后,肯定有()文件。
A A.窗体文件和项目文件 B.模块文件和文本文件 C.窗体文件和模块文件 D.窗体文件和文本文件一个简单的VB控制台应用程序被设计后,肯定有()文件。
D A.窗体文件和项目文件 B.模块文件和文本文件 C.窗体文件和模块文件 D.模块文件和项目文件假定已在窗体上画了多个控件,其中有一个被选中,为了在属性窗口中设置窗体的属性,预先应执行的操作是( )。
A A.单击窗体上没有控件的地方 B.单击任意一个控件 C.双击任意一个控件 D.单击属性窗口的标题栏下列哪个数据是常量()A A.517.3 B.Step C.X D.Xname下面的()是合法的变量名。
A A.X_yz B.123abc C.Integer D.X-Y下面的()是合法的单精度型变量。
A A.num! B.sum% C.xinte$ D.mm#下列选项中,()不是基本数据类型。
西电软件技术基础大作业
西电软件技术基础大作业现有若干学生的学籍档案信息,要求编写一个应用软件实现对其进行日常管理,以实现学生档案信息的插入和删除,并能根据学号查询.#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');}。
软件技术基础作业
[键入文字] [键入文字] [键入文字]名同学,对于任何一位同学的提问次数不可超过3次。
如果所有的同学都被提问了3次,则次数归0,重新开始。
学生信息应事先保存到文件myfile.dat中。
假设学生共有4人,名单如下:20013011001 A 20013011002 B20013011003 C 20013011004 D所谓点名,是指计算器将某位同学的姓名和学号打印到屏幕上,则表示该同学被点名1次。
要求:程序质量:●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●用户界面中的菜单至少应包括“开始点名”、“显示所有同学点名情况”、“保存点名”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
一、需求分析经过对程序设计题目的分析得知,整个程序的设计实现分为四个模块,其中每一个模块对应一个函数,他们的功能分别是:教师开始点名函数(start call()),显示点名情况函数(show info ()),保存点名记录函数(save()),退出点名系统函数(quit(0))。
所有函数的实现严格按照题目的要求。
1、教师开始点名函数实现的功能是随机抽取结构体数组里的一个学生信息,并打印到计算机屏幕上,称之为一次点名,连续调用就是多次随机点名。
2、显示点名情况函数实现的功能是将学生学号和姓名连同被点到的次数打印到屏幕上;3、保存点名记录函数实现的功能是将点名完毕后的信息存储起来。
4、退出点名系统函数该函数实现的功能是结束本次点名,退出点名系统;每一个学生信息都包含其学号、姓名,以及被点到的次数(其初值为0),学生信息的类型定义为结构体数组类型,系统刚开始调用的学生信息均来自于D:\\myfile.dat.二、程序流程1.程序总体框图图1. 程序总体框图2、具体功能框图(1)教师开始点名函数start call();图2. 教师开始点名函数start() (2)显示点名情况函数show info ();(3)保存点名记录函数save();(4)退出点名系统函数quit();此函数为c语言标准库函数,只需在源程序开头加一个#include<conio.h>申明即可调用。
电子科技大学软件技术基础实验报告5
电子科技大学通信与信息工程学院标准实验报告(实验)课程名称软件技术基础实验电子科技大学教务处制表电子科技大学实验报告一、实验室名称:校公共机房二、实验项目名称:查找与排序三、实验学时:4学时四、实验原理:使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。
通过上机练习掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法排序、快速排序等方法、过程和实际应用。
五、实验目的:1.熟练掌握顺序查找、二分查找函数、简单选择法、直接插入法、冒泡法排序、快速排序等算法方法并实现。
2.掌握课程平台使用方法。
六、实验内容:ex5_1:查找设有序序列的数据元素为:(3,10,13,17,40,43,50,70)1)编写顺序查找函数2)编写二分查找函数3)在主程序中输入关键字(43和5),分别调用两种查找函数,输出结果。
//第一题#include <stdio.h>#define maxnum 20typedef struct{int data[maxnum];int length;}list_type;void create(list_type *l){l->length=8;l->data[0]=3;l->data[1]=10;l->data[2]=13;l->data[3]=17;l->data[4]=40;l->data[5]=43;l->data[6]=50;l->data[7]=70;}void shunxucz(list_type *l,int a1,int a2){int i,flag=0;printf("-----------------------------------------------\n");printf("顺序查找法:\n");for(i=0;i<l->length;i++){if(a1==l->data[i]){printf("%d是第%d个元素\n",a1,(i+1));flag=flag+1;} }if(flag==0) printf("表中没有大小为%d的元素\n",a1);flag=0;for(i=0;i<l->length;i++){if(a2==l->data[i]){printf("%d是第%d个元素\n",a2,(i+1));flag=flag+1;} }if(flag==0) printf("表中没有大小为%d的元素\n",a2);}void erfencz(list_type *l,int a1,int a2){printf("-----------------------------------------------\n");printf("二分查找法:\n");int low,h,m,flag=0,i;low=0;h=l->length-1;for(i=0;i<l->length;i++){m=(low+h)/2; //如果有小数就向小的数字取值9/2=4if(l->data[m]==a1){printf("%d是第%d个元素\n",a1,(m+1));flag=1;break;}else if(l->data[m]<22) low=m+1;else if(l->data[m]>22) h=m-1;}if(flag!=1)printf("表中没有大小为%d的元素\n",a1);flag=0;low=0;h=l->length-1;for(i=0;i<l->length;i++){m=(low+h)/2; //如果有小数就向小的数字取值9/2=4if(l->data[m]==a2){printf("%d是第%d个元素\n",a2,(m+1));flag=1;break;}else if(l->data[m]<22) low=m+1;else if(l->data[m]>22) h=m-1;}if(flag!=1)printf("表中没有大小为%d的元素\n",a2);}int main(){int flag1=43,flag2=5;list_type list,list1,list2;create(&list);create(&list1);create(&list2);shunxucz(&list1,flag1,flag2);erfencz(&list1,flag1,flag2);printf("-----------------------------------------------\n");}ex5_2:排序1)编写简单选择法函数2)编写直接插入法函数3)编写冒泡法排序函数4)编写快速排序函数5)在主程序中输入一组数据元素(513,87,512,61,908,170,897,275,653,462),分别调用4种排序函数,输出每趟排序结果。
