|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是PAT (Basic Level) Practice 里的说反话
#include <iostream>
#include <string>
using namespace std;
int main()
{ char a[80];
int sum=0;
int i=0,j=0,k=0;
int start=0;
while((scanf("%c", &a[i])) == 1 && a[i] != '\n')
{
i++;
}
int count=0,check=0;
sum=i;
for(i=0;i<=sum;i++)
{
if(a[i] != ' ')
{
check = 0;
}
else
{
check= 1;
break;
}//检查是否全句仅有一个单词
}
for(i=0;;i++)
{
if(a[i]!=' ')
{
start=i;//确定第一个不为空格的字符位置
break;
}
}
if(check==0)
{
cout<<a;
}
else if (check==1)
{ if(start==0)
{
for(i=sum-1;i>=0;i--)
{
if(a[i]!=' ')
{
count++;
}
else
{
if(count!=0)
{
if(k==0)
{
for(j=i+1;j<=i+count;j++)
{
cout<<a[j];
}
count=0;
k=1;
}
else
{
for(j=i;j<=i+count;j++)
{
cout<<a[j];
}
count=0;
}
}
else{
continue;
}
}
}cout<<' ';
for(i=0;i<count;i++)
{
cout<<a[i];
}
}
else
{
for(i=sum-1;i>=start-1;i--)
{
if(a[i]!=' ')
{
count++;
}
else
{
if(count!=0)
{
if(k==0)
{
for(j=i+1;j<=i+count;j++)
{
cout<<a[j];
}
count=0;
k=1;
}
else
{
for(j=i;j<=i+count;j++)
{
cout<<a[j];
}
count=0;
}
}
else
{
continue;
}
}
}
}
}
cout<<endl;
return 0;
}
- #include <stdio.h>
- /* 反转一个单词 */
- void foo1(char s[])
- {
- char c ;
- int i , m ;
- for(m = 0 ; s[m] && s[m] != '\t' && s[m] != ' ' && s[m] != '\n' ; m ++) ;
- for(i = 0 ; i < m / 2 ; i ++) {
- c = s[m - i - 1] ;
- s[m - i - 1] = s[i] ;
- s[i] = c ;
- }
- }
- /* 反转整个字符串 */
- char * foo2(char s[])
- {
- char c ;
- int i , m ;
- for(m = 0 ; s[m] ; m ++) ;
- for(i = 0 ; i < m / 2 ; i ++) {
- c = s[m - i - 1] ;
- s[m - i - 1] = s[i] ;
- s[i] = c ;
- }
- return s ;
- }
- int main(void)
- {
- char s[256] ;
- int i ;
- gets(s) ;
- for(i = 0 ; s[i] && (s[i] == '\t' || s[i] == ' ' || s[i] == '\n') ; i ++) ;
- for(; s[i] ;) {
- foo1(& s[i]) ;
- for(; s[i] && s[i] != '\t' && s[i] != ' ' && s[i] != '\n' ; i ++) ;
- for(; s[i] && (s[i] == '\t' || s[i] == ' ' || s[i] == '\n') ; i ++) ;
- }
- printf("%s\n" , foo2(s)) ;
- }
复制代码
编译、运行实况:
- D:\0002.Exercise\C>g++ -o x x.c
- D:\0002.Exercise\C>x
- Hello World Here I Come
- Come I Here World Hello
- D:\0002.Exercise\C>
复制代码
|
|