当前位置:首页>java>【每日编程-38期】AH上机题(三)

【每日编程-38期】AH上机题(三)

  • 2026-09-03 04:05:41
【每日编程-38期】AH上机题(三)
安徽大学上机题(三)

每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399

由键盘输入一行仅由英文字母及空格组成的字符,编程实现(相邻单词之间用一个空格或多个空格隔开)。

(1)输出每个单词及其长度。

(2)输出最长的单词。

输入样例:

I am a boy

输出样例:

I    1am   2a    1boy  3
解决方法:

(1)算法的基本思想:

要点在于如何划分单词,对于单词来说,结束标志是,最后一个位置是字符,下一个位置是空格或者’\0’(字符串结束标志,这是对于最后一个单词来说的)。清楚这点之后,如何分析单词就清晰了。首先,用一个变量指示单词开始的位置(非空格字符),然后继续遍历,直到找到空格字符或’\0’,这之间的字符就构成了一个单词。

(2)代码实现:

#include<iostream>usingnamespacestd;boolisCharacter(char c); //判断一个字符是否是字母intmain(void){char str[100];char word[100];     //用来存放当前最长的单词int start = 0;      //用来存放当前读取单词的开始位置int max_length = 0; //存放当前读取的单词中的最大长度cout << "Please input a sentence:" << endl;cin.get(str, 100);//定义工作指针来遍历字符串寻找单词int i = 0;while (str[i] != '\0')    { //当没有遍历完//先寻找单词的开始位置while (str[i] != '\0' && !isCharacter(str[i]))            i++;        start = i;//寻找单词末尾while (isCharacter(str[i]))            i++;int length = i - start;if (length > 0)        { //长度大于0才被视为单词//输出当前单词for (int j = start; j < i; j++)            {cout << str[j];            }//输出单词长度cout << '\t' << length << endl;//更新最长单词if (length > max_length)            {int k;                max_length = length;for (k = 0; k < length; k++)                {                    word[k] = str[k + start];                }                word[k] = '\0';            }        }    } //while//输出最长单词cout << "The longest word is:" << word << endl;return0;}boolisCharacter(char c){bool isCharacter = false;if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))    {        isCharacter = true;    }return isCharacter;}
明日预告:北师大上机题(一)

给出一系列字符串及其对应id,要求找出某个字符串对应的id。

输入n+1行,第一行输入字符串个数,接下来输入n行,每行输入字符串及对应的id。

最后输入其中的一个字符串,输出该字符串对应的id。

输入格式:

数据的条数

输入每条数据的字符串和对应的id

要查询的字符串

输出格式:

对应的id

输入样例:

5boring 5interesting 8hello 4world 2test 9world

输出样例:

word对应的id是2

最新文章

随机文章