北航C语言课件第5节.pptVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北航C语言课件第5节

构造类型 – 数组和指针 高级语言程序设计(一) (C Programming) 第五讲:程序设计方法(三) 复杂数据程序设计 本章目标 掌握二维(多维)数组的定义与初始化; 掌握指针说明与指针运算; 掌握指针与数组的关系; 掌握指针作为函数参数; 掌握指针数组; 掌握结构的定义和使用; 了解自引用结构。 问题5.1:旋转矩阵 【问题描述】 输入一个自然数N(2≤N≤9),要求输出如下的旋转矩阵,即边长为N*N,元素取值为1至N*N,1在左上角,呈顺时针方向依次放置各元素。 ?N=3时: ??? 1??? 2??? 3 ??? 8??? 9??? 4 ??? 7??? 6??? 5 【输入形式】 从标准输入读取一个整数N。 【输出形式】 向标准输出打印结果。输出符合要求的方阵,每个数字占5个字符宽度,向右对齐,在每一行末均输出一个回车符。 【输入样例】 4 【输出样例】 ????1??? 2??? 3??? 4 ?? 12?? 13?? 14??? 5 ?? 11?? 16?? 15??? 6 ?? 10??? 9??? 8??? 7 问题5.1:问题分析 显然要用一个 9 x 9的二维整数数组来存放生成的旋转矩阵。 二维(多维)数组 二维(多维)数组 如, float y[4][3]; 二维(多维)数组初始化 多维数组的初始化 int y[4][3] = { { 1, 3, 5 }, { 2, 4, 6 }, { 3, 5, 7 }, } int y[4][3] = { 1, 3, 5, 2, 4, 6, 3, 5, 7 }; 也同上,因为在C语言中,数组元素按行存贮。 int y[4][3] = { {1}, {2}, {3}, {4} } 二维(多维)数组使用* 例:对一个二维数组分别按行和按列求和 #include stdio.h #define ROWS 4 #define COLS 4 int main() { int matrix[ROWS][COLS], row, col, sum; for(row=0; rowROWS; row++) for(col=0; colCOLS; col++) scanf(“%d“, matrix[row][col]); for(row=0; rowROWS; row++) { sum = 0; for(col=0; colCOLS; col++) sum += matrix[row][col]; printf(“Sum of row%d = %d\n”,row, sum); } for(col=0; colCOLS; col++) { sum = 0; for(row=0; rowROWS; row++) sum += matrix[row][col]; printf(“Sum of col%d = %d\n”,col, sum); } return 0; } 二维(多维)数组使用 注意:如果把一个二维数组作为参数,则在函数定义中,形参数组的说明中必须指明列的数目,而行的数目可空着不写。 如: main( ) { float a[4][3], b[3][4], c[4][4]; … fun(a, b, c); … } void fun(float x[ ][3], float y[ ][4], float z[ ][4]) { … } 问题5.1:算法设计 问题5.1:算法设计 设array[9][9]用于存放旋转矩阵,n为旋转矩阵的阶,m为当前填写的层数,初值为0; 读入一个整数到n; for(m=0; mn/2; m++) 填充当前层(即分别填充A,B,C,D四段); 若n为奇数,则 填充最后一个数字; 问题5.1:代码实现 /* c5_1.c */ #includestdio.h #define SIZE 9 int main() { int array[SIZE][SIZE]; int n,m, num, i,j; num = 1; scanf(%d,n); for (m=0;mn/2;m++) { for (i=m;in-m-1;i++) array[m][i] = num++; for (i=m;in-m-1;i++) array[i][n-m-1] = num++; for (i=m;in-m-1;i++) array[n-m-1][n-i-1] = num++;

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档