第九次作业总结
实验1:
#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; }
实验2:
#include<stdio.h> int main(void) { int i,j; int a[10][10]; for(i=1;i<10;i++){ for(j=1;j<=i;j++){ a[i][j]=i*j; printf("%d*%d=%d\t",i,j,a[i][j]); } printf("\n"); } return 0; }
实验3:
#include<stdio.h> int main() { int i,k,temp; char str[81],ch,ch1; printf("输入一个字符:\n"); scanf("%d%d",&ch,&ch1); printf("input a string:"); i=0; while((str[i]=getchar())!='\n') i++; for(i=0;str[i]!='\0';i++) { if(str[i]==ch) { k=i;temp=1; } } if(temp==1) printf("这个字符最大的下标是:%d",k); else printf("Not found"); return 0; }
实验4:
#include<stdio.h> int main() { int i,k,temp; char str[80]; int n; printf("Enter a string:"); i=0; while((str[i]=getchar())!='\n') i++; str[i]='\0'; k=i-1; for(i=0;i<k;i++){ temp=str[i]; str[i]=str[k]; str[k]=temp; k--; } for(i=0;str[i]!='\0';i++) putchar(str[i]); return 0; }
一.知识点总结:
1.二维数组的定义:
二维数组定义的形式:类型名 数组名[行长度][列长度]
例如:int a[3][2];
定义1个二维数组a,3行2列,6个元素
2.二维数组的引用:
二维数组的引用形式:类型名 数组名[行下标][列下标]
行下标的范围:0~行长度-1
列下标的范围:0~列长度-1
3.二维数组的初始化
(1)分行赋初值
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}
static int b[4][3]={{1,2,3},{},{4,5}};
数组a 1 2 3 数组b 1 2 3
4 5 6 0 0 0
7 8 9 4 5 0
0 0 0
(2)顺序赋初值
int a[3][3]={1,2,3,4,5,6,7,8,9};
static int b[4][3]={1,2,3,0,0,0,4,5};
(3)赋值时省略行长度:
对全部元素都赋了初值,int a[][3]={1,2,3,4,5,6,7,8,9};
分行赋初值时,在初值表中列出了全部行,static int b[][3]={{1,2,3},{},{4,5},{}}
4.字符串的存储和运算可以用一维字符数组实现,一维字符数组的定义,引用,初始化与其他类型的一维数组一样
5.字符串常量用一对双引号括起来的字符序列,字符号的有效长度:有效字符的个数,字符串可以存放在一维数组中
字符数组初始化:用字符串常量 数组长度>=字符串的有效长度+1
6.普通字符数组:数组元素的个数是确定的,一般用下标控制循环
字符串:没有显示地给出有效字符的个数,只规定在字符串结束符'\0'之前的字符都是字符串的有效数字,一般用结束符'\0'来控制循环
7.将字符串存入数组,对字符串初始化还可以采用赋值和输入方法
二.实验心得
这次作业基本上没有什么问题,都能顺利的完成,都是老师上课讲过的,可能会有地方不同,但是通过看书还是可以解决的,通过这次作业对二维数组有了一定的了解,跟一维数组的使用方法差不多,对字符串的使用也掌握的差不多,但还需在课下时间进行巩固,才能在以后更灵活的使用。