单词倒排
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
时间限制:10000
内存限制:65536
输入
输入为一个字符串(字符串长度至多为100)。
输出
输出为按要求排序后的字符串。
样例输入
I am a student
样例输出
student a am I
刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!
单词倒排
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。
时间限制:10000
内存限制:65536
输入
输入为一个字符串(字符串长度至多为100)。
输出
输出为按要求排序后的字符串。
样例输入
I am a student
样例输出
student a am I
void flashback(char a[], int j, int p); //倒序函数
int main(void)
{
char a[10000];
int j, i, k, end;
char temp;
gets(a);
end = strlen(a)-1 ;
for (i = 0; i < end+1; i++) //先处理特殊符号
if (!isalpha(a[i])) //非字母将第一个符号替换为’ ’
{
a[i]=’ ’;
j=0; //j用来记录连续特殊带符号的个数
if(i==0) //如果是首字符 删除他
{
for(k=1;k<=end-1;k++)
a[k]=a[k+1];
a[k]=‘\0’;
}
else k=i+1; //k为特殊符号后的下一字符
while (!isalpha(a[i])&&i<(end+1))
{
i++;
j++;
}
j–;
if(i==(end+1) ) //如果特殊字符结尾,截断字符串
a[k-1]=‘\0’;
else {
for(k=1;k<=end-j;k++) //通过搬移数组去除掉连续的特殊字符
a[k] = a[k + j];
a[k] = ‘\0’;
}
end=strlen(a)-1;
}
flashback(a, 0, end); //句子倒序
for (i = 0; i < end; i++)
if (!isspace(a[i]) && i < end) {
j = i++;
while (!isspace(a[i]) && i < end)
i++;
if (i < end) k = –i;
else k = end;
flashback(a, j, k);
}
puts(a);
}
void flashback(char a[], int j, int p)
{
int i;
char temp;
for (i = j; i < p; i++, p–)
{
temp = a[p];
a[p] = a[i];
a[i] = temp;
}
}
本文链接:单词倒排 编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输
版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!