首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

把字符数组"I love baofeng" 变换为"baofeng love I"不另外申请内存

2013-10-18 
把字符数组I love baofeng 转换为baofeng love I,不另外申请内存本帖最后由 luoyihu 于 2013-10-16 22

把字符数组"I love baofeng" 转换为"baofeng love I",不另外申请内存
本帖最后由 luoyihu 于 2013-10-16 22:31:58 编辑   这是去年暴风影音校园招聘时的笔试题,不知道今年还有没有.困扰我一年了,不知道是不是这样解答的

#include<stdio.h>
#define swap(a,b)  {(a)=(a)+(b); (b)=(a)-(b); (a)=(a)-(b);}
void main()
{
char srcStr[15] = "I love baofeng";
int i = 0;// 计数

printf("%s\n",srcStr );
for( i = 0; i < 7; i++ )
{
swap( srcStr[i], srcStr[i+7] );
printf("%s\n",srcStr );
}// "baofengI love "

swap( srcStr[7], srcStr[13] );// "baofeng  loveI"(注意,中间是两个空格)
printf("%s\n",srcStr );

for( i=0; i<4; i++ )
{
swap( srcStr[i+8], srcStr[i+9] );
printf("%s\n",srcStr );
}
printf("%s",srcStr );
}

当然,变量i可以不申请,把for循环一条一条的写出来.我这里不想那么麻烦,就这样写了 C语言 笔试
[解决办法]

引用:
算了,送佛送到西

//#include <cstdio>
#include <stdio.h>

#define swap(a,b)  {char temp = a; a = b; b = temp;}

void reverse (char *first, char *last)
{
  while ((first!=last)&&(first!=--last)) {
    swap(*first, *last);
    ++first;
  }
}

int main()
{
    char strs[] = "I love baofeng";
    printf("%s\n", strs);
    reverse(strs, strs + sizeof(strs) / sizeof(char) - 1);
    printf("%s\n", strs);
    reverse(strs, strs + 7);
    reverse(strs + 8, strs + 12);
    printf("%s\n", strs);

    return 0;
}
我觉得单词应该用代码来分割而不是写死位置,这样和直接输出结果有什么区别?

热点排行