好多年不用C语言了,最后一次使用还是读研的时候写矩量法的时候了,看见VS的界面总能想起当年读书的时候的各种错误,往事随风。本程序应人之约,首先得到一个随机的矩阵,之后通过将矩阵分解为几个小矩阵统计小矩阵的所有元素的和,最终得到一个新的矩阵,其中涉及动态二维数组的分配,多维数组的使用按照这个方式类推。一维数组相当于矢量,二维数组相当于矩阵,高维数组可以用张量来理解。在数值计算中应该会遇到

#include

#include

#include

#include

//作者Waightman H Wang

#define Ohang 14     //初始矩阵大小

#define Olie 14

#define RATE 5     //压缩率

int main()

{

//根据压缩率判断压缩后的矩阵大小

double input[Ohang][Olie];

int Lhang,hangyu,Llie,lieyu,ii;

Lhang=Ohang/RATE;

hangyu=Ohang%RATE;

Llie=Olie/RATE;

lieyu=Olie%RATE;

if(hangyu>3)

Lhang=Lhang+1;

if(lieyu>3)

Llie=Llie+1;

double **output;

output = (double **)malloc(sizeof(double*)*Lhang);//申请一组一维指针空间。

for(ii = 0; ii < Llie; ii ++)

output[ii] = (double *)malloc(sizeof(double) * Llie); //对于每个一维指针,申请一行数据的空间。

if (output == 0)             // 内存申请失败,提示退出

{

printf("out of memory,press any key to quit...n");

exit(0);             // 终止程序运行,返回操作系统

}

int i = 0, j = 0, oi = 0, oj = 0;

srand(1);

for (i = 0; i < Ohang; i++)

for (j = 0; j < Olie; j++)

input[i][j] = rand()%10;

//计算新矩阵的元素

double sum = 0.0;//小矩阵求和存储

int sum_count = 0;//非零元个数

int hangtemp,lietemp;//分块矩阵的临时角标

for(oi=0;oi

{

for(oj=0;oj

{

sum = 0.0;//小矩阵求和存储

sum_count = 0;//非零元个数

hangtemp=oi*RATE;

lietemp=oj*RATE;

for(i=0;i

for(j=0;j

{

sum=sum+input[hangtemp+i][lietemp+j];

}

//输出矩阵的填充

output[oi][oj]=sum;

}

}

//最后一行可能填不满,单独处理

int RATEH,RATEL;

if(hangyu>3)

RATEH=hangyu;

else

RATEH=RATE;

hangtemp=RATE*(Lhang-1);

for(oj=0;oj

{

sum = 0.0;//小矩阵求和存储

sum_count = 0;//非零元个数

lietemp=oj*RATE;

for(i=0;i

for(j=0;j

{

sum=sum+input[hangtemp+i][lietemp+j];

}

//输出矩阵的填充

output[Lhang-1][oj]=sum;

}

//最后一列的处理

if(lieyu>3)

RATEL=lieyu;

else

RATEL=Olie-lieyu;

lietemp=RATE*(Llie-1);

for(oi=0;oi

{

sum = 0.0;//小矩阵求和存储

sum_count = 0;//非零元个数

hangtemp=oi*RATE;

for(i=0;i

for(j=0;j

{

sum=sum+input[hangtemp+i][lietemp+j];

}

//输出矩阵的填充

output[oi][Llie-1]=sum;

}

//最后右下角元素

hangtemp=oi*RATE;

lietemp=oi*RATE;

sum=0;

for(i=0;i

for(j=0;j

{

sum=sum+input[hangtemp+i][lietemp+j];

}

//输出矩阵的填充

output[Lhang-1][Llie-1]=sum;

for (i = 0; i < Ohang; i++)

{

for (j = 0; j

printf("%f ", input[i][j]);

printf("n");

}

for (i = 0; i < Lhang; i++)

{

for (j = 0; j < Llie; j++)

printf("%f ", output[i][j]);

printf("n");

}

system("pause");

return 0;

}

转载本文请联系原作者获取授权,同时请注明本文来自王一哲科学网博客。

链接地址:http://wap.sciencenet.cn/blog-1218015-916857.html

下一篇:基于CST海面背景耦合下目标电磁散射特性仿真分析

二维动态数组空间分配 c语言,科学网—C语言中动态二维数组的使用和分配 - 王一哲的博文...相关推荐

  1. wannier拟合能带总是拟合不上_科学网—Wannier90输入文件中num_wann, num_bands, 和energy window等参数设置规则 - 李云海的博文...

    基本规则 Wannier90是一个构建局域轨道基组的有力工具,一般用来计算紧束缚模型中的占位能和跳跃积分,再结合杂化泛函或GW方法,插值得到更为准确的能带结构,或者计算极化.输运.拓扑不变量等物理性质 ...

  2. wannier拟合能带总是拟合不上_科学网-Wannier90输入文件中num_wann, num_bands, 和energy window等参数设置规则-李云海的博文...

    基本规则 Wannier90是一个构建局域轨道基组的有力工具,一般用来计算紧束缚模型中的占位能和跳跃积分,再结合杂化泛函或GW方法,插值得到更为准确的能带结构,或者计算极化.输运.拓扑不变量等物理性质 ...

  3. matlab surf颜色,科学网[转载]matlab中控制mesh或者surf的颜色

    科学网[转载]matlab中控制mesh或者surf的颜色 曲面的顏色越发柔順滑腻,del2 (Z) 根據數值微分來產生矩陣 Z 的 discrete Laplacian, Y,surf 及 mesh ...

  4. c语言 宏 变长参数,科学网—C/C++中处理变长参数函数(Variadic Function)的几个宏 - 彭彬的博文...

    近日在模式中进行非线性方程组求解时遇到变长参数函数的问题,以前从来没有自己写过变长参数的函数,于是补了一下课,将近日对该小问题的学习和理解整理如下. 一.变长参数函数(variadic functio ...

  5. r语言 林元震_科学网—R语言简介 - 林元震的博文

    R既是软件,也是语言,在GNU协议General Public Licence下免费发行,是1995年由新西兰奥克兰大学统计系的Ross Ihaka和Robert Gentleman基于S语言基础上共 ...

  6. c语言 奥数题目及答案,科学网—C语言做一道小学奥数题 - 康建的博文

    见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...

  7. c语言 奥数题目及答案,科学网-C语言做一道小学奥数题-康建的博文

    见过一道小学奥数题,记得题目是:从5月1日到7月1日数字0-9无重复的时间有多少个?(如0512142804是05月12日14:28:04,其中0.1.4有重复, 0526174839无重复). 大概 ...

  8. .sh是什么语言_为什么《山海经·中次二经》中,把“西王母”叫做“马腹”?...

    为什么<山海经·中次二经>中,把"西王母"叫做"马腹"? 作者:亚布 为什么<山海经·中次二经>中把"西王母"叫做& ...

  9. 1071svm函数 r语言,科学网—R中的svm - 吴锐的博文

    svm理解: LSSVM: 最小二乘支持向量机(Least squares support vector Maehine,LSSVM)是SVM的一种变体,把问题转化成对一个 线性方程求解,所需计算资源 ...

最新文章

  1. Chapter 5 Blood Type——11
  2. cordova打包安卓app
  3. 记录 之 numpy扩充某一维度,并重复填充
  4. 剖析Disruptor:为什么会这么快?(一)锁的缺点
  5. 正则表达式强化,爬虫练习
  6. [合作赞助]九叔生日由中国移动、51cto、奇虎360以及一帆浩瀚联合举办
  7. IE6、7 a链接内图片加滤镜后导致a标签链接失效问题解决
  8. 计算机科学与技术 net,计算机科学与技术
  9. 累加求和a+aa+aaa+aa…a_过半深圳券商评级跃升4家维持在AA级
  10. Google code android开源项目(五)
  11. mysql查询最接近的记录
  12. Android Multimedia框架总结(九)Stagefright框架之数据处理及到OMXCodec过程
  13. 阿里架构师首次畅谈余额宝背后的故事
  14. Redis开发与运维教程
  15. OpenCV: 读取图片中某个点的像素值
  16. 坦克世界怎么显示服务器准心,坦克世界设置方法 坦克世界如何设置图像
  17. msm8953 lk阶段lcd流程
  18. C# NPOI 导出Excel 小数位数控制
  19. oc 之中的 汉字字符串转化成为拼音 汉字字符串的排序
  20. 基于阿里云服务器使用kubeadm搭建k8s集群

热门文章

  1. vb ADO控件连接ACCESS数据库做登录密码的例子
  2. 怎么把钉钉的文件导入电脑_钉钉文件怎么保存到电脑
  3. python将汉字转为拼音字母_科学网—[转载]python中文汉字转拼音 - 陈明杰的博文...
  4. Git私服客户端免密码登录
  5. 练手/翻译软件/有道翻译API/XML解析/正则/Java
  6. H3C交换机SSH配置(20200922)
  7. 老码农教你学英语(学习素材)
  8. hfs支持php文件系统,HFS+文件系统的发展及特点介绍
  9. 咸鱼软件应用—Arnold2019安装
  10. 缓冲区(1):为什么会有缓冲区(缓存)?