想了老半天只能这样了有点啰嗦。。
- #include <stdio.h>
- #include <string.h>
- int main() {
-
- char ch[100]; // 存字符串差不多够了。。
- printf("请输入字符串:\n");
- // 录入除了'\n'以外的字符,为了能录入空格
- // gets有个警告我就百度了这个-_-||
- scanf("%[^'\n']", ch);
-
- char *p = ch;
- char temp[20]; // 临时存字符用
- char str[20] = {0}; // 存最长的估计够了
- int max = 0; // 记录最长单词字数
- int count; // 记录单词字符数
-
- while (*p != '\0') {
-
- count = 0; // 计数器每循环1次都清零
- memset(temp, 0, 20); // temp临时数组也是
-
- // 当前字符不是空格也不是尾巴
- while (*p != ' ' && *p != '\0') {
- temp[count] = *p; // 当前字符存起来
- count++; // 计数+1
- p++; // 指向下一个字符
- }
- // 来到这说明遇到空格单词存完了,或者到'\0'了
- // 如果新单词比上一个单词字多,就把这个单词交给str保存
- // 一样长的就不考虑了╮(╯_╰)╭
- if (max < count) {
- max = count;
- for (int i = 0; i < count; i++) {
- // str没被赋值的部分全是0,自带尾巴
- str[i] = temp[i];
- }
- }
- // 如果真的到了'\0',直接退出外循环
- if (*p == '\0')
- break;
- p++; // 否则说明只是遇到了空格,继续指向下一个字符
- }
- printf("最长单词是%s,字符数:%d\n", str, max);
- return 0;
- }
复制代码
还有个C和OC杂交版。。
- #import <Foundation/Foundation.h>
- int main() {
-
- char ch[100];
- NSLog(@"输入一个字符串!!!");
- scanf("%[^'\n']", ch);
-
- // 把C字符串转为NSString的
- NSString *str = [NSString stringWithUTF8String:ch];
-
- // 用空格@" "把字符串分割放入数组
- NSArray *array = [str componentsSeparatedByString:@" "];
-
- // 假定第一个是最长的 把它变回字符串
- NSString *maxStr = [NSString stringWithString:array[0]];
-
- // 一个个变成字符串然后看谁长 最长的交给maxStr存着
- // 无视第一个也被拿来比较 我不会弄。。
- for (NSString *str in array) {
- if (maxStr.length < str.length) {
- maxStr = str;
- }
- }
- NSLog(@"%@这货最长。。", maxStr);
- }
复制代码 |