1、实验一、语言回顾复习C语言中关于函数、数组、指针、结构体等得知识,为数据结构实验做准备。【实验学时】2学时【实验预习】回答以下问题:1、数组得定义与引用 数组定义 在定义数组时,应该说明数组得名字、类型、大小与维数。 数组定义形式 类型说明符 数组名常量表达式 数组元素得引用方法 数组名下标 、函数得定义与调用 无参函数 类型说明符 函数名() 函数体 有参函数 类型说明符 函数名(形式参数表列)&
2、nbsp; 函数体 ; 函数调用 函数名(实参表列) 3、指针得基本概念 指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存得内存地址,又可以使用这个地址里储存得函数得值.在计算机语言中,由于通过地址能找到所需得变量单元,可以说,地址指向该变量单元。因此,将地址形象化得称为“指针”。意思就是通过它能找到以它为地址得内存单元。 4、结构体类型变量得定义方法 结构体类型定义得一般形式 struct结构体名  
3、; 成员表; truc结构体名 成员表 变量表; 5、结构体成员得访问方法 结构体变量名、成员名 (*指针变量名)、成员名 指针变量名成员名 【实验内容与要求】1、完成并调试程序:实现对一维数组元素得升序排序并输出结果(横线处仅能补充一条语句).#includestd、h>vodsort(int a,nt n);_;int ma() i s101,9,9,120,7,45,43,6,7,2,i; _;
4、 o(i=0;0;i+) prnt("%d,si); printf(n"); tun ;void sot(ta,in n) /补充完整排序函数,可用选择或冒泡排序/ icludestio、hod t(in,n);itman() i s1,9,9,120,76,4,3,6,7,2,i; sot(s,10); for(i=0;0;i+) ritf(”d”,i); printf(n); turn
5、0;void (in,nn)in i,j,t;for(=0;in1;i+)for(j=;<ni1;j+)if(ajaj+1) t=aj; j=j+1; aj+=t; 、完成并调试程序:字符串连接程序,不使用系统提供得字符串连接函数,将第二个字符串连接至第一个字符串后。(横线处仅能补充一条语句).includestdio、hdefe M 8it min()char sb1M,sub2;char ps1=sub,*p2sub;rin("leasenpt sis:n);int("strn:);gets(s);rintf(s
6、ig2:”);ges(p2);hl(ps!=')_s1_;hil(*p2!=)_(s+)*(sp2+)_;*p='';printf("new string:”);puts(ub1);return ;3、完成并调试程序:结构体与数组。实现学生数据得输入、输出与按成绩排序.(横线处仅能补充一条语句)。#inde<tdio、 h="">structstdent in so; hasnam0; float grad;;void inputData(struct stu
7、et ,in);voipinta(stuct student s,in );voi sortData(struct student s,intn);n man() struc sudent 100; n n=3; nuData(,n); sotDaa(,n); riaa(a,n); retur 0;void inputDaa(tuct sude s,int n) inti; f(i=0;n;i+) _scanf(“ss”,i、no,si、sam,s、
8、ade)_; 读入数据/ vod printData(stucttudent s,int) in i; pitf(”=); for(i=;;i+) _pintf(“n%ss%d”,si、sno,si、same,si、rade)_;/*输出数据* voi sortData(strt student ,i n) nti,j; srut stden ; f(i=0;<n1;i+) &
9、nbsp; for(=i1;j;j+) if(si、rde<sj、gra) _t=s_; 实现数据交换 _si=s_; s=t_; 4、完成并调试程序:结构体与指针
10、。实现学生数据得输入、输出。(横线处仅能补充一条语句).#iclude<ti、h#inluesno=sno; stcpy(p>sname,name); p>rad=grae; p->xt=NULL; f(ed=NL) hed; lse -next=p; q=; scanf("%d%f&quo
11、t;,sn,sae,&ade); retun had;vodpritat( STU *ls) TU *pit; prnt(”n=n"); whle(p!NU) _prn(“4dn”)_;/*输出数据/pnxt; 回答问题:此链表创建得就是有头结点链表还就是无头结点链表?_有_。课后作业:完成下面三个程序1、 在一组升序排列得整数数组中插入一数据,并使该数组仍保持升序,最后输出插入后得数组。 #ncludeintma
12、in()int 0+1;in ;nt ;nt,k;fr(i=0;i;i=2)xi/2=;for(i=0;i10;i+)prin("3d,x);scaf(”d”,a);for(i0;;i+)i(xi)f(i10)x0;elsji;or(=101;k>j;)x+1=k;xj;break; for(=0;i11;+)pritf(d”,xi);rur 0;2、 输入43列矩阵,并输出最大数与最小数所在得行与列。 cude <tdo、h>intmain() nta340; int i,j,ma,m_i,max
13、_j; prinf(Pleas input 3X4mtix:n); or(i0;i3;i) for(j0;j<4;j+) scan(”d,ai); maxa00; ax_=max_=0; r(i=0;i;i+) fo(j=0;<4;+) if(aiax) &nb
14、sp; mx=aij; max_=i; mx_j; rintf(”hma is %d,row ,cl d",ax,mx_i,x_); 3、 从键盘输入3名学生得学号、姓名与语言成绩,输出最高分,最低分,平均分,并按由高到低得顺序输出学生得成绩. inclue<std、hstrct Stu nt
15、num; char name20; fa score;;d Int(strt Sus) n i; for(i=0;3;+i) scf("s%”,&si、u,si、ne,si、scoe);vi Sort(sc Stu *) inti,; truct St,*p; fr(i=0;i<2;+)
16、 p="ai;">soeaj->scor)p=a+; if(!=a+j) t=*p; *p=ai; ai=
17、; n an() strctu s,a3; int i; pt(s); o(i=;i3;+i) ai&si; Sr(); fo(i=;i3;+i) pritf("% s %、2f",ai->u,ai>nme,i>scoe); retur 0;