学习内容:
输入一句话,然后把这个字符串以单词为单位,逆转输出。
比如将“Alice call Jack”转换为“Jack call Alice”,
代码展示:
#include <Windows.h>
#include <iostream>
#include <string>
using namespace std;
int main(void) {
char str[250];
cout << "请输入一句话:";
gets_s(str,sizeof(str)); //输入一行
int i=0; //访问字符数组下标
while (str[i]!='\0') { //扫描本句话
while (str[i] == ' ') i++; //扫描空格
int j=i; //非空格访问下标
while (str[j]!='\0' && str[j] !=' ') j++; //扫描非空格
for ( int k1=i, k2=j-1; k1<k2; k1++,k2--) { //进行第一个单词字母调换
char tem=str[k1]; //列:输入 123 456 789 调换为 321 654 987
str[k1]=str[k2];
str[k2]=tem;
}
i=j;
}
for ( int k1=0,k2=i-1;k1<k2;k1++,k2--) { //进行整句话字母调换 由 321 654 987 调换为 789 456 123
char tm=str[k1];
str[k1]=str[k2];
str[k2]=tm;
}
cout << str <<endl;
system("pause");
return 0;
}
效果展示:
遇到的问题
- 因输入保存字符变量定义 char类型 应用 gets_s(str,sizeof(str)); //输入一行 来进行输入
错误使用了C++ cin>>str 的输入方式; - for 循环中 int类型变量声明(int k1,int k2 ;? 编译时出现k2未声明标识符 改为 (int k1,k2;; )时问题解决;
- for ( int k1=0,k2=i-1;k1<k2;k1++,k2–) k2 应为 k-- , 写错 成 k++ , 导致越界 无限循环 估计内存挤爆 电脑直接卡死;…尴尬!!!