本帖最后由 WANGJIAO 于 2014-10-24 10:29 编辑
这样写为什么有时候可以,有时候不可以?大神快来救我~- // 在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。(C语言)
- #include <stdio.h>
- #include <string.h>
- int main(int argc, const char * argv[]) {
-
- //提示输入
- printf("输入已知字符串:\n");
- //接收数据
- char str[200];
- gets(str);
- //分别定义变量来存储需要数据
- int a = 0, b = 0, m = 0, max = 0;
- //判断是否空格,以此来计算单词长度
- for (int i = 0; i < strlen(str); i++) {
-
- if (str[i] == ' '||str[i]=='\0'){
- //b = 0,第一次出现空格的下标减去零再减1,得到的字符串长度
- a = (i - b)-1 ;
- //把第一个空格的下标值赋给变量b保存
- b = i;
- //判断并存储最大值
- if (max < a) {//把每一个字符串的长度与之前定义字符串长度的最大值比较
- //储存最大值
- max = a;
- //存储最长字符串后面空格的下标
- m = i;
- }
- }
- }
- printf("最长的单词是:");
- for (int i = m-max; i < m; i++) {
- //输出最长单词
- printf("%c", str[i]);
- }
- //换行,美观
- printf("\n");
- //输出长度
- printf("长度为:%d\n",max);
- return 0;
- }
复制代码
|
|