题目
- 输入一行字符串(单词和若干空格),输出该行单词(每个单词一行)
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