C语言学习:将字符串后移

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

例如,字符串中的内容为:*******A*BC*DEF*G****,移动后,字符串中的内容应当是:A*BC*DEF*G***********。在编写函数时,不得使用C语言提供的字符串函数。

代码示例

#include<stdio.h>
void fun(char *a)
{
   int i=0;
   char *p,*q;
   p=a;
   while(*p=='*')
        {
           i++;
           p++;
         }
   q=a;
   while(*p)
        {
           *q=*p;
           p++;
           q++;
         }
   for(;i>0;i--)
      *q++='*';
   *q='\0';
}
int main()
{
   char s[100];
   int n=0;
   printf("请输入只包含字母和*号的字符串:\n");
   gets(s);
   fun(s);
   printf("移动后的字符串:\n");
   puts(s);
}

运算结果:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 要将一个字符串中某一位后移,可以使用C语言中的字符串函数来实现。具体的做法是将目标位置后面的字符依次向后移,然后将目标字符插入到新的位置。 以下是一段示例代码: ```c #include <stdio.h> #include <string.h> void move_char(char *str, int index) { int len = strlen(str); char temp = str[index]; for (int i = index; i < len - 1; i++) { str[i] = str[i + 1]; } str[len - 1] = temp; } int main() { char str[] = "hello world"; int index = 3; move_char(str, index); printf("%s\n", str); return 0; } ``` 在上面的代码中,`move_char`函数接收一个字符串和一个索引值作为参数,表示要将字符串中该索引位置的字符后移。该函数首先取出目标字符,然后将目标位置后面的字符依次向后移,最后将目标字符插入到新的位置。在主函数中,我们调用`move_char`函数将字符串中的第4个字符(`l`)后移,并输出移动后的字符串。 ### 回答2: 在C语言中,可以通过以下代码将字符串的某一位向后移动: ```c #include <stdio.h> #include <string.h> void shiftString(char *str, int position) { int len = strlen(str); // 将指定位置之后的字符依次向后移动一位 for (int i = len; i > position; i--) { str[i] = str[i-1]; } // 在指定位置插入一个空字符'\0',即将指定位置后一位设置为空字符 str[position+1] = '\0'; } int main() { char str[100] = "Hello World"; int position = 3; // 将第4位后移 shiftString(str, position); printf("移动后的字符串: %s\n", str); return 0; } ``` 在上述代码中,通过`shiftString`函数来实现字符串后移操作。该函数接受一个字符串指针和一个位置参数,表示将该位置后的字符后移一位。首先通过`strlen`函数获取字符串的长度,然后使用循环将指定位置之后的字符向后移动一位。最后,在指定位置后一位插入一个空字符`'\0'`,以保证字符串的正确结束。在`main`函数中调用`shiftString`函数并打印移动后的字符串。 运行上述代码,输出结果为: ``` 移动后的字符串: Helo World ``` 可以看到,原字符串中的第4位`l`被向后移动,形成了移动后的字符串。 ### 回答3: 要将C语言中的字符串的某一位后移,可以按照以下步骤进行操作: 1.声明一个字符数组来存储字符串。 2.输入字符串的内容。 3.输入要后移的位数,记为move。 4.计算字符串的长度,记为length。 5.创建一个临时变量temp,用于存储最后一位字符。 6.将字符串从倒数第二个字符开始往后遍历,即从length-2到move的位置,依次将每一位的字符向后移动一位。 7.将最后一位字符存储到temp变量中。 8.将temp变量的值赋给move位置上的字符。 9.输出移动后的字符串。 下面是一个示例代码: #include <stdio.h> #include <string.h> int main() { char str[100]; int move, length, i; char temp; printf("请输入一个字符串:"); scanf("%s", str); printf("请输入要后移的位置:"); scanf("%d", &move); length = strlen(str); temp = str[length - 1]; for(i = length - 2; i >= move; i--) { str[i + 1] = str[i]; } str[move] = temp; printf("移动后的字符串为:%s\n", str); return 0; } 这段代码中,首先声明了一个字符数组str来存储字符串,然后通过输入函数读取字符串的内容。接下来输入要后移的位置move,并计算字符串的长度length。然后创建一个临时变量temp来存储最后一位字符。 通过一个循环,将字符串从倒数第二个字符开始往后遍历,即从length-2到move的位置,依次将每一位的字符向后移动一位。最后,将temp变量的值赋给move位置上的字符,即完成了字符串后移。 最后,输出移动后的字符串
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晞微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值