Crush_Y_X 2022-04-29 10:44 采纳率: 66.7%
浏览 44
已结题

C语言 怎样多次移动整个数组啊 没什么思路

编写一个函数,利用指针在字符串s中的指定字符前插入标记字符。指定字符和标记字符均从键盘输入。

要求:子函数 char *InsertStr(char *s,char t,char c)

【输入形式】

输入主串s,输入指定字符t,输入标记字符c。

【输出形式】

输出插入后字符串

【样例输入】

abcabcde

b

【样例输出】

a#bca#bcde

  • 写回答

3条回答 默认 最新

  • a5156520 2022-04-29 11:27
    关注

    用strcpy就可以实现字符串的移动,下面是一个实现,供参考:

    
    #include  <stdio.h>
    #include <string.h>
    char * InsertStr(char *s,char t,char c){
        
        char ch;
        int i=0;
        char temp[150];
        while(s[i]!='\0'){
            
            if(s[i]==t){
                if(i==0){ //如果插入的是第一个字符位置 
                    strcpy(temp,s);  //复制当前字符位置往后的字符串到temp数组 
                    s[i]=c;  //当前位置插入标记字符 
                    strcpy(s+1,temp);  //当前位置后面拼接原来的字符串 
                //    printf("s=%s\n",s);
                    i+=2;  //指向指定字符后面的一个字符位置 
                    continue;  //开始下一个循环 
                }else {  //如果插入的是第一个字符后的位置 
                    strcpy(temp,s+i);  //复制当前字符位置字符串到temp数组 
                    s[i]=c;  //当前位置插入标记字符 
                    strcpy(s+i+1,temp);  //当前位置后面插入一个字符拼接原来的字符串 
                //    printf("s=%s\n",s);
                    i+=2; //指向指定字符后一个字符 
                    continue; //开始下一个循环 
                }
            }
            
            i++;//指向下一个字符位置 
        }
        
        
        return s;
        
    } 
    
    
    int main(void){
        char s[100];
        char t,c;
        scanf("%s",s);
        while(getchar()!='\n')
            continue;
        scanf("%c",&t);
    //    printf("t=%c\n",t);
        while(getchar()!='\n')
            continue;
        scanf("%c",&c);
    //    printf("c=%c\n",c);
        
        InsertStr(s,t,c);
        puts(s);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月2日
  • 已采纳回答 4月29日
  • 创建了问题 4月29日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算