读书人

把字符数组quot;I love baofengquot; 变换为quot;b

发布时间: 2013-10-18 20:53:13 作者: rapoo

把字符数组"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;
}
我觉得单词应该用代码来分割而不是写死位置,这样和直接输出结果有什么区别?

读书人网 >C语言

热点推荐