求给C语言程序加注释

两个问题,第一,给加个大概注释。第二个重点解释下*(m+i*c+j)=*(m1+i*c+j)+*(m2+i*c+j);t+=*(m1+i*p+k)**(m2+k*c+j)... 两个问题,第一,给加个大概注释。第二个重点解释下
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);
t += *(m1+i*p+k) * *(m2+k*c+j);
*(m+i*c+j)=t;

#include<stdio.h>
void add(int *m,int *m1,int *m2,int r,int c);
void sub(int *m,int *m1,int *m2,int r,int c);
void mult(int *m,int *m1,int *m2,int r,int p,int c);
void disp(int *m,int r,int c);
void main()
{
int a[3][4]={{4,3,5,2},{5,1,7,3},{2,7,6,2}};
int b[3][4]={{2,4,4,-7},{4,2,5,-8},{7,-3,-4,2}};
int c[4][3]={{5,4,4},{1,3,1},{4,4,2},{7,1,3}};
int d[3][4]={0};
int e[3][4]={0};
int f[3][3]={0};
printf("\nA(3x4):\n");
disp(a[0],3,4);
printf("\nB(3x4):\n");
disp(b[0],3,4);
add(d[0],a[0],b[0],3,4);
printf("\nD(3x4)=A+B:\n");
disp(d[0],3,4);
sub(e[0],a[0],b[0],3,4);
printf("\nE(3x4)=A-B:\n");
disp(e[0],3,4);
printf("\nA(3x4):\n");
disp(a[0],3,4);
printf("\nC(4x3):\n");
disp(c[0],4,3);
mult(f[0],a[0],c[0],3,4,3);
printf("\nF(3x3)=A*C:\n");
disp(f[0],3,3);
}
void add(int *m,int *m1,int *m2,int r,int c){
int i,j;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);
}
void sub(int *m,int *m1,int *m2,int r,int c){
int i,j;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
*(m+i*c+j) = *(m1+i*c+j) - *(m2+i*c+j);
}
void mult(int *m,int *m1,int *m2,int r,int p,int c){
int i,j,k,t;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
{
t=0;
for(k=0; k<p; k++)
t += *(m1+i*p+k) * *(m2+k*c+j);
*(m+i*c+j)=t;
}
}
void disp(int *m,int r,int c)
{
int i,j;
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
printf("%6d",*(m+i*c+j));
printf("\n");
}
}
展开
 我来答
jackou20057
2012-07-09 · TA获得超过998个赞
知道小有建树答主
回答量:199
采纳率:100%
帮助的人:274万
展开全部
#include<stdio.h> //标准输入输出库所在的头文件
//自定义函数声明
void add(int *m,int *m1,int *m2,int r,int c); //矩阵加法
void sub(int *m,int *m1,int *m2,int r,int c); //矩阵减法
void mult(int *m,int *m1,int *m2,int r,int p,int c); //矩阵乘法
void disp(int *m,int r,int c); //打印数组数据(矩阵里的数据)
//主测试函数
void main()
{
int a[3][4]={{4,3,5,2},{5,1,7,3},{2,7,6,2}};
int b[3][4]={{2,4,4,-7},{4,2,5,-8},{7,-3,-4,2}};
int c[4][3]={{5,4,4},{1,3,1},{4,4,2},{7,1,3}};
int d[3][4]={0};
int e[3][4]={0};
int f[3][3]={0};
printf("\nA(3x4):\n");
disp(a[0],3,4); //显示矩阵a
printf("\nB(3x4):\n");
disp(b[0],3,4); //显示矩阵b
add(d[0],a[0],b[0],3,4); // 计算矩阵 a + b,并将结果存到d中
printf("\nD(3x4)=A+B:\n");
disp(d[0],3,4); //显示a+b的结果(即d中的数据)
sub(e[0],a[0],b[0],3,4);// 计算矩阵 a - b,并将结果存到e中
printf("\nE(3x4)=A-B:\n");
disp(e[0],3,4);//显示a-b的结果(即e中的数据)
printf("\nA(3x4):\n");
disp(a[0],3,4); // 显示矩阵a
printf("\nC(4x3):\n");
disp(c[0],4,3); //显示矩阵c
mult(f[0],a[0],c[0],3,4,3); //计算矩阵a*c 并将结果存到f中
printf("\nF(3x3)=A*C:\n");
disp(f[0],3,3); //显示a*c的结果(即f中的数据)
}
//函数定义
/*
*****函数功能:两个矩阵进行加法运算 C = A+B
*****参数: m 指向运算结果存放的二维数组(即矩阵) C的首地址
***** m1为矩形A的首地址,m2为矩形B的首地址
***** r 为矩阵的行数, c为矩阵的列数
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);这个表示将矩阵A的第i行j列的数据 与 矩阵B的第i行j列的数据 相加
然后将结果赋值给矩阵C的第i行j列数据
*(m1+i*c+j) :m1+i*c+j 这个表示指向矩阵A的第i行第j列的数据的指针,则 *(m1+i*c+j) 就表示矩阵A的第i行第j列的数据
*(m2+i*c+j) :m2+i*c+j 这个表示指向矩阵B的第i行第j列的数据的指针,则 *(m2+i*c+j) 就表示矩阵B的第i行第j列的数据
*(m+i*c+j) : m+i*c+j 这个表示指向矩阵C的第i行第j列的数据的指针,则 *(m+i*c+j) 就表示矩阵C的第i行第j列的数据
这里是用指针实现的,
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);
等价于
c[i][j] = a[i][j] + b[i][j];
*/
void add(int *m,int *m1,int *m2,int r,int c) //
{
int i,j;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);
}
//注释与上边加法类似
void sub(int *m,int *m1,int *m2,int r,int c) //两个矩阵之间的减法运算
{
int i,j;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
*(m+i*c+j) = *(m1+i*c+j) - *(m2+i*c+j);
}
/*注释与上边类似,因为矩阵乘法运算公式较为复杂一些,可自行对照矩阵乘法运算公式
如矩阵c = a * b
for(k=0; k<p; k++)
t += *(m1+i*p+k) * *(m2+k*c+j); //表示将m1的第i行k列的数据 与 m2的第k行j列的数据相乘 ,
//并将p (k的值从0到p) 次结果进行累加
*(m+i*c+j)=t; //最后将这个累加的结果赋值给矩阵c的第i行第j列的数据
*/
void mult(int *m,int *m1,int *m2,int r,int p,int c)//两个矩阵之间的乘法运算
{
int i,j,k,t;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
{
t=0;
for(k=0; k<p; k++)
t += *(m1+i*p+k) * *(m2+k*c+j);
*(m+i*c+j)=t;
}
}
//显示打印矩阵中的数据
void disp(int *m,int r,int c)
{
int i,j;
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
printf("%6d",*(m+i*c+j));
printf("\n");
}
}
我只想晒月亮
2012-07-09 · 贡献了超过105个回答
知道答主
回答量:105
采纳率:0%
帮助的人:47.2万
展开全部
#include<stdio.h>
/*
m1和m2为两个相加的数组首元素地址,r和c为两个数组的行数和列数
m用于存放结果。
调用该函数时,要求m为有足够存储单元、能容纳运算结果的数组首元素地址
*/
void add(int *m,int *m1,int *m2,int r,int c);//无返回值的add函数
void sub(int *m,int *m1,int *m2,int r,int c);//.....
void mult(int *m,int *m1,int *m2,int r,int p,int c);//.....
void disp(int *m,int r,int c);//.....
void main()
{
int a[3][4]={{4,3,5,2},{5,1,7,3},{2,7,6,2}};//定义一个a的二维数组
int b[3][4]={{2,4,4,-7},{4,2,5,-8},{7,-3,-4,2}};//定义一个b的二维数组
int c[4][3]={{5,4,4},{1,3,1},{4,4,2},{7,1,3}};//定义一个c的二维数组
int d[3][4]={0};//定义一个d的二维数组,它的每个元素都为0
int e[3][4]={0};//定义一个e的二维数组,它的每个元素都为0
int f[3][3]={0};//定义一个f的二维数组,它的每个元素都为0
printf("\nA(3x4):\n");//输出A这个数组
disp(a[0],3,4);//取a的逆矩阵
printf("\nB(3x4):\n");//输出B这个数组
disp(b[0],3,4);//显示b这个数组
add(d[0],a[0],b[0],3,4);//对a,b进行add运算结果赋值给d
以下同意2L的注释
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
熊熊凝云0bv
2012-07-09
知道答主
回答量:19
采纳率:0%
帮助的人:15.9万
展开全部
#include<stdio.h>
void add(int *m,int *m1,int *m2,int r,int c);// 相加函数
void sub(int *m,int *m1,int *m2,int r,int c);// 相减函数
void mult(int *m,int *m1,int *m2,int r,int p,int c);// 相乘函数
void disp(int *m,int r,int c);// 显示函数
void main()
{
int a[3][4]={{4,3,5,2},{5,1,7,3},{2,7,6,2}};// 二位数组初始化
int b[3][4]={{2,4,4,-7},{4,2,5,-8},{7,-3,-4,2}};// 二位数组初始化
int c[4][3]={{5,4,4},{1,3,1},{4,4,2},{7,1,3}};// 二位数组初始化
int d[3][4]={0};// 二位数组初始化
int e[3][4]={0};// 二位数组初始化
int f[3][3]={0};// 二位数组初始化
printf("\nA(3x4):\n");
disp(a[0],3,4);// 显示数组a的内容
printf("\nB(3x4):\n");
disp(b[0],3,4);
add(d[0],a[0],b[0],3,4); // 将数组a的各项和数组b的各项相加,填入到数组d
printf("\nD(3x4)=A+B:\n");
disp(d[0],3,4);// 显示数组d的内容
sub(e[0],a[0],b[0],3,4);// 将数组a的各项和数组b的各项相减,填入到数组e
printf("\nE(3x4)=A-B:\n");
disp(e[0],3,4);// 显示数组e的内容
printf("\nA(3x4):\n");
disp(a[0],3,4);// 显示数组a的内容
printf("\nC(4x3):\n");
disp(c[0],4,3);// 显示数组c的内容
mult(f[0],a[0],c[0],3,4,3);// 将数组a和数组c的各项相乘,填入到数组f
printf("\nF(3x3)=A*C:\n");
disp(f[0],3,3);// 显示数组f的内容
}

// 将数组m1和m2的各项值相加,填入到m
void add(int *m,int *m1,int *m2,int r,int c){
int i,j;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
*(m+i*c+j) = *(m1+i*c+j) + *(m2+i*c+j);//m为数组头指针 i*c + j为指针偏移量
}

// 将数组m1的各项值减去m2的各项值,填入到m
void sub(int *m,int *m1,int *m2,int r,int c){
int i,j;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
*(m+i*c+j) = *(m1+i*c+j) - *(m2+i*c+j);//m为数组头指针 i*c + j为指针偏移量
}

// 将数组m1的各项值乘以m2的各项值,填入到m
void mult(int *m,int *m1,int *m2,int r,int p,int c){
int i,j,k,t;
for(i=0; i<r; i++)
for(j=0; j<c; j++)
{
t=0;
for(k=0; k<p; k++)
t += *(m1+i*p+k) * *(m2+k*c+j);//m为数组头指针 i*c + j为指针偏移量
*(m+i*c+j)=t;
}
}

// 显示数组m的各项值
void disp(int *m,int r,int c)
{
int i,j;
for(i=0; i<r; i++)
{
for(j=0; j<c; j++)
printf("%6d",*(m+i*c+j));//m为数组头指针 i*c + j为指针偏移量
printf("\n");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nmghu521
2012-07-09 · 超过10用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:32.3万
展开全部
(⊙o⊙)…
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式