问答题 给定程序中,函数fun的功能是:将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。 例如,s所指字符串为:asd123fgh5##43df,处理后新字符串为:123543asdfgh##df。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行,也不得更改程序的结构! 给定源程序: #include #include #include #include char *fun(char *s) { int i, j, k, n; char *p, *t; n=strlen(s)+1; t=(char*)malloc(n*sizeof(char)); p=(char*)malloc(n*sizeof(char)); j=0; k=0; for(i=0; i { if(isdigit(s[i])) { /**********found**********/ p[__1__]=s[i]; j++;} else { t[k]=s[i]; k++; } } /**********found**********/ for(i=0; i<__2__; i++) p[j+i]= t[i]; p[j+k]=0; /**********found**********/ return __3__; } main() { char s[80]; printf("Please input: "); scanf("%s",s); printf("/nThe result is: %s/n",fun(s)); }
【正确答案】第一处:函数中申请了两个内存空间,其p是存放数字字符串,t是存放非数字字符串,根据条件可知,p依次存放数字字符串,其位置由j来控制,所以应填:j。 第二处:利用for循环再把t中的内容依次追加到p中,其中t的长度为k,所以应填:k。 第三处:最后返回p的首地址即可,所以应填:p。
【答案解析】