C语言程序设计报告
C程序设计报告
矩
阵
运
算
学院:地质与环境学院
专业:资源勘查工程0901
姓名:王甲
学号:0909030119
目录
1.设计任务书
1.1题目
1.2设计要求
1.3程序涉及的知识点
2.功能设计
2.1算法设计
2.2部分模块流程图
3.程序代码设计
3.1源代码
3.2运行结果
4.运行结果
5.程序设计总结
6.致谢
7.参考文献
1设计任务书
1.1 题目
矩阵运算
1.2 设计要求
此程序为矩阵运算的相关程序,用来计算包括两矩阵的加、减、乘运算,求矩阵的转置矩阵、最大值元素、最小值元素及对角线元素之和等运算。
1.2 本系统涉及的知识点
此程序涉及了老师讲授的多个知识点,包括:for、if、printf及scanf 等语句,顺序、选择、循环等结构。
2功能设计
2.1 算法设计
此程序需要实现的功能要求:
利用for、if、printf及scanf 等语句来实现所需功能。
输入矩阵a和b的元素之后,依次计算:
程序一:计算a+b矩阵;
程序二:计算a-b矩阵;
程序三:计算a*b矩阵;
程序四:计算a的转置矩阵;
程序五:计算a矩阵的最小值元素;
程序六:计算a矩阵的最大值元素;
程序七:计算a矩阵的主对角线元素之和;
程序八:计算a矩阵的副对角线元素之和;
程序九:计算a矩阵的上三角元素之和;
程序九:计算a矩阵的下三角元素之和;
2.2 部分模块流程图
3 程序源代码
3.1源代码
#include"stdio.h"
void main()
{
int a[3][3],b[3][3],c[3][3],
int i,j,k,s,max,min,sum1=0,sum2=0,sum3=0,sum4=0;
printf("矩阵运算\n");
printf("\n");
printf("请输入a矩阵元素:\n");
for(i=0;i<3;i++) /*通过二重循环给a矩阵的元素赋值*/
for(j=0;j<3;j++)
scanf("%4d",&a[i][j]);
printf("a矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%6d",a[i][j]);
printf("\n");
}
printf("\n");
printf("请输入b矩阵元素:\n");
for(i=0;i<3;i++) /*通过二重循环给b矩阵的元素赋值*/
for(j=0;j<3;j++)
scanf("%4d",&b[i][j]);
printf("b矩阵:\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%6d",b[i][j]);
printf("\n");
}
printf("\n");
printf("程序一:计算a+b矩阵\n"); /*计算a+b矩阵并输出*/
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{c[i][j]=a[i][j]+b[i][j];
printf("%6d",c[i][j]);}
printf("\n");
}
printf("\n");
printf("程序二:计算a-b矩阵\n"); /*计算a-b矩阵并输出*/
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{c[i][j]=a[i][j]-b[i][j];
printf("%6d",c[i][j]);}
printf("\n");
}
printf("\n");
printf("程序三:计算a*b矩阵\n"); /*计算a*b矩阵(c矩阵)并输出*/
for(i=0;i<3;i++) /*最外层循环控制c矩阵的行数*/
for(j=0;j<3;j++) /*次外层循环控制c矩阵的列数*/
{for(k=s=0;k<3;k++) /*计算c矩阵的每个元素的值*/
s+=a[i][k]*b[k][j];
c[i][j]=s;}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%6d",c[i][