请将图4-9、图4-10和图4-11流程图中(1)~(4)空缺处的内容填写完整。 函数f_str(char *str,char del)的功能是;将非申字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如,若str的值为“669816

admin2009-02-15  41

问题 请将图4-9、图4-10和图4-11流程图中(1)~(4)空缺处的内容填写完整。
函数f_str(char *str,char del)的功能是;将非申字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。例如,若str的值为“66981636666257”,del的值为“6”,调用此函数后,将输出3个子字符串,分别为“981”、“3”和“257”。请将函数f_str中(6)~(8)空缺处的内容填写完整。
   [函数]
   void f_str(char *str,char del)
   {    int i,j,len;
        len = strlen(str);
        i = 0;
        while (i<len) {
            while (  (6)  )
                i++;    /* 忽略连续的标志字符 */
                /* 寻找从srt开始直到标志字符出现的一个子字符串 */
                j = i+1;
                while (str[j] !=del && str[j] !=’\0’)
                    j++;
             (7)="\0";           /* 给找到的字符序列置字符串结束标志 */
            printf (" %s\t", & str );
             (8);
        }
   }

选项

答案函数f_str(char*str,char del)的功能是:将非空字符串str以分割标志字符为界线,分割成若干个子字符串并输出。由函数说明和C代码可知,该函数对给定的字符串进行从左至右的扫描,找出不包含标志字符(变量del的值)的子字符串。在该函数C代码中,变量i的初值为0,len表示字符串的长度。当 i<len时进入循环体。如果当前字符(即str[i]的值)是标志字符,则不做处理,继续扫描以处理标志字符连成一串的情况。因此(6)空缺处所填写的内容是“str[i]==del”或其等价形式。 当退出第2个while循环时,当前字符str[i]不是标志字符,此时从str[i]开始继续寻找,直到标志字符出现的…个子字符串(变量i保持不变,用j标记寻找的过程),给找到的字符序列置字符串结束标志,以便于后面语句的输出。因此(7)空缺处所填写的内容是“str[j]”。 printf输出语句结束之后,就要继续寻找后面不包含标志字符的子字符串。此时,需要把数组指针i移至j的后面,再继续扫描。因此(8)空缺处所填写的内容是“i=j+1”。

解析
转载请注明原文地址:https://jikaoti.com/ti/8kW7FFFM
0

最新回复(0)