给定程序MODll.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。 请改正函数fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动mmn函数,不得增行或删行。也不得更改程序的结构! #inc

admin2013-04-02  24

问题 给定程序MODll.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。
    请改正函数fun中指定部位的错误,使它能得出正确的结果。
    注意:不要改动mmn函数,不得增行或删行。也不得更改程序的结构!
#include
void fun(char *s)
{int i,j;
   for(i=0,j=0; s[j]="\0"; i++)
        if(s>=’0’ && s<=’9’)
/**********found**********/
            s[j]=s;
/**********found**********/
        s[j]=s;
}
main()
{char item[80];
   printf("\nEnter a string : ");gets(item);
   printf("\n\nThe string is : \"%s\"\n",item);
   fun(item);
   printf("\n\nThe string of changing is : \"%s\"\n", item);
}

选项

答案s[j++]=s[i]; s[j]=’\0’;

解析 (1)第一个标识下面“for(i=0,j=0; s!=’\0’; i++)”语句以i为循环参数对字符串s中的每一个字符进行循环判断,把是数字的字符从s移到s[j]中,j指向s字符串的数组下标,j的初始值为0,且在循环过程中一直没有改变。显然违背题意。因此“s[j]=s;”应改为“s[j++]=s;”。其中“if(s>=’0’&&s<=’9’)”为判断条件,判断每一个元素是否为数字字符。
(2)第二个标识下面,字符串的结束应以’\0’作为标志,所以程序中的“s[j]="\0";”语句应改为“s[j]=’\0’;”。
转载请注明原文地址:https://jikaoti.com/ti/ain0FFFM
0

最新回复(0)