C语言-学习数组.ppt
文本预览下载声明
1 2 3 4 5 6 8 7 4 3 2 1 8 7 6 5 [算法分析] (1)将矩阵A转换为矩阵B,也就是将A中的每一个元素的行和列的值互换。 0 行 2 列 A[0][2] 2 行 0 列 B[2][0] 查看源程序 B[i][j]=A[j][i] 例5-6 将一个矩阵A转置输出 例 求4*4矩阵元素的最小值,并输出其行号和列号。 算法思想 (1) 提供数据 初始表赋值 键盘赋值 随机函数赋值 (2) 输出矩阵 (3) 求最小值 假设第一个元素最小,历遍二维数组中所有的元素 求出最小值min以及该元素的行号、列号 让我试一试 参考源程序 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 杨辉三角形的特点: (1)每行的第一个元素为1, a[ i ][ 0 ]=1 (2)每行的最后一个元素也为1,即a[ i ][ i ]=1 (3)每行中其它元素的值为其前一行中的前一列元素和前一行中本列元素之和,即a[ i ][ j ]=a[ i-1 ][ j-1 ] + a [i-1 ][ j ] 查看源程序 P103 编程题: 打印以下形式的杨辉三角形 2006.4.21 main() { int s[ ][3]={9, 7, 5, 3, 1, 2, 4, 6, 8}; int i,j,s1=0,s2=0; for (i=0;i3;i++) /* 行数控制 */ for(j=0;j3;j++) /* 列数控制 */ { if (i==j) s1=s1+a[i][j] ; if (i+j==2) s2=s2+a[i][j] ; } printf(“s1=%d\n s2=%d\n”,s1, s2); } 9 7 5 3 1 2 4 6 8 i=j i+j==2 如何求出每列和的? 每行的和? 如何求出每列的最大数? 每行的最大数? 二维数组的最大值? 练习: 分析下列程序的执行结果 练习: 求一个数组中每行或每列的元素之和。 9 7 5 3 1 2 4 6 8 10 5 3 21 row 26 col Col[j] =a[1][j]+a[2][j]+a[3][j]+a[4][j] row[i]=a[i][1]+a[i][2]+a[i][3] A[i][0] A[i][0] A[0][j] A[0][j] 查看源程序 5.3 字符数组与字符串处理函数 字符数组: char 数组名[常量表达式] 字符串: 以转义字符 ‘\0’ 作为 结束标志 的 字符型 数组 ‘\0’占一个字节单元,但不计入字符串的长度。 H E L L O ! \0 字符串 H E L L O ! 字符数组 A、‘A’和“A”有什么区别呢 ”A”是字符串, ”A”占两个字节 ‘A’是字符,‘A’占一个字节 A是一个变量或常量的标识符 字符数组、字符串的定义和初始化 char ch1[10]; /*定义具有10个元素的字符数组*/ char ch2[5][6]; /*定义一个5行6列的字符数组*/ char ch[10]={C, ,P,r,o,g,r,a,m,!}; char s[10]={s, t, r, i, n, g, \0 } /*定义字符数组*/ /*定义字符串*/ char s[10]={ string }; char s[10]= string /*直接用字符串对字符数组赋值*/ 在程序中给数组赋字符串值 #include “stdio.h” #include “string.h” main() { char s[10], i; for (i=0; i9; i++) scanf (%c, s[ i ] ); s[ 9 ]= \0 ; for (i=0; i9; i++) printf(“%c”,s[i]); } 对一个长度为10的字符数组赋值 最后一个字节为 ’\0’ s[ 9 ]= \0 ; 输出字符数组 字符串的输入和输出 (1)用 %c 实现逐个字符输入输出 #include stdio.h main() { char a[4]; int i; printf(请输入三个字符:); scanf( %
显示全部