数组、指针、结构体实验报告

**

数组、指针、结构体

**
【实验目的、要求】
(1)熟悉VC++的上机环境,掌握VC++语言的编程过程
(2)指针地址的使用

【实验内容】
书本上P10的实验

【实验环境】(含主要设计设备、器材、软件等)
运行VC++的电脑一台;

【实验步骤、过程】(含原理图、流程图、关键代码,或实验过程中的记录、数据等)
本次实验进行编写了三个不同的小程序。
编写程序的思路由数据结构的三个方面构成:

在这里插入图片描述

程序一:
(1)原理
在这里插入图片描述
(2)流程图
在这里插入图片描述
(3)关键代码

① 定义操作,构造函数fun()实现功能
void fun(int (*t)[N], int m)//使用数组指针建立一个一维数组
{
	int i, j;
	for (i = 0; i < N; i++)//每一行都需进行以下移步操作
	{
		for (j = N - 1 - m; j >= 0; j--)
			t[i][j + m] = t[i][j];//依照从后往前的顺序依次赋值
		for (j = 0; j < m; j++)
			t[i][j] = 0;//被移后前面的数为0
	}
}
② 录入m的数值时,用scanf_s()代替scanf()
scanf_s("%d", &m);//此处使用了scanf_s代替了scanf,但是scanf()在读取时不检查边界,所以可能会造成内存泄露
③ 打印数值
for (i = 0; i < N; i++)//用嵌套循环打印数组,按行打印
	{
		for (j = 0; j < N; j++)
			printf("%2d", t[i][j]);//打印时每个数据占两个字节,美观
		printf("\n");
	}

(4)实验过程中的记录

在这里插入图片描述

程序二:
(1)原理
在这里插入图片描述

(2)流程图

在这里插入图片描述

(3)关键代码

1.定义操作,构造函数fun()实现功能

void fun(float* p, float* q, float* s)
{
	float k;
	if (*p<*q)/*比三次,先最大和做小比,确保*p>*k;*p与*s比,确保*p>*s,*q与*s比确保*q>*s*/
	{
		k = *p; *p = *q; *q = k;
	}
	if (*p<*s)
	{
		k = *p; *p = *s; *s = k;
	}
	if (*q<*s)
	{
		k = *q; *q = *s; *s = k;
	}
}

(4)实验过程中的记录
在这里插入图片描述
程序三:
(1)原理
在这里插入图片描述

(2)流程图

在这里插入图片描述

(3)关键代码
a.定义结构体

typedef struct ss {
	char num[10];
	int s;
}SS;//声明和定义相结合的方式,可以省去标识

b.用数组存储结构体,实现教务系统的存储和管理
SS a[N] = { {“A01”,81},{“A02”,83}, {“A03”,41}, {“A04”,53}, {“A05”,97}, {“A06”,55}, {“A07”,87}, {“A08”,58}, {“A09”,80}, {“A010”,70} };
c.构造fun函数实现排序运算

void fun(SS *a[], SS* t)//用t作为媒介,每个数都跟t作比较,较小的传给t
{
	int i;
	
	//(1)初始化*t,并且使用strcpy函数将一个num赋给另外一个num
	t->s = a[0]->s;
	strcpy(t->num, a[0]->num);
	
	//(2)初始化后,用一个for循环进行比较大小
	for (i = 0; i < N; i++)
	{
		if(t->s < a[i]->s)
			strcpy(t->num, a[i]->num);//strcpy为复制函数将后一个参数的值传给前一个参数
			t->s = a[i]->s;
	}
	
}

【实验结果或总结】(对实验结果进行相应分析,或总结实验的心得体会,并提出实验的改进意见)
实验一:
1.使用数组指针来表示一个NN的数组,方便使用和更改,可以实现在各维度上的多位数组的数据储存,可方便的根据实际需求更改。
2.数组指针和指针数组虽然有很大的便利,但是对于自己目前阶段理解起来仍有困难和阻碍
3.显示数组中的元素时一般使用for循环,多维数组使用嵌套循环打印数组。
实验二:
4.指针是一个内存单元存储着另一个内存单元的地址(一个人家放着别人家的钥匙)
5.在实验过程中多次出错均是因为指针的
加与否,多次实验有了如下总结

在这里插入图片描述

6.比较大小的时候使用while循环,先最大的与最小的比较,再中中间的q依次比较,这样只需比较3次即可得出结论
实验三:

  1. 结构体的主要目的是封装,方便再次使用,使用时不必关心这是什么,只要根据定义使用即可。
  2. 可以使用数组存储多个结构体从而形成系统

指导老师签名:

20 年 月 日
【备注】

发布了10 篇原创文章 · 获赞 6 · 访问量 510

猜你喜欢

转载自blog.csdn.net/qq_44972915/article/details/104183945