c语言删除字符串中数字,统计数字个数

⑴ 编写函数int fun(char a[]),其功能是删除a指向的字符串中所有数字字符,统计被删除数字字符的个数并将其作为返回值返回,除了a指向的字符串以外不允许用其它数组。

⑵ 编写main()函数,调用fun()函数处理从键盘输入的包含数字字符的字符串,在屏幕上打印删除的字符个数以及删除数字字符之后的字符串。

【测试数据】 a1b23cd4 【运行结果】 4:abcd

思路,fun函数接收字符串,在fun函数里声明一个指针变量p指向a的地址,循环字符串,如果是数字,统计数字的加1,如果不是 就让*p++=a[i],(赋值后p地址加个一),就是在循环的过程中用指针给他赋值

代码:

#include<stdio.h>
 int fun(char a[]);
int main() {
  char arr[50];
  fgets(arr,50,stdin);//输入字符串,用gets,scanf也行
 int sz=fun(arr);//返回数字 
  printf("%d:",sz);
    printf("%s",arr);
    return 0;
}
int fun(char a[]){
  int sz=0;
  char *p=a;
for(int i=0;a[i]!='\0';i++){
if(a[i]>='0'&&a[i]<='9')
 sz++;   
else
	*p++=a[i];//如果是字母就 赋值 

}
 *p='\0';//别忘了赋值最后 加一个'\0',要不然后面的那一坨也会被输出 
  return sz;

}//a1b23cd4 【运行结果】 4:abcd

### Java中去除字符串中的数字字符后逆序输出的功能 要在Java中实现去除字符串中的数字字符并将其余字符逆序输出,可以按照以下方法完成: #### 方法描述 可以通过正则表达式匹配来移除字符串中的所有数字字符。之后利用`StringBuilder`类的`reverse()`方法对剩余字符进行逆序操作。 以下是完整的代码示例: ```java public class ReverseWithoutNumbers { public static void main(String[] args) { String input = "abc123def456ghi"; // 输入字符串 String result = removeDigitsAndReverse(input); System.out.println("结果:" + result); } public static String removeDigitsAndReverse(String str) { // 使用正则表达式替换掉所有的数字字符 String noDigitsStr = str.replaceAll("[0-9]", "")[^5]; // 将去掉数字后的字符串逆序 StringBuilder sb = new StringBuilder(noDigitsStr); return sb.reverse().toString(); } } ``` #### 代码解释 1. **移除数字**:通过调用`replaceAll("[0-9]", "")`方法,将字符串中的所有数字字符替换成空字符串。 2. **逆序处理**:创建一个`StringBuilder`对象,并传入已去除非数字部分的字符串;随后调用其内置的`reverse()`方法完成逆序操作。 3. 返回最终的结果作为函数输出。 此程序会接受任意包含字母和数字混合的字符串输入,经过上述两步处理后得到仅含字母且顺序颠倒的新字符串。 #### 输出示例 对于输入 `"abc123def456ghi"` ,执行以上代码将会打印如下内容: ``` 结果:ihgfedcba ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值