[个人笔记] 输入一句话,然后把这个字符串以单词为单位,逆转输出

学习内容:

输入一句话,然后把这个字符串以单词为单位,逆转输出。
比如将“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;
}

效果展示:

效果展示

遇到的问题

  1. 因输入保存字符变量定义 char类型 应用 gets_s(str,sizeof(str)); //输入一行 来进行输入
    错误使用了C++ cin>>str 的输入方式;
  2. for 循环中 int类型变量声明(int k1,int k2 ;? 编译时出现k2未声明标识符 改为 (int k1,k2;; )时问题解决;
  3. for ( int k1=0,k2=i-1;k1<k2;k1++,k2–) k2 应为 k-- , 写错 成 k++ , 导致越界 无限循环 估计内存挤爆 电脑直接卡死;…尴尬!!!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值