给定一句英语,要求编写程序,将句中所有单词颠倒顺序输出。
思路:使用gets函数读入一整行,从左至右枚举每一个字符,以空格为分隔符对单词进行划分,并按顺序存放到二维字符数组中,最后按单词输入顺序的逆序输出所有单词。
#include<cstdio>
#include<cstring>
int main()
{
char str[90];
gets(str);//gets函数输入整行数据
int len = strlen(str),r=0,h=0;//r为行,h为列
char ans [90][90];//ans[0]~ans[r]存放单词
for(int i=0;i<len;i++){
if(str[i]!=' '){ //当元素不是空格时将元素放入二维数组的某一维中
ans[r][h++] = str[i];
}else //当元素是空格时,将二维数组的该为存放结束符
{
ans[r][h]='\0';
r++;
h = 0;
}
}
for(int i= r;i>=0;i--){ //逆向输出二维数组中每一维存放的单词
printf("%s",ans[i]);
if(i>0)printf(" ");
}
return 0;
}
结果: