数组C语言程序设计(谭浩强第三)讲解.ppt
文本预览下载声明
三、二维字符数组与一组字符串 char str[4][10]={{ W, a, n, g, c, h, e, n, g,\0}, {L, i, \0}, {J, i, a, n, g, \0}, {S, u, n, \0} }; 等价于: char str[4][10]={ Wangcheng, Li, Jiang, Sun}; str[0] W a n g c h e n g \0 L i \0 J i a n g \0 S u n \0 str[1] str[2] str[3] 三、二维字符数组与一组字符串 char str[4][10]={ Wangcheng, Li, Jiang, Sun }; 说明: (1)可以使用二维字符数组存储一组字符串, 第一维的长度(即行数)取决于字符串的个数 , 第二维的长度(即列数)取决于最长字符串的长度+1 。 (2)每个字符串的存储空间是相同的 , 每个字符串的存储地址可用二维字符数组的行下标表示。 str[0] W a n g c h e n g \0 L i \0 J i a n g \0 S u n \0 str[1] str[2] str[3] 例13 输入一行字符,统计其中有多少个单词 #include stdio.h main() { char string[81]; int i,num=0,word=0; char c; gets(string); for(i=0;(c=string[i])!=\0;i++) if(c== ) word=0; else if(word==0) { word=1; num++; } printf(There are %d words \ in the line\n,num); } 输入一字符串给 string i=0 num=0 word=0 当((c=string[i])!=‘\0’) c=空格 真 真 假 假 word=0 word=1 num=num+1 i=i+1 输出:num word==0 word=1标志一个新单词开始 num用来计数单词个数。 当前字符=空格 是 否 未出现新单词,使word=0,num不累加 前一字符为空格(word==0),新单词出现, word=1,num加1 前一字符为非空格(word==1),未出现新单词 ,num不变 否 0 是 1 1 是 1 未 0 1 否 0 是 1 2 否 1 未 1 2 是 1 未 0 2 否 0 是 1 3 是 1 未 0 3 否 0 是 1 4 否 1 未 1 4 否 1 未 1 4 否 1 未 1 4 例 输入:I ?am ?a ?boy. 当前字符 是否空格 word原值 新单词开始? word新值 num值 ? ? ? I a m a b o y . 例14 有三个字符串,找出其中最大者 H o w \0 H e l l o \0 H i g h \0 str[0] str[1] str[2] #include stdio.h #include string.h main() { char string[20],str[3][20]; int i; for(i=0;i3;i++) gets(str[i]); if(strcmp(str[0],str[1])0) strcpy(string,str[0]); else strcpy(string,str[1]); if(strcmp(str[2],string)0) strcpy(string,str[2]); print
显示全部