0,1条件妙用(输出英语句子中最长的单词)

0,1条件妙用(输出英语句子中最长的单词)

来自一个C语言萌新的初略理解
可以说编写教材的老师真的有点难为我这一个初学一个多月的萌新了(第一次写博客,写的不好的地方,还劳烦各位大佬多多指教)

具体代码如下

#include<stdio.h>
#include<string.h>
int i;
int main()
{
	char a[100];
	int real(char c);
	int longest(char s[]);
	gets(a);
	for (i = longest(a); real(a[i]); i++) {/*对与循环条件:通过下面的函数判断这个元素是不是字母,目的也就是为了只输出这个最长的单词*/
		printf("%c", a[i]);
	}
	return 0;
}
int real(char c)
{
	if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z')) {//判断该元素是不是字母,并以返回值作为条件
		return 1;
	}
	else {
		return 0;
	}
}
int longest(char s[])
{
	int flag = 1, place=0, point,l = 0, length=0;
	for (i = 0; i < strlen(s); i++) {
		if (real(s[i])) {               /*检查数组元素为字母,标志是单词,则开始记*/
			if (flag) {       /*已经确认是一个单词了,可以记下单词首字母位置,point即表示单词首字母在数组中的位置*/
				point = i;
				flag = 0;     /*关闭point计数,因为已经进入单词中间部分了,这时候,就是说,本次循环,s[i]还表示单词首字母,下一次就不是首字母了,下一次就走else里的l++*/
			}
			else {
				l++;/*以l表示单词长度,一直到上层if不成立,单词结束,其实就是读到了空格,停止计数,这时候l的值就是这个单词的长度*/
			}
		}
		else {
			flag = 1;
			if (l > length) {
				length = l;/*找到较长那个单词,并更新目前最长单词长度*/
				place = point;/*标记出较长的单词首字母在数组中的位置,即下标*/
				l = 0;/*再将单词长度计量 l 赋0,便于下一次计数*/
			}
		}
	}
	return(place);
}

这上面的代码是教材后答案的思路,但是答案没有给注释,我在这里标上注释,希望同学者不被绕晕吧,我用的教材是谭浩强老师的c第五版。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值