编写一个程序,按照相反的单词顺序
2016-04-23 14:56
323 查看
例如:see you later 程序的显示应为:later you see 下面是自己写的:
实际测的人家的代码执行效率比我自己写的高的多。。
/////下面是隔了几天自己写的
#include<iostream> using namespace std; void reverse(char *s); void main() { char str[]={"yang hai lin is a good person"}; cout<<str<<endl; reverse(str); } void reverse(char *s) { int len=strlen(s); char *tmp=(char *)calloc(len,sizeof(char)); char *ptr; int flg=0; ptr=strrchr(s,' '); while(ptr) { if (flg==0) //第一次进入去掉空格 { strcpy(tmp,ptr+1); *ptr='\0'; } flg++; strcat(tmp,ptr); *ptr='\0'; ptr=strrchr(s,' '); } char *tmp_space=" "; //最后拼接第一个单词 增加一个空格 strcat(tmp,tmp_space); strcat(tmp,s); cout<<tmp<<endl; }我的思路是定位最后的空格strrchr,然后把后面的单词取出来,然后把空格置' \0 ' ,截断! 如此循环 下面是答案:
#include <stdio.h> #include <string.h> #include <ctype.h> int main(void) { char str[81]; char *p, temp; int i,n,length; gets(str); for (p = str,i=0,n = strlen(str); i<n/2; i++)//将整个字符串倒序 { temp = *(p+n-1-i); *(p+n-1-i) = *(p+i); *(p+i) = temp; } puts(str); p = str; length=0; do //将字符串中的每个单词倒序 { if( isalpha(*p) ) { length++; } else { if(length>1) for(i=0; i<length/2; i++) { temp = *(p-1-i); *(p-1-i) = *(p-length+i); *(p-length+i) = temp; } length = 0; } } while(*p++ != '\0'); puts(str); return 0; }
实际测的人家的代码执行效率比我自己写的高的多。。
/////下面是隔了几天自己写的
#include<iostream> using namespace std; void reverse(char *s,int n); void main() { char a[]="yang hai lin is abcdefg goodabcd person"; int n=strlen(a); cout<<"原来: "<<a<<endl; reverse(a,n); //cout<<"NOW :"<<a<<endl; #if 1 int num=0; char ch; for(char *b=a;(*b)!='\0';b++) { if((*b)!=' ') { num++; continue; } char *b1=(b-num); char *b2=b; for(int i=0;i<num/2;i++) { ch=b1[i]; b1[i]=*(--b2); (*b2)=ch; } num=0; } //处理最后一个单词的逆序 char *b_last=a+n; for(int i=0;i<num/2;i++) { ch=*(b_last-num+i); *(b_last-num+i)=*(b_last-1-i); *(b_last-1-i)=ch; } cout<<a<<endl; #endif } void reverse(char *s,int n) { char tmp; for (int i=0;i<n/2;i++) { tmp=s[i]; s[i]=s[n-1-i]; s[n-1-i]=tmp; } }
相关文章推荐
- 怎么将一个16进制字符串转化为10进制输出?
- 反汇编工具capstone安装后import error
- 序言
- 从image/x-png谈ContentType(s)
- Appium在Android平台几种常见报错解决方案
- HDU 1201 18岁生日(日期计算)
- 盘点国内程序员不常用的热门iOS第三方库:看完,还敢自称”精通iOS开发”吗?
- 熟悉 Bash 快捷键来提高效率
- Hibernate注解----类级别注解以及属性注解详解----图片版本
- 软件异常处理系统及方法
- 堆和栈-----思考研究
- Java基础知识IO流(文本文件读取练习)
- 为vultr(CentOS6.7)安装破解版锐速
- Shiro配置错误之“Error creating bean with name 'securityManager' defined in class path resource”
- android4.4 状态栏透明修改
- Quartz.Net AnnualCalendar And PlugInConfigure
- LA 4794 Sharing Chocolate
- java垃圾回收机制
- argc和argv
- Hadoop2.6.0集群搭建