二维数组和多维数组(1)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字符数组应用举例
• 例5——11:读入若干个字符串,(用****作 为结束输入的标志),找出长度最大的一个字 符串,并输出该字符串。 • 例5——12:求出一个字符串中制定字符C的个 数。(#prog31) • 例5——13:将S串中所有字符前移一个位置, 第一个字符移到最后。(#prog30) • 例5——14:将S串中所有字母改成改字母的下 一个字母,z改成a,大小写部变。(#prog29) • 例5——15:在字符串中删除指定的字符 (strdelec.c) • 例5——16:两个字符串连接。(strcat.c) 17
字符数组和字符串(2)
• 例1:统计在aa字符串中‘a’到‘z’出现 的次数,结果放在数组bb中输出。 (L5_7_0) • 例7.8(p138)统计一行文字中单词的个数。
11
几个函数
几个函数: (1)strcpy(字符数组名 , “字符串”);(例L5—7) 将字符串拷贝到字符数组中且自动加‘ \0 ’ 。 也可 strcpy(字符数组名1 ,字符数组名2 ); 但不能用 str1 = str2 的赋值方式,除非是指针变量。 (2)strcat (字符数组名1 ,字符数组名2);(例L5—8) 连接两个字符串成为一个字符串。 (3)strcmp(字符串1 ,字符串2);(例L5—9) 比较两个字符串。 字符串1 = 字符串2 则返回值为0 字符串1 > 字符串2 则返回值为一正整数 字符串1 < 字符串2 则返回值为一负整数
无初始化时数组的赋值: char a [9];
a [0] = ‘C’;
a [1] = ‘o’; …
a [8] =‘\0’;
内 存 存 放 示 意 图
C O M P U T E R \0
8
字符数组和字符串(2)
不是定义时,不能 a [9] = “Computer”,C语言 不允许用赋值表达式向数组整体赋值。 字符串的输入: 可用 char a [9] ; char a [9]; scanf(“%s” , a); 注:a前不加& for (j=0; j<9; j++) 符号,为什么? scanf(“%c” , &a [j]); 输入 Computer 回车(系统自动
作业与上机
P142 7.13\ 7.10\ 编写一个程序,删除字符串中的所 有空格。 将若干个字符串排序
二维数组和多维数组(1)
4、数组元素在内存中的存放形式: 例:INT A[3][3]={0,1,2,3,4,5,6,7,8}; A[0][0] A[0][1] A[0][2] A[1][0] A[1][1] A[1][2] A[2][0] A[2][1] A[2][2] 0 1 2 3 4 5 6 7 8
二维字符数组
1、二维字符数组初始化: char str [3] [6]={“China”, “Japan”, “Korea”}; 2、二维字符数组输入: For(i=0;i<3;i++) gets(str[i]); 3、二维字符数组输出: For(i=0;i<3;i++) printf(“%s” , str [i] ); 输出Japan。 这里,str [i] 相当于一个一维数组名。 注意:每个字符串的结尾都有‘ \0 ’ 。 例5——10:在一批名字中查找指定的名字。
二维数组和多维数组(1)
3、初始化: int a[2] [3] ={{1, 2, 3}, {4, 5, 6}}; 或 int a [2] [3] ={1, 2, 3, 4, 5, 6}; 问题: 若 int a [2] [3] ={1, 2, 3, 4} 怎样描述每个元素 的值? 若 int a [2] [3] ={{1, 2}, {3}} 又如何? int a [ ] [3] ={1, 2, 3, 4, 5, 6} 省略的数值是多少? int a [2] [ ] ={1, 2, 3, 4, 5, 6} 这样描述正确吗?
Printf(“Enter your name:”); gets(name); for(i=0;i<MAX;i++) if(strcmp(list[i],name)==0) flag=1; if (flag==1) printf(“%s is in our class\n”,name); else printf(“%s is not in our class\n”,name); }
字符串的输出: Baidu Nhomakorabearintf(“%c” , a […] ); 输出一个字符。 printf(“%s” , a); 输出一个字符串。
加入 ‘\0’)。
字符数组和字符串(2)
gets( ) 和 puts ( )函数: 当用scanf函数输入字符串时,若输入 “I am a student” 该怎么办?因为scanf函数以空格或回车键作为结束符, 这时,可用 gets(数组名)来输入。 如:char a[15]; gets( a ); 它仅以回车符作结束。 Puts(数组名); 一次输出一个字符串且自动换行。
当堂练习:求两个矩阵的和矩阵。
字符数组和字符串(1)
二、字符数组和字符串 定义: char 数组名 […]; 初始化:char c [9] = {‘C’, ‘o’, ‘m’, ‘p’, ‘u’, ‘t’, ‘e’, ‘r’ }; 也可以这样初始化 char a [9] = {“Computer”}; 则在末尾自动加‘\0’ 。 若{ }提供的初值个数小于数组的长度,则顺次将这些字 符赋值,其余补\0; 若{ }提供的初值个数大于数组的长度,则按语法错误处 理; 若{ }提供的初值个数等于数组的长度,则在定义时可以 省略数组长度,系统会自动根据初值个数来确定数组 长度;
二维数组和多维数组(2)
例1:二维数组的使用。(例L5-4) 例2:求二维数组的最大元素及其所在的行、列坐标。 (例L5—5) 例3: 求一个3×4矩阵的所有靠外侧的元素值之和。(例 L5_6_new) 3 8 9 10 a= 2 5 -3 5 7 0 -1 4
二维数组和多维数组(3)
main ( ) { int sum,j,k; int a [3] [4] ={3, 8, 9, 10, 2, 5, -3, 5, 7, 0, -1, 4}; for (j=0; j<3; j+ = (m-1)) for (k=0; k<4; k++) sum = sum+a[j][k] ; for (k=0; k<n; k=k+n-1) for (j=1; j<m-1; j++) sum = sum+a [j][k]; }
14
字符串数组应用举例
(例L5_10) #define MAX 5 #define LEN 10 main() {int I,flag=0; char name[LEN]; static list[MAX][LEN]={“zhang”, “wang”, “li”, “tan”, “ling”};
字符串数组应用举例
几个函数
(4)strlen(字符串) 测试字符串的长度。(不包括字符 ‘\0’) main( ) { char str [ ] = “How do you do!”; printf(“%d” , strlen(str)); } 结果输出14 (5)strlwr(字符串):将字符串中大写变小写 (6)strupr(字符串):小写变大写。
二维数组和多维数组(1)
• 数学上的矩阵以及反映现实数据的表格 等,通常用二维数组来表示。
1 4 7 2 5 8 3 6 9 89 12 23 89 89 90 89 88 77 79 90 89 87 87 67 34 56 67 78 98
二维数组和多维数组(1)
一、二维数组和多维数组 1、定义: 数据类型 数组名 [ 常量1 ] [ 常量2 ]; 例:int a[2][3] 注意:不论是什么,其元素个数的表达式不能用 变量表示。 比如:错误的定义方法: int a[n][m]; 2、引用: 数组名 [ 下标 ] [下标 ] 例:上述数组a的元素为a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] 注意:行、列下标均从0开始,下标不要越界
相关文档
最新文档