实验三 数组
一、 实验目的
1.熟悉数组的结构
2.掌握矩阵的压缩存储
3.能够对数组和矩阵的压缩存储进行运算
一、 实验内容
2. A和B是两个n×n阶的对称矩阵,输入时,以行为主序输入对称矩阵的下三角元素,存入以尾数组,编写一个算法计算对称矩阵A和B的乘积。(文件夹:对称矩阵相乘)
/*
数组结构类型的定义.h*/
/*
const int n=3;
const int size=n*(n+1)/2;
*/
#define n 3
#define size (n*(n+1)/2)
typedef int datatype;
typedef struct{
datatype A[size],B[size],C[n][n];
}array;
/*
A和B是两个n×n阶的对称矩阵,输入时,以行为主序输入对称矩阵的下三角元素,存入一维数组,
编写一个算法计算对称矩阵A和B的乘积。
*/
#include <stdio.h>
#include <stdlib.h>
#include"数组结构类型的定义.h"
int main()
{
array * pa;
/*pa=new array;*/
pa = (array *)malloc( sizeof(array) );
printf("请输入矩阵A(共%d各元素)=/n",size);
input(pa->A);/*以行为主序输入矩阵A的下三角*/
printf("请输入矩阵B(共%d各元素)=/n",size);
input(pa->B);/*以行为主序输入矩阵B的下三角*/
mult(pa);
puts("A*B=");
output(pa->C);/*输出矩阵C*/
system("PAUSE");
return 0;
}
/*对称矩阵的输入.h*/
#include"数组结构类型的定义.h"
void input(datatype x[])
{
int i;
for( i=0;i<size;i++)
/*cin>>x[i];*/
scanf("%d",x+i);
return ;
}
/*矩阵的输出.h*/
#include"数组结构类型的定义.h"
void output(datatype x[][n])
{
int i,j;
for( i=0;i<n;i++)
{
for( j=0;j<n;j++)
/* cout<<setw(5)<<x[i][j];*/
printf("%5d",x[i][j]);
/*cout<<endl;*/
puts("/n");
}
return ;
}
#include"数组结构类型的定义.h"
void mult( array * pa )
{
void take( int pb[] , int p[] , int j );
int row[n];
int col[n];
int i,j;
int k;
int t;
for( i=0 ; i<n ; i++ )
{
take( pa->A , row , i );
for( j=0 ; j<n ; j++ )
{
take( pa->B , col , j );
pa->C[i][j] = 0;
for(k=0;k<n;k++) pa->C[i][j] += row[k]*col[k];
}
}
return;
}
void take( int pb[] , int p[] , int j )
{
int i;
for(i=0;i<n;i++)
{
if(i>=j)
p[i] = pb[i*(i+1)/2+j];
else
p[i] = pb[j*(j+1)/2+i];
}
return;
}
分享到:
相关推荐
**C语言编程技术实践——实验六:数组** 在C语言编程技术实践中,实验六的核心是理解和运用数组这一关键概念。数组是C语言中用于存储一组相同类型数据的集合,是程序设计的基础工具之一。本实验旨在帮助学生深入...
在本实验中,我们将深入学习和实践一维数组、二维数组以及动态数组的概念和使用。 一、一维数组 一维数组可以视为线性数据结构,它由一系列按照特定顺序排列的元素组成。在C/C++中,定义一个一维数组的基本语法是...
3. **实现响应比高者优先(HRRN)作业调度算法**:通过编写C语言程序来实现一种常见的作业调度策略——响应比高者优先算法。 #### 二、实验原理 ##### 批处理系统调度与管理方式 批处理系统是一种操作系统模式,...
在本项目中,我们关注的是一个使用C语言编写的经典游戏——贪吃蛇。这是一个常见的编程实验,旨在帮助学生深入理解C语言的基本概念,如控制结构、数组、函数以及内存管理。下面将详细介绍这个项目涉及的关键知识点。...
在本实验作业中,我们将深入探讨C语言编程中的一个重要数据结构——链表。链表是一种动态数据结构,它不像数组那样需要预先分配连续的内存空间,而是通过节点间的指针链接来存储数据。这对于处理不确定数量的数据...
"C语言大作业报告——2048小游戏程序.pdf" 本资源为一份C语言大作业报告,旨在设计和实现一个小型信息库管理系统或闯关式游戏程序,即2048小游戏程序。该游戏程序要求使用C语言编写,采用自顶向下的模块化设计思想...
内涵实验报告和源代码,注释详细,可直接做课设使用,课程报告已写好。 题目:学生管理系统设计 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名、学号、性别、出生年月、专业、班级、家庭地址、宿舍...
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句...
C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多...但是一般我们设计课程需要1:1.5到1:2的课后学习时间,这包括预习、作业、练习和复习的时间,所以每周大约需要花费三到五小时的时间。
本书《数据结构实验与习题——线性表栈和队列串数组树与二叉树》旨在帮助学生更好地理解和实践这些概念。 首先,书中介绍了C语言基础知识,这是实现数据结构的基础。C语言的基本输入输出、函数及其参数传递、以及...
在本资源中,"C/C++实训题目及答案"是一个专为C和C++初学者设计的实践训练材料。这个压缩包包含了一系列的编程题目以及它们对应的解答,旨在帮助学习者提升对这两种语言的理解和应用能力。以下是这些知识点的详细...
这份名为"C语言作业报告以及课程设计(课程98分,课设优秀,含源代码)"的资源集合,是南京航空航天大学C语言课程的一份高质量学习资料。它包含了学生董家华在该课程中的全部作业和课程设计内容,且整体成绩达到98分...
在这个“大二上——数据结构”实验中,我们将深入学习并实践一些基础且重要的数据结构,如栈、链表和队列。 1. **栈**(Stack):栈是一种后进先出(LIFO, Last In First Out)的数据结构,类似于现实生活中的堆叠...
本教学单元设计主要关注实验一——熟悉C语言,旨在使学生掌握C语言的基础知识和编程技能,为后续的学习打下坚实的基础。 知识目标: 1. **模块化、结构化程序设计思想**:C语言支持模块化和结构化编程,这是一种将...
课程的随堂作业,C语言的,用dev就能运行,萌新代码,勿喷,仅仅帮助不想写作业的朋友方便一下,反正老师也不会仔细检查的
实验部分在课程中占据了重要地位,从第2周开始,每周都有相应的实验内容。实验一让学生熟悉上机环境和简单程序设计,通过实际操作来加深对编程的理解。后续的实验则围绕着选择结构和循环结构进行,让学生通过编程...
【高级语言程序设计(SIST000812)第2次实验报告——成绩管理系统的链表实现】 本次实验旨在让学生掌握程序设计的基本算法和数据结构,如链表,以及自顶向下、逐步求精的模块化设计方法。实验内容是设计一个学生成绩...
在华中科技大学计算机学院的C++实验课程中,"Queue_hustC++实验_"是一个针对初学者设计的项目,旨在让学生掌握数据结构中的基础概念——队列(Queue)的实现。队列是一种线性数据结构,遵循“先进先出”(FIFO, ...
【标题】"190110419_李怡凯_实验九2"指的是一个学生名为李怡凯的计算机类专业学生的实验作业,该实验可能是关于高级语言程序设计的一部分,具体实验编号为“实验九2”。实验的执行环境是在哈尔滨工业大学(深圳)...
在本作业中,我们将深入探讨数值与符号计算领域中的一个重要主题——线性方程组的求解。线性方程组是数学中的基础概念,广泛应用于工程、物理、经济等众多领域。Python和C语言都是编程界常用的工具,它们各自有独特...