每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊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
