为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

二维数组字符数组

2018-02-05 9页 doc 24KB 260阅读

用户头像

is_751406

暂无简介

举报
二维数组字符数组二维数组字符数组 1.3 二维数组与多维数组 1.3.1 二维数组一般形式: 类型说明符 数组名 [常量表达式1][常量表达式2] 【例】float a[3][4],b[5][10] 注意:千万不要写成 a[3,4] 1.3.2 二维数组初始化: 1)分行给二维数组初始化 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}} 2)一一对应赋值 int a[3][4]={ 1,2,3,4, 5,6,7,8, 9,10,11,12} 3)对部分元素赋值 int a[3][...
二维数组字符数组
二维数组字符数组 1.3 二维数组与多维数组 1.3.1 二维数组一般形式: 类型说明符 数组名 [常量表达式1][常量表达式2] 【例】float a[3][4],b[5][10] 注意:千万不要写成 a[3,4] 1.3.2 二维数组初始化: 1)分行给二维数组初始化 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}} 2)一一对应赋值 int a[3][4]={ 1,2,3,4, 5,6,7,8, 9,10,11,12} 3)对部分元素赋值 int a[3][4]={{1},{5},{9}};„„对矩阵的第一列赋值,每行第一个值为1,5,9,其余为0 1 0 0 0 5 0 0 0 9 0 0 0 int a[3][4]={{1},{0,6},{0,0,11}}; 1 0 0 0 0 6 0 0 0 0 11 0 int a[3][4]={{1},{5,6}};„„第三行不赋值 1 0 0 0 5 6 0 0 0 0 0 0 int a[3][4]={{1},{},{9}};„„第二行不赋值 1 0 0 0 0 0 0 0 9 0 0 0 4)如果对所有元素都赋值,第一维可以省略,第二维必须有 【例】 int a[3][4]={ 1,2,3,4, 5,6,7,8, 9,10,11,12} 也可以写成:int a[][4]={ 1,2,3,4, 5,6,7,8, 9,10,11,12} 数组初始化的快捷方法——memset函数(内存中连续空间的初始化) int a[10]; for (i = 0; i < 10; i++) a[i] = 0; 和 #include memset(a, 0, sizeof(a)); 如定义一个二维数组int a[25][25];如何用memset对其初始化为0; memset( a, 0, sizeof( a ) ); 1.3.3 二维数组应用举例 【例】将一个二维数组行列互换,存到另外一个二维数组中 如 1 2 3 a= 4 5 6 1 4 b= 2 5 3,6 main() { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; for(i=0;i<=1;i++) { for(j=0;j<=2;j++) {printf(“%5d”,a[i][j]); b[j][i]=a[i][j]; } printf(“\n”); } for(i=0;i<=2;i++) { for(j=0;j<=1;j++) printf(“%5d”,b[i][j]); printf(“\n”); } } 【例】有一个3×4矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}},编程求出值最 大的元素及其所在的行号、列号 main() { int i,j,raw,colum,max; int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max= a[i][j];raw=i;colum=j;} printf(“%d,%d,%d”, a[i][j],raw,colum); } 【二维、多维数组训练】 1.求一个3*3矩阵两条对角线之和 2.利用二维数组打印杨辉三角(10行) 8 1 6 3 5 7 4 9 2 2要求打印出1到n的自然数构成的魔方阵 3.找出一个二维数组的鞍点。即该位置上的数在该行上最大,在该列上最小。也可能没有鞍 点。 1.4 字符数组 1.4.1 字符数组的一般形式: char c[10] 1.4.2 字符数组的初始化 1)逐个字符赋值给数组元素 【例】char c[10]={„i?,? ?,?a?,?m?,? ?,?h?,?a?,?p?,?p?,?y?}; 2)若字符个数大于数组长度,按语法错误处理;若字符个数小于数组长度,将这些字符赋值 给前面那些元素,其余元素为空(即‘\0’,ASCII码 0表示空操作) 3)如果数组长度与字符个数相同,数组长度可以省略(不用人工数) 【例】char c[]={„i?,? ?,?a?,?m?,? ?,?h?,?a?,?p?,?p?,?y?}; 4)可以定义二维字符数组 char diamond[5][5]={{„ „,? „,?*?},{„ „,?*?,? „,?*?},{„*?,? „,? „,? „, „*?},{„ „,?*?,? „,?*?},{„ „,? „,?*?}} 钻石图形 1.4.3 字符数组的应用 【例】输出一个字符串 main() { char c[10]={ „i?,? ?,?a?,?m?,? ?,?h?,?a?,?p?,?p?,?y?}; int i; for(i=0;i<10;i++) printf(“%c”,c[i]); printf(“\n”); } 【例】输出钻石图形 main() { char diamond[][5]= {{„ „,? „,?*?},{„ „,?*?,? „,?*?},{„*?,? „,? „,? „, „*?},{„ „,?*?,? „,?*?},{„ „,? „,?*?}}; int i,j; for(i=0;i<5;i++) {for((j=0;j<5;j++) printf(“%c”,diamond[i][j]); printf(“\n”);} } 1.4.4 字符串和字符串结束标志 , C语言中,将字符串作为字符数组来处理 , 字符串结束标志?\0?,例如“C program”9个字符,内存中占10个字节,最后一个字节?\0? 是系统自动加上的 , ※补充字符数组初始化方法 char c[]={“I am happy”}; 也可以写成 char c[]= “I am happy”; 1.4.5 字符数组的输入输出 1)使用循环逐个字符输出。用格式控制符‘%c‘ 2)将整个字符串一次输出。用格式控制符‘%s‘ 【例】 char c[]={”China”;} printf(“%s”,c); 输出5个字符 char c[10]={”China”;} printf(“%s”,c); 仍然输出5个字符 3)整个字符串输入(读入),不需要加地址符 & 【例】 char s1[5], s2[5], s3[5]; scanf(“%s%s%s”,s1,s2,s3); 输入数据 how are you? 三个数组状态见下表 h o w \0 \0 a r e \0 \0 y o u ? \0 【例】 上题若改为 char s[13]; scanf(“%s”,s); 输入数据 how are you? 三个数组状态见下表 h o w \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 解释:实际上并不是把12个字符加上\0送到字符数组s中,只将空格前的how送到s中。 1.4.6 字符串处理函数 1.4.6.1 puts(字符数组)将以‘\0‘结束的字符序列(字符串),输出到终端。 加入已定义str是一个字符数组名,且该数组已经被初始化为“China”则执行 puts(str); 结果是终端上输出China puts 可以包含转义字符 【例】 char str[]={“China\nBeijing”}; puts(str); 输出 China Beijing 1.6.2 gets(字符数组) 将从键盘输入的字符串赋给字符数组,其函数值是字符数组的起始地址。 注意:puts gets函数无需格式控制符,但是每次只能读入、输出一个字符串。 1.6.3 strcat(字符数组1,字符数组2) 字符串连接函数:将“字符数组2”连接到“字符数组1”的后面。 说明: 1.“字符数组1”要足够长(容纳下“字符数组2”) 2.连接前两个字符串后面都有一个‘\0’,连接时,将“字符数组1”后面的‘\0’去掉,只保留“字符数组2”后面的‘\0’. 例 char str1[30]={“People?s Republic of”}; char str2[]={“China”}; printf(“%s”,strcat(str1,str2) 1.6.4 strcpy(字符数组1,字符数组2) 字符串复制函数:将“字符数组2”复制到“字符数组1”中 说明: 1.“字符数组1”要足够长(容纳下“字符数组2”) 2. “字符数组1”必须写成数组名形式,“字符数组2”可以是数组名,也可以是字符串。 例如:strcpy(str1,str2) strcpy(str,”China”) 都可以 3.复制的同时连字符串后面的‘\0’一起复制 4.字符串之间不能赋值,只能strcpy,下列写法都是错误的~ str1={“China”} str1=str2 5.可以部分复制。 strcpy(str1,str2,2) 将字符数组str2中前两个字符复制到str1中,然后加上字符数组结束符‘\0’ 1.6.5 strcmp(字符数组1,字符数组2) 字符数数组比较函数:对两个字符串自左向右逐个字符进行比较(按ASCII码大小比 较),直到出现不同字符或者?\0?为止。 说明: 1.两个字符串相等,函数值为 0 2.字符串1>字符串2,函数值为一正整数 3.字符串1<字符串2,函数值为一负整数 4.注意: if(str1==str2) printf(“yes”) ——错误~ if(strcmp(str1,str2)==0) printf(“yes”) ——正确写法~ 1.6.6 strlen(字符数组) 测试字符串长度的函数:函数值为字符串的实际长度,不包括结束符?\0? char str[10]={“China”}; printf(“%d”,strlen(str)); 输出结果为 5 1.6.7 strlwr (字符数组) 将字符串中大写字母转换成小写 1.6.8 strupr (字符数组) 将字符串中小写字母转换成大写 【字符数组训练】 输入一行字符,统计期中有多少个(单词之间用空格分开)
/
本文档为【二维数组字符数组】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索