有一个字符数组的内容为:"student a am i", 请你将数组的内容改为"i am a student". (不使用库函数)

编写两个函数

一个函数reverse_string 传入字符数组以及字符数组的首尾下标

一个函数reverse_word 将单词逆序

#include<stdio.h>
#include<stdlib.h>

void reverse_string(char str[],int m,int n) {
	char tmp;
	for (;m < n;m++,n--) {
		tmp = str[m];
		str[m] = str[n];
		str[n] = tmp;
	}
}
void reverse_word(char str[]) {
	int bgn = 0, end = 0;
	int i;
	for (i = 0;str[i];i++) {
	if (str[i]==' '){
		end = i - 1;                       //找到空格后 空格字符的前一个字符即为上个单词的末位字母
		reverse_string(str, bgn, end);
		bgn = i + 1;                      //将下标移动到空格的下一个字符即下个单词的首个字母
	}
	}
	reverse_string(str, bgn, i - 1);     //执行完毕后 最后一个单词还没有完成逆序 因为找不到下一个空格字符
                                             //所以跳出循环后的此时的bgn为最后一个单词的首个字母的下标位置 最后一个单词的末位字母下标为整个字符串的长度-1
	reverse_string(str, 0, i - 1);       //最后再将整个字符串逆序

}

int main(){
	char str[] = "student a am i";
	reverse_word(str);
	printf("%s\n", str);

system("pause");
return 0;
}

使用库函数的方法后续补充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值