计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)
#include<stdio.h> #include<string.h> int main(void) { char ch; int i, len=0; while(1){ ch=getchar(); if(ch!=' '){ len++; } else if(ch==' '){ len=0; } if(ch=='\n') break; } printf("%d",len-1); return 0; }
#include <stdio.h> #include <string.h> int main() { int LastWordLen = 0; int WordsLen; char Words[5000]; fgets(Words, 5000, stdin); // scanf("%s", Words); WordsLen = strlen(Words); // printf("%d\n", WordsLen); for (int i = 0; i < (WordsLen - 2); i++) { if (Words[WordsLen - 2 - i] != ' ') continue; else LastWordLen = i; break; } if (0 == LastWordLen) LastWordLen = WordsLen - 1; printf("%d\n", LastWordLen); return 0; }【他山之玉】
#include <stdio.h> #include <string.h> int main() { char str[1000]; int a=0,i=0; while(scanf("%s",str) != EOF) {} a=strlen(str); printf("%d",a); }1,scanf()函数,如果转换说明是%s的话,他的读取规则是,“读取除空白以外的所有字符串”。scanf()函数跳过空白开始读取第一个非空白字符,并保存非空白字符直到再次遇到空白字符。也就是说!!!!scanf()函数根据%s转换说明读取一个单词!!!
#include <stdio.h> #include <string.h> int main() { char a[5000]={0}; gets(a); int l,i=0; l=strlen(a); while(a[l-1]!=' ') { i++; l--; } printf("%d",i); return 0; }
#include <stdio.h> #define MAX_LEN 5000 int main() { int i, ch, num = 0; while ((ch = getchar()) != '\n' && i < MAX_LEN) { i++; num++; if (ch == ' ') num = 0; } printf("%d", num); }
#include <stdio.h> #include <string.h> int main() { char input_string[5002]; scanf("%[^\n]", input_string); int len = strlen(input_string); int result = 0; for (int i = len - 1; i >= 0; i--) { if (input_string[i] != ' ') { result ++; } else if (input_string[i] == ' ') { break; } } printf("%d", result); return 0; }如果只是输出长度的话,那么逆序遍历到第一个空格的时候说明已经得到了长度。
#include <stdio.h> #include <string.h> int main(void) { char str[5000]; while (~scanf("%s", str)) {} printf("%d", strlen(str)); }
/** 题目:HJ1 字符串最后一个单词的长度 * 思路:从后往前遍历字符串找空格位置,最后单词长度 = 总长 - 空格位置下标 + 1;若无空格,下标置为 -1 * 难点:使用scanf("%s", str) 输入字符串遇到空格会停止输入;无空格情况 */ #include <stdio.h> #include <string.h> int main() { char str[5000]; int len; int i; gets(str); len = strlen(str); i = len; // 查找最后一个空格的位置,如果没有空格, i == -1 for (; i >= 0; i--) { if (str[i] == ' ') break; } printf("%d\n", len - i - 1); return 0; }