一.知识点
1.二维数组的定义和引用
类型名 数组名[行长度][列长度];
引用:数组名[行下标][列下标] 行下标合理范围值是[0,行长度-1],列下标合理取值范围是[0,列长度-1],所以类似九九乘法表就不能是a[9][9],要是a[10][10]。
2.二维数组的初始化
分行赋值:类型名 数组名 [行长度][列长度]={{初值表0},...,{初值表k},...};
顺序赋值:类型名 数组名 [行长度][列长度]={初值表}
3.矩阵术语和二维数组对应关系
主对角线:从矩阵左上角到右下角连线(i==j)
上三角:主对角线以上的部分(i<=j)
下三角:主对角线以下的部分(i>=j)
副对角线:从矩阵右上角到左下角的连线(i+j==N-1)
N:设N为正整数,定义一个N行N列的二维数组a,二维数组a表示n*n的方阵。
二.实验心得
要时刻注意二维数组行列下标是从0开始,但是矩阵一类的行列是从1开始的.所以导致我有时候行列的数不对,一旦错后面就成乱码了。
对元素赋初始值是要注意书写顺序。
作业9代码
#include<stdio.h> int main() { int i,j; int a[10][10]; for(i=1;i<10;i++){ for(j=1;j<10;j++){ a[i][j]=i*j; printf("%d*%d=%d\n",i,j,a[i][j]); } printf("\n"); } return 0; }
#include<stdio.h> int main() { char a[80],b; int i; int k; printf("请输入一个字符:"); for(i=0;(a[i]=getchar())!='\n';i++); a[i]='\0'; scanf("%c",&b); for(i=0;a[i]!='\0';i++) if(a[i]==b) k=i; printf("%d",k); if(k==-1) printf("Not Found!"); return 0; }
#include<stdio.h> int main() { char a[80]; int i,item; for(i=0;(a[i]=getchar())!='\n';i++); item=i; a[i]='\0'; for(i=item;i>=0;i--) printf("%c",a[i-1]); printf("\n"); return 0; }
#include<stdio.h> int main() { int i,j,n,temp; int a[6][6]; printf("Enter n:"); scanf("%d",&n); for(i=0;i<n;i++) for(j=0;j<n;j++) a[i][j]=i*n+j+1; for(i=0;i<n;i++) for(j=0;j<n;j++) if(i<=j) { temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } for(i=0;i<n;i++){ for(j=0;j<n;j++) printf("%4d",a[i][j]); printf("\n"); } return 0; }