一道C++编程题

定义函数char *fun(char *str),依次互换字符串str中前后对应奇数位置上的元素,并在函数中分别输出原字符串和执行互换操作后的字符串。例如,原字符串为"ggoi romndno",执行操作后的字符串为"good morning"

//#include "stdafx.h"//If the vc++6.0, with this line.
#include <iostream>
using namespace std;
char *fun(char *str){
int i,j;
for(j=0;str[j];j++);
--j = j&1 ? j : j-1;
for(i=1;i<j;i+=2,j-=2)
str[i]^=str[j],str[j]^=str[i],str[i]^=str[j];
return str;
}
int main(int argc,char *argv[]){
char s[]="ggoi romndno";
cout << fun(s) << endl;
return 0;
}

运行结果:

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-10-28

#include <stdio.h>
int main()
{int i,j;
 char c,s[200];
 gets(s);
 for(j=0;s[j];j++);
 if(j%2==0)j--;
 for(i=1;i<j;i+=2,j-=2)
 {c=s[i]; s[i]=s[j]; s[j]=c;}
 printf("%s\n",s);
 return 0;
}

追问

大佬又碰见你了😂

本回答被提问者采纳
第2个回答  2020-04-21

#include <iostream>

using namespace std;


int search(int* p1, int n, int* p2);

void print(int* p, int n);

int main()

{

int arr1[10] = {1,2,3,4,5,6,7,8,9,10};

int arr2[] = { 0 };

int count = search(arr1, 10, arr2);


print(arr1, 10);

print(arr2, count);


system("pause");

}


int search(int* p1, int n, int* p2)

{

int result = 0;

for (int i = 0; i < n; i++)

{

if (p1[i] % 2 != 0)

{

p2[result] = p1[i];

result++;

}

}

return result;

}


void print(int* p, int n)

{

for (int i = 0; i < n; i++)

{

cout << p[i];

}

cout << endl;

}

第3个回答  2018-10-28

看了接口有返回值,就不敢直接动输入

用了复制和内存释放,然而我想多了...

#include <string.h>
char *fun(char *str){
   int i,len=strlen(str);
   char *text=(char*)malloc(sizeof(char)*(len+1));
   text[len]='\0';
   if(len%2==1){
      len--;text[len]=str[len];
   }
   for(i=0;i<len;i++)
      text[i]=i%2==0? str[i] : str[len-i];
   return text;
};
int main(){
   char str[]="ggoi romndno";
   char *text=fun(str);
   printf("%s => %s",str,text);
   free(text);
   return 0;
}

ggoi romndno => good morning
Process returned 0 (0x0)   execution time : 0.019 s
Press any key to continue.

第4个回答  2018-10-28
手机下51自学网app!里面可以看到C++,或者java和其他语言方面的教学视频。追问

能不能先把眼前问题解决了😂

C++编程序题:(一)定义一个圆类XY,计算圆的面积和周长(). 要求:1.该...
\/\/类定义结束 int main() \/\/主函数{double t; \/\/双精度变量 XY O; \/\/XY类对象 printf("请输入半径:"); \/\/提示输入半径 scanf("%lf",&t); \/\/从键盘接受半径大小 O.Set(t); \/\/以t的值设置对象O的半径 t=O.Grith(); ...

c++编程问题,输入你的身高(单位是cm),转换成英尺和英寸显示。_百度知 ...
using namespace std;const double inch = 0.393701; \/\/ 定义英寸与厘米的换算常数 const double foot = 0.0328084; \/\/ 定义英尺与厘米的换算常数 int main() { cout.setf(ios_base::fixed, ios_base::floatfield);int cm;double myInch, myFoot;cout << "请输入你的身高(CM): ";cin...

一个c++的作业题,没看懂,求解
第四:JavaWEB WEB后端其实可以是很多种不同的编程语言,例如:PHP、C、C++、Java,他们都可以进行WEB后端的开发,我们既然选择了比较火爆的Java,那么我们学习的后端一定是基于Java语言实现的。 包括:Servlet、Filter、Jsp、EL、JSTL、MVC架构模式、数据库连接池(阿里巴巴的Druid连接池)、代理模式(动态代理)。另外后端学习...

用C\/C++编写小游戏:第 3 章 日期编程问题
题目一:判断输入的年份是否为闰年。闰年规则如下:非整百数的年份每四年增加一日为闰年;整百数的年份只有400的倍数才是闰年。基于此,编写程序判断输入的年份。题目二:计算输入的年、月、日表示的日期是当年的第几天。基于365天\/年、31天\/月等规则计算。题目三:获取从1970年1月1日0时起到现在...

谁可以帮我做一下这个C++C语言的作业
因为我对C语言的输入输出不太熟悉,对输入输出的错误不予判断!我按C++的方式给予判断。一、 基础题(15%)1.定义int n=5,a=12;写出a*=(n%=3);执行后变量n与a的值。【答案】n%=3 取余结果n=2 执行后:n=2;a=24 2.设a=b=5;分别判断表达式的真假:6>a>2与++b==6。【答案】...

洛谷刷题C++语言 | P1010 幂次方
洛谷刷题系列继续,今天咱们来看看一道C++题目P1010:幂次方表示。这道题旨在让你熟悉C++编程,并理解如何将正整数表示为2的幂次方的和。题目要求你给定一个正整数n,将其转换为2的幂次方的和,且使用括号表示次方,例如137可以表示为2(7)+2(3)+2(0)。这里的7、3可以用2的幂次方来表示,如7=2...

C++经典题目每日一练-第一天-十进制整数转十六进制字符串
示例1:输入162,输出A2;示例2:输入50,输出32;示例3:输入501,输出1F5。解题思路为:通过循环将十进制整数转换为十六进制字符串。刷题的重要性在于记忆方法和步骤,以及培养题感。每天刷一两道题,定期或系统性地刷题,以帮助记忆和节省时间。刷题时,要从题目中理解出题意图,找到适用的解题方法...

有好的C++题目,给我发一些
1. 一圆形游泳池如图所示,现在需在其周围建一圆形过道,并在其四周围上栅栏。栅栏价格为35元\/米,过道造价为20元\/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。2. 实现一矩形类,给定长、宽,计算矩形面积.3. 实现一矩形类,给定矩形左下角与右上...

C++一道简单算法题,大佬们看下为什么我的代码不能满分通过?
C++算法题:按题目的意思n<=2*10^9 图中红色框内代码i*j是有可能超过这个范围的,造成整数最大溢出得不到正确结果。应该改为一个for循环,从最大的数开始往小的数搜索,不要用乘法,用除法。for(int i = n-1; n >= sqrt(n); i--){ if(n%i==0)maxNum= i;break;} 当然这些要保证...

C++问题, 4. 下列程序执行完后,x的值是多少?
7. 表达式 50\/4的值是多少?在C++中如何用表达式描述大写字母?解:float A;A=fmod(50,4);cout<<A<<endl;8. 表示“大于10而小于20的数“,用C++表达式如何表示?解:if(i>10&&i<20)9. 当一个函数无返回值勤时,定义时函数的类型应是什么?面向对象的语言具有哪些特性?类定义中,缺省的访问...

相似回答