有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".

#include <stdio.h>
#include <assert.h>

int length(const char *str)
{
   int len=0;
  assert(str);
  while(*str)
  {
       len++;
       str++;
  }
  return len;
}
void reverse_str(char *start,char *end)
{
  while(start<end)
  {
                char tmp=*start;
                *start=*end;
                *end=tmp;
                start++;
                end--;
  }
}
char *reverse(char *str)
{
  int n=length(str);
  char *ret=str;  //先将起始位置保存在ret中
  char *start=str;
  char *end=str+n-1;
  reverse_str(start,end);
  while(*str)
  {
     start=str;
    while((*str!=‘ ‘ )&&(*str!=‘\0‘))
                {
                  str++;
                }
                end=str-1;
                reverse_str(start,end);
                 if(*str==‘ ‘ )
                {
                  str++;
                }
  }
  return ret;
}
int main()
{
        char str[]="student a am i" ;
        printf( "%s\n",reverse(str));
        system( "pause");
  return 0;
}
时间: 2024-08-26 11:55:05

有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".的相关文章

字符数组的内容为:&quot;student a am i&quot;;,将数组的内容改为:&quot;i am a student&quot;

有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求:不能使用库函数.只能开辟有限个空间(空间个数和字符串的长度无关). 代码如下: #include <stdio.h> #include <stdlib.h> #include <assert.h> void reverse_str(char *left, char *right) { assert(left);

将数组&quot;student a am i&quot;的内容改为&quot;i am a student&quot;

有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数.只能开辟有限个空间(空间个数和字符串的长度无关). #include<stdio.h> #include<assert.h> int my_len(char *str) {        int count=0; assert(str); while(*str) {    count++;    str++

将数组&quot;student a am i&quot;改为&quot;i am a student&quot;.

题目: 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求:不能使用库函数.只能开辟有限个空间(空间个数和字符串的长度无关). 题目分析: 由于题目中给定的字符串中包含空格字符,就不能简单的将数组的内容整个进行逆置,题目中要求不能使用库函数,并且只能开辟有限个空间,不能与字符串的长度有关,所以不能建立一个与原数组相同的数组来存放更改过的字符串. 根据给定数组内容的特点,能够想到先将数组中的每个元素先

对一个字符数组连续用gets函数出现的问题(缓冲区内容补充)

昨天调试程序(见下面代码)遇到下面一个问题: #include<stdio.h> int main() { int i = 1; while(i) { char str[100]; printf("please input a str:\n"); gets(str); puts(str); printf("continue:1,break:0\n"); scanf("%d",&i); } return 0; } 咦!!!我还没

(六)两种方式将一个文件的内容复制到另一个文件(第二种方式效率更高,第一种一个字符一个字符的读写,第二种一个数组一个数组的读写)

一:将一个文件复制给另一个文件,每次读取一个字符import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; public class CopyFile { /** * 需求:将一个文件复制给另一个文件 * @param args * @throws Exception */ public static void main(String[] args) throws Exce

php遍历字符串每一个字符转换成数组。

php:遍历字符串每一个字符,追加给新数组. <?php /*    $str[$i]:字符串变量名+下标可以取值到对应下标的字符串的值.    explode(separator,string,limit)可以以固定字符为断点转换成数组    ru */ $str = "abcde";//被遍历的字符串 $arr = array();//定义要输出的数组 for($i=0;$i<strlen($str);$i++){//遍历字符串追加给数组 $arr[] = $str[$

java中将一个字符数组赋值给另一个,两者同时变化

java中将一个字符数组赋值给另一个,两者的变化怎么是同步的?怎么才能让他们独立开? 比如有一个int[][] a 已经存在值,现在定义int[][] b=a;之后改变a的值,为何b也跟着改变?怎么才能那个让b不跟随a改变?如果b非变不可,我想记录下a没改变之前的值该怎么办?谢谢 如果需要b不变,就必须用for循环,使a数组的每个元素都复制到b的数组里.之所以b会随着a变化,那是因为他们指向了同一个对象.

1、给定一个字符数组,按照字典顺序进行从小到大的排序

/* * 1.给定一个字符数组,按照字典顺序进行从小到大的排序 * String[] arr = {"nba","abc","cba","zz","qq","haha"}; * 思路: * 1.对数组排序.可以用选择.冒泡 * 2.for嵌套和比较以及换位 * 3.问题:以前排的是整数,比较用的是运算字符 * * 字符串比较使用的是compareTo()函数 */public class

定义一个字符数组并初始化,统计字符&#39;a&#39;或&#39;A&#39;出现的次数

1 package com.imooc.array; 2 3 public class SortDemo2 { 4 5 public static void main(String[] args) { 6 //定义一个字符数组并初始化,统计字符'a'或'A'出现的次数 7 //定义一个字符数组ch并初始化 8 char[] ch={'a','b','c','A','a','d','a','e','f','g'}; 9 //循环遍历数组,统计字符'a'或'A'出现的次数 10 int sum=0;