1、
实验一、C语言回顾 复习C语言中关于函数、数组、指针、结构体等得知识,为数据结构实验做准备。 【实验学时】 2学时 【实验预习】 回答以下问题: 1、数组得定义与引用 数组定义 在定义数组时,应该说明数组得名字、类型、大小与维数。 数组定义形式 类型说明符 数组名[常量表达式] 数组元素得引用方法 数组名[下标] 2
2、函数得定义与调用 无参函数 类型说明符 函数名() { 函数体 }; 有参函数 类型说明符 函数名(形式参数表列) { 函数体 }; 函数调用 函数名([实参表列]) 3、指针得基本概念 指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存得内存地址,又可以使用这个地址里储存得函数得值.在计算机语言中,由于通过地址
3、能找到所需得变量单元,可以说,地址指向该变量单元。因此,将地址形象化得称为“指针”。意思就是通过它能找到以它为地址得内存单元。 4、结构体类型变量得定义方法 结构体类型定义得一般形式 struct结构体名 { 成员表}; struct结构体名 { 成员表 }变量表; 5、结构体成员得访问方法 结构体变量名、成员名 (*指针变量名)、成员名 指针变量名—〉成员名 【实验内
4、容与要求】 1、完成并调试程序:实现对一维数组元素得升序排序并输出结果(横线处仅能补充一条语句). #include〈stdio、h> void sort(int a[],int n);_________________________; int main(){ int s[10]={1,—9,89,120,76,45,43,6,7,2},i; ________________________________; for(i=0;i〈10;i++) printf("
5、4d",s[i]); printf("\n"); return 0; } void sort(int a[],int n) { /*补充完整排序函数,可用选择或冒泡排序*/ } #include〈stdio、h> void sort(int a[],int n); int main() { int s[10]={1,—9,89,120,76,45,43,6,7,2},i; sort(s,10); for(i=0;i<10;i++)
6、 printf(”%4d”,s[i]); printf("\n"); return 0; } void sort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i++) { ﻩﻩfor(j=0;j<n-i—1;j++) ﻩ if(a[j]>a[j+1]) ﻩ { ﻩﻩ t=a[j]; ﻩ a[j]=a[j+1]; ﻩﻩ a[j+1]=t; } } } 2、完成并调
7、试程序:字符串连接程序,不使用系统提供得字符串连接函数,将第二个字符串连接至第一个字符串后。(横线处仅能补充一条语句). #include〈stdio、h> #define M 80 int main(){ char sub1[M],sub2[M]; ﻩchar *ps1=sub1,*ps2=sub2; ﻩprintf("please input strings:\n"); printf("string1:"); ﻩgets(ps1); printf("string2:”); ﻩgets(ps2); ﻩwhile(*ps1!=’\0')
8、 _________ps1++________________; ﻩwhile(*ps2!=’\0’) _*(ps1++)=*(sp2++)________________________; *ps1='\0'; printf("new string:”); puts(sub1); ﻩreturn 0; } 3、完成并调试程序:结构体与数组。实现学生数据得输入、输出与按成绩排序.(横线处仅能补充一条语句)。 #include<stdio、h〉 h="">struct student{ &nb
9、sp; int sno; char sname[10]; float grade; }; void inputData(struct student s[],int n); void printData(struct student s[],int n); void sortData(struct student s[],int n); int main(){ struct student a[100]; int n=3; inputData(a,n); &nbs
10、p; sortData(a,n); printData(a,n); return 0; } void inputData(struct student s[],int n) { int i; for(i=0;i〈n;i++){ _ scanf(“%s%s%d”,s[i]、sno,s[i]、sname,s[i]、grade)___________________________________________________; /*读入数据*/ &n
11、bsp; } } void printData(struct student s[],int n) { int i; printf(”\n======================\n"); for(i=0;i<n;i++){ __printf(“\n%s%s%4d”,s[i]、sno,s[i]、sname,s[i]、grade)_______________________________________; /*输出数据*/
12、 } } void sortData(struct student s[],int n) { int i,j; struct student t; for(i=0;i<n—1;i++){ for(j=i+1;j〈n;j++) if(s[i]、grade<s[j]、grade) { &nbs
13、p; _______t=s[i]______; /*实现数据交换*/ _____s[i]=s[j]________; _s[j]=t___________; } } } 4、完成并调试程序:结构体与指针。实现学生数据得输入、输出。(横线处仅能补充一条语句). #include&
14、lt;stdio、h〉 #include
15、 if(head==NULL) head=p; else q->next=p; q=p; scanf("%d%s%f",&sno,sname,&grade); } return head; } void printData( STU *list) { STU *p=list; &nbs
16、p; printf(”\n======================\n"); while(p!=NULL) { __printf(“%4d\n”)____________________________________________; /*输出数据*/ p=p—>next; } } 回答问题:此链表创建得就是有头结点链表还就是无头结点链表?_____有_________。 课后作业:完成下面三个程序 1、 在一组升序排列得整数数组中插入一数据,并使该数组仍保持升序,最
17、后输出插入后得数组。
#include
18、 ﻩ for(k=10—1;k>=j;k--){ ﻩx[k+1]=x[k]; ﻩﻩ } ﻩﻩ x[j]=a; ﻩﻩ break; ﻩﻩ} ﻩ} for(i=0;i<11;i++){ ﻩ printf("%3d”,x[i]); } ﻩreturn 0; } 2、 输入4*3列矩阵,并输出最大数与最小数所在得行与列。 #include <stdio、h> int main() { int a[3][4]={0}; int i,j,max,max_
19、i,max_j; printf("Please input a 3X4 matrix:\n"); for(i=0;i〈3;i++) for(j=0;j<4;j++) scanf(”%d",&a[i][j]); max=a[0][0]; max_i=max_j=0; for(i=0;i〈3;i++) for(j=0;j&
20、lt;4;j++) if(a[i][j]〉max) { max=a[i][j]; max_i=i; max_j=j; } printf(”T
21、he max is %d,row %,col %d\n",max,max_i,max_j); } 3、 从键盘输入3名学生得学号、姓名与C语言成绩,输出最高分,最低分,平均分,并按由高到低得顺序输出学生得成绩. #include<stdio、h〉 struct Stu { int num; char name[20]; float score; }; void Input(struct Stu s[]) { &nb
22、sp; int i; for(i=0;i〈3;++i) scanf("%d%s%f”,&s[i]、num,&s[i]、name,&s[i]、score); } void Sort(struct Stu *a[]) { int i,j; struct Stu *t,**p; for(i=0;i<
23、2;++i) p="a+i;">score<a[j]->score)p=a+j; if(p!=a+j) { t=*p; *p=a[i];
24、 a[i]=t; } } } int main() { struct Stu s[3],*a[3]; int i; Input(s); for(
25、i=0;i〈3;++i) a[i]=&s[i]; Sort(a); for(i=0;i<3;++i) printf("%d %s %、2f\n",a[i]->num,a[i]—>name,a[i]—>score); return 0; }
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818