二维数组
定义形式为:类型名 数组名 【行长度】【列长度】
int a[6][6];
引用二位数的的元素要制定两个下表,及行下标和列下标:数组名【行下标】【列下标】
同一维数组相同其合理的取值范围是【0,行(列)长度-1】
在二位数组的输入中是按照如下顺序输入的
1 | 2 | 3 |
4 | 5 | 6 |
7 | 8 |
9 |
在定义二维数组的过程中,有两种方法
1.分行赋初值
类型名 数组名【行长度】【列长度】={{初值表0},......{初值表k},......}
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}
此时为:1 2 3
4 5 6
7 8 9
与一维数组相同二维数组也可只为部分元素赋值
2.顺序赋值法
类型名 数组名【行长度】【列长度】={。。。。。。。。。。}
int a[3][3]={1,2,3,4,5,6,7,8,9}
等同于上者
二维数组的赋值一般使用循环嵌套
for(i=0;i<80;i++} for(n=0;i<80;i++) scanf("%d",&a[i][n]
一位字符数组是存放字符型数据的一维数组,所以他的定义初始化等均与一维数组相同,在此不再赘述
字符串是一串字符,以\0结尾,在c语言中被视为特殊的一维字符数组
他的定义一般为
while((str[i]=getchar())!='\n') i++; str[i]='\0';
第一题
#include<stdio.h> int main() { int a[6][6]; int i,j,n,m,temp,x; //为二维数组赋值 printf("ENTER: x"); for(n=0;n<6;n++) for(m=0;m<x;m++) scanf("%d",&a[i][j]); //行列互换 for(n=0;n<6;n++) for(m=0;m<x;m++) if(i<=j) { temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } for(n=0;n<6;n++) for(m=0;m<6;m++) printf("&4d",a[i][j]); printf("\n"); return 0; }
第二题
#include <stdio.h> int main() { int i,j; int a[9][9]; for(i=1;i<=9;i++) for(j=1;j<=9;j++) a[i-1][j-1]=i*j; for(i=0;i<9;i++) { for(j=0;j<9;j++) printf("%4d",a[i][j]); printf("\n"); } }
第三题
#include<stdio.h> int main() { char str[80]; int i=0,temp=0; char m; printf("ENTER string:"); while((str[i]=getchar())!='\n') i++; str[i]='\0'; printf("请输入要查询字母:"); scanf("%c",&m); for(i=0;i<80;i++) if(str[i]==m) { printf("是第%d个字母",i); temp=1; break; } if(temp==0) printf("NOT FOUND\n"); return 0; }
第四题
#include <stdio.h> int main() { char a[80]; static char b[80]; int i,n,m,; printf("请输入字符串(80长度以内):\n"); while((a[m]=getchar())!='\n') m++; a[m]='\0'; for(i=0;i<80;i++) for(n=m;n>=0;n--) b[n]=a[i]; for(i=0;i<80;i++) printf("%c",b[i]); return 0; }