爱睡懒觉的猫猫 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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)