C语言程序设计 利用数组处理批量数据.ppt
6. strlen函数----测字符串长度的函数 其一般形式为: strlen (字符数组) 它是测试字符串长度的函数 函数的值为字符串中的实际长度 6.3.6 善于使用字符串处理函数 6. strlen函数----测字符串长度的函数 char str[10]=”China”; printf(”%d”,strlen(str)); 输出结果是5 也可以直接测试字符串常量的长度 strlen(”China”); 6.3.6 善于使用字符串处理函数 7. strlwr函数----转换为小写的函数 其一般形式为 strlwr (字符串) 函数的作用是将字符串中大写字母换成小写字母 6.3.6 善于使用字符串处理函数 8. strupr函数----转换为大写的函数 其一般形式为 strupr (字符串) 函数的作用是将字符串中小写字母换成大写字母 6.3.6 善于使用字符串处理函数 例6.8 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。 解题思路:问题的关键是怎样确定“出现一个新单词了” 从第1个字符开始逐个字符进行检查,判断此字符是否是新单词的开头,如果是,就使变量num的值加1,最后得到的num的值就是单词总数 6.3.7字符数组应用举例 判断是否出现新单词,可以由是否有空格出现来决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内) 如果测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”,此时使num累加1 如果当前字符为非空格而其前面的字符也是非空格,则num不应再累加1 6.3.7字符数组应用举例 用变量word作为判别当前是否开始了一个新单词的标志,若word=0表示未出现新单词,如出现了新单词,就把word置成1 前面一个字符是否空格可以从word的值看出来,若word等于0,则表示前一个字符是空格;如果word等于1,意味着前一个字符为非空格 6.3.7字符数组应用举例 Y c=空格 word=0 N word=0 Y word=1 num++ N if(c==' ') word=0; else if(word==0) { word=1; num++; } 当前字符 I a m a b o y . 是否空格 否 是 否 否 是 否 是 否 否 否 否 word原值 0 1 0 1 1 0 1 0 1 1 1 新单词开始否 是 否 是 否 否 是 否 是 否 否 否 word新值 1 0 1 1 0 1 0 1 1 1 1 num值 1 1 2 2 2 3 3 4 4 4 4 …… char string[81],c; int i,num=0,word=0; gets(string); for (i=0;(c=string[i])!=‘\0’;i++) if(c==‘ ’) word=0; else if(word==0) { word=1; num++; } printf(“%d words\n”,num); …… 一定要设初始值 …… char string[81],c; int i,num=0,word=0; gets(string); for (i=0;(c=string[i])!=‘\0’;i++) if(c==‘ ’) word=0; else if(word==0) { word=1; num++; } printf(“%d words\n”,num); …… 相当于 c=string[i]; c!=‘\0’ 例6.9 有3个字符串,要求找出其中最大者。 解题思路:设一个二维的字符数组str,大小为3×10。每一行存放一个字符串 char str[3][10]; for (i=0;i<3;i++) gets (str[i]); C h i n a \0 \0 \0 \0 \0 str[0] J a p a n \0 \0 \0 \0 \0 str[1] I n d i a \0 \0 \0 \0 \0 str[2] 可以把str[0],str[1],str[2]看作3个一维字符数组,可以把