//
// main.m
// SundayOne
//
// Created by dllo on 15/7/4.
// Copyright (c) 2015年 Clare. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
//找出一段字符串中的最长单词
char str[] = "ni hao world nihao ";
int maxCount = 0; // 最长单词的长度
int len = 0;// 中间变量即每个单词的长度
int max= 0;// 最长单词开始的位置
for (int i = 0; i < strlen(str); i++) { // i不能大于字符串的长度
if (str[i] != ' '&& str[i] != '\0') { // 如果我的第i个字符不为空也不是结束的时候执行此处
len++; // 让中间变量自增1
if (maxCount < len) { // 如果我的最长单词的长度小于我的中间变量执行此处
maxCount = len; // 将中间变量的值赋给最长单词的值
max = i - maxCount +1; // 最长单词的起始地址就是当前的单词地址减去最长单词地址后再加1,注意此处的max会出现值相同的时候,是因为没一个单词的起始位置都一样
}
}else{ // 如果我的第i个字符为空格或者结束执行此处
len = 0; // 让中间变量清零
} // 中间变量清零后再执行此循环让len重新计数
}
printf("最长的单词从第%d位开始\n",max); // 输出最长单词的起始地址
printf("最长的单词是:");
for (int i = max; i < maxCount + max; i++) { // 令i等于最长单词的起始位置,并且小于最长单词的结束位置
printf("%c",str[i]); // 输出第i个位置上的字符,程序到次结束.但是要注意如果有两个相同长度的最长单词是只能输出第一个最长的单词,第二个还未输出,此处有待改进,但是如果将 maxCount < len 处改为 maxCount <= len 输出的就为第二个最长的单词
}
printf("\n");
return 0;
}