Arbitrary007 2021-02-03 18:13 采纳率: 66.7%
浏览 81

C语言——请问如何不使用额外的数组空间?

不使用额外的数组空间,将一个字符串按逆序重新存放。

编译器:VC++ 6.0

我的代码:

#include<stdio.h>
#include<string.h>


void main(void)
{
   char a[100],temp;
   puts("please input the string:");
   gets(a);
   for(int j=0;j<strlen(a)-1;j++)
       for(int k=0;k<strlen(a)-j-1;k++)
       {
           temp=a[k+1];
           a[k+1]=a[k];
           a[k]=temp;
       }
    puts("the reverse string:");
    puts(a);

}

尝试使用malloc函数:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>


void main(void)
{
   char a[100],temp;
   char *str;
   puts("please input the string:");
   gets(a);
   str=(char*)malloc(sizeof(a));
   for(int i=0;i=sizeof(a);i++)
       *(str+i)=a[i];
   for(int j=0;j<strlen(str)-1;j++)
       for(int k=0;k<strlen(str)-j-1;k++)
       {
           temp=str[k+1];
           str[k+1]=str[k];
           str[k]=temp;
       }
    puts("the reverse string:");
    puts(str);
    free(str);

}

 

出现情况:

请问如果不使用额外的数组空间,我知道要用malloc函数但是我不知道具体该怎么用,应该怎么去编写这个程序?谢谢大家能帮忙看看

  • 写回答

1条回答 默认 最新

  • peng450 2021-02-03 19:07
    关注

    你直接在a上面交换比较行了?为啥要创建新数组?

    len = strlen(a);

    for(int i = 0; i < len/2; i++){

      temp = a[i];

      a[i] = a[len-i];

      a[len-i] = temp;

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 使用aytodl训练,希望有直接运行的代码(关键词-数据集)
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥20 设计一个二极管稳压值检测电路
  • ¥15 内网办公电脑进行向日葵
  • ¥15 如何输入双曲线的参数a然后画出双曲线?我输入处理函数加上后就没有用了,不知道怎么回事去掉后双曲线可以画出来
  • ¥50 WPF Lidgren.Network.Core2连接问题
  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M