题目
- 输入一行字符串(单词和若干空格),输出该行单词(每个单词一行)
Input:hello_____world_ how___are___you___\n
Output:hello world how are you思路:是空格就不输出,不是空格就输出,再碰到空格注意输出换行 - 输入一行字符串,把字符串翻转 。
Input: I____am__a__student
Output: student__a__am____I
思路:
1、直接翻转一下
2、把每个单词找出来,原地自身翻转
代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void list_words()
{
int i;
char c[100];
while(gets(c)!=NULL)
{
i=0;
while(c[i])
{
if(c[i]!=' '&&c[i+1]==' ')
{
printf("%c\n",c[i]);
}else if(c[i]!=' '&&c[i+1]!=' ')
{
printf("%c",c[i]);
}
i++;
}
if(c[i-1]!=' ')
{
printf("\n");
}
}
}
void reverse(char *pstart,char* pend)
{
char tmp;
while(pstart<pend)
{
tmp=*pstart;
*pstart=*pend;
*pend=tmp;
pstart++;
pend--;
}
}
void word_reverse()
{
char c[100];
char *ps,*pe;
while(gets(c)!=NULL)
{
//字符串原地翻转
reverse(c,c+strlen(c)-1);
ps=pe=c;
while(*ps)
{
while(*ps!=' '&&*ps)//这里是找到单词的结尾
{
ps++;
}
reverse(pe,ps-1);//翻转单词
while(*ps==' ')//找到单词的开头
{
ps++;
}
pe=ps;
}
puts(c);
}
}
int main()
{
//1、
//list_words();
//2、
word_reverse();
system("pause");
}执行结果
1
2

京公网安备 11010502036488号