爱睡懒觉的猫猫 2021-12-08 23:40 采纳率: 85.7%
浏览 47
已结题

有关字符串数组元素的翻转

题目给出一个字符串,包含字母与数字,其中每扫描到数字时,对应字符串数组该数字下标的字符与该数字前的字符这一段要前后翻转,翻转后去掉该数字,继续扫描
样例输入
Hel,ol3!dlrow6
样例输出
Hello,world!
我的代码这个样例是通过了的,但是别的样例总是不能通过,不知道哪里有问题,想了好久了,人都麻了


#include<stdio.h>
#include<string.h>
int main(){
    char a[100],b[100];
    int len,i,j,num;
    int m,n,k=1;
    scanf("%s",a);
    len=strlen(a);
    for(i=0;i<len;++i){     //将a中元素放入数组b 
        b[i]=a[i];
    }
    for(i=0;i<len;++i)      //找到其中的数字 
    {   
        if(a[i]>='0'&&a[i]<='9'){
            num=a[i]-'0';      //字符对应数字 
            for(j=i+1;j<len;++j)
            {
                if(a[j]>='0'&&a[j]<='9')  
                {
                    num=num*10+a[j]-'0';
                    k++;
                }
                else break;    
            }
            m=i;            //实现数组对应元素前后互换
            for(j=num;j<i;++j){
                a[num++]=b[--m];
                }
            for(j=i;j<len;++j){
                a[j]=a[j+k];
                
            } 
            len=len-k;           
        }
        for(n=0;n<len;++n){     //将a中元素放入数组b 
        b[n]=a[n];
         }
        
    }
    printf("%s",a);
    return 0;
}
  • 写回答

1条回答 默认 最新

  • bekote 2021-12-09 00:55
    关注

    试试len=len-k;下面加a[len]='\0';

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月9日
  • 已采纳回答 12月9日
  • 创建了问题 12月8日

悬赏问题

  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大