逆序输出单词(串)
时间: 1ms 内存:128M
描述:
输入一个字符串,空格作为单词分隔符,统计其中的单词,并将单词逆序输出
输入:
输入一个字符串
输出:
逆序输出单词
示例输入:
I love you!
示例输出:
you love I!
提示:
参考答案(内存最优[752]):
#include<stdio.h>
#include<stdlib.h>
struct string
{
char data[200];
int len;
};
struct string strassign()
{
struct string s;
int i;
char c;
for(i=0;;i++)
{
if(scanf("%c",&c)!=EOF)
s.data[i]=c;
else
break;
}
s.len=i;
return s;
}
struct string substr(struct string s,int i,int j)
{
struct string str;
int k;
str.len=0;
for(k=i-1;k<i+j-1;k++)
str.data[k-i+1]=s.data[k];
str.len=j;
return str;
}
int strequal(struct string s,struct string t)
{
int same=1,i;
if(s.len!=t.len)
same=0;
else
for(i=0;i<s.len;i++)
if(s.data[i]!=t.data[i])
{
same=0;
break;
}
return same;
}
struct string delstr(struct string s,int i,int j)
{
int k;
struct string str;
str.len=0;
if(i<=0||i>s.len||i+j>s.len+1)
return str;
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k=i+j-1;k<s.len;k++)
str.data[k-j]=s.data[k];
str.len=s.len-j;
return str;
}
int main()
{
int m,n,j=0,i,max=1,k;
char c,a[100];
struct string p1,p2,p3;
p1=strassign();
i=p1.len-2;
for(;i>=0;)
{
j=i;
while(p1.data[i]!=' '&&i>=0)
i--;
for(k=i+1;k<=j;k++)
{
printf("%c",p1.data[k]);
}
i--;
if(i>=0)
printf(" ");
}
printf("%c\n",p1.data[p1.len-1]);
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
#include<stdlib.h>
struct string
{
char data[200];
int len;
};
struct string strassign()
{
struct string s;
int i;
char c;
for(i=0;;i++)
{
if(scanf("%c",&c)!=EOF)
s.data[i]=c;
else
break;
}
s.len=i;
return s;
}
struct string substr(struct string s,int i,int j)
{
struct string str;
int k;
str.len=0;
for(k=i-1;k<i+j-1;k++)
str.data[k-i+1]=s.data[k];
str.len=j;
return str;
}
int strequal(struct string s,struct string t)
{
int same=1,i;
if(s.len!=t.len)
same=0;
else
for(i=0;i<s.len;i++)
if(s.data[i]!=t.data[i])
{
same=0;
break;
}
return same;
}
struct string delstr(struct string s,int i,int j)
{
int k;
struct string str;
str.len=0;
if(i<=0||i>s.len||i+j>s.len+1)
return str;
for(k=0;k<i-1;k++)
str.data[k]=s.data[k];
for(k=i+j-1;k<s.len;k++)
str.data[k-j]=s.data[k];
str.len=s.len-j;
return str;
}
int main()
{
int m,n,j=0,i,max=1,k;
char c,a[100];
struct string p1,p2,p3;
p1=strassign();
i=p1.len-2;
for(;i>=0;)
{
j=i;
while(p1.data[i]!=' '&&i>=0)
i--;
for(k=i+1;k<=j;k++)
{
printf("%c",p1.data[k]);
}
i--;
if(i>=0)
printf(" ");
}
printf("%c\n",p1.data[p1.len-1]);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。