二级C语言 程序设计题

按题目要求编写完整功能代码,参考答案点击按钮展开

74程序设计题:删除字符串中所有数字字符

编写函数 fun,删除字符串 s 中所有数字字符('0'-'9'),结果仍存于 s。例如输入 "a1b2c3",输出 "abc"。

#include <stdio.h>
/* 函数功能:删除字符串 s 中的所有数字字符,结果仍存于 s。
   请在下方编写 fun 函数体。 */
void fun(char s[])
{
    /* 请在这里编写代码 */

}

int main()
{
    char s[100];
    printf("请输入字符串: ");
    gets(s);
    fun(s);
    printf("删除数字后: %s\n", s);
    return 0;
}
参考答案
void fun(char s[])
{
int i, j = 0;
for(i=0; s[i]!='\0'; i++)
{
if(!(s[i]>='0' && s[i]<='9'))
{
s[j] = s[i];
j++;
}
}
s[j] = '\0';
}
解析

考点:字符串原地删除。经典双指针法:i 遍历原串,j 指向新串当前位置。非数字字符 s[j]=s[i] 并 j++,数字字符跳过。最后必须 s[j]='\0' 收尾,否则残留旧字符。注意条件用 !(s[i]>='0' && s[i]<='9') 而不是 s[i]<'0' || s[i]>'9',两者等价但前者更清晰。