南开百题难题破解(2)

题目要求:

  1. 输入一个英文句子,翻转句子中的单词顺序。但单词内的顺序不变。句子中单词空格隔开。
  2. 为简单起见,标点符号和普通字母一样处理。
  3. 例如输入"I am a student.",则输出 student. a am I

题目解答:

void StrOL(void)
{
	int i,j,len;
	int start=0,end=0;
	char buf;
	for (i=0; i<maxline; i++)
	{
		len=strlen(xx[i]);
		//该循环的作用是将行数据中的非字母数据置为空格字符,例如i am a student.运算后为i am a student t后含有空格
		for (j=0; j<len; j++)
		{
			if (!isalpha(xx[i][j]) && xx[i][j]!=' ')
			{
				xx[i][j] = ' ';
			}
		}
		strrev(xx[i]);//字符串倒置函数,将该行数据整体进行倒置,变为 tneduts a ma i
		//该段程序的作用是将以空格分隔的小字符串进行倒置
		for(j=0;j<len;j++)
		{
			if(isalpha(xx[i][j]))
			{
				start=j;//此时start指针指向t
				while(isalpha(xx[i][j]))j++;
				end=j-1;//此时end指针指向s
				while(start<end)
				{
					buf=xx[i][start];
					xx[i][start]=xx[i][end];
					xx[i][end]=buf;
					start++;
					end--;
				}
			}
		}
	}
}


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值