谭浩强第五版216页第10题
解题思路:
1.在输入字符串后,遍历时遇见空格则用一个数组将空格之前的单词长度记下来,并用另一个数组接收该单词的下标
2.将记录长度的数组遍历一遍,找到最长单词的长度,此时另一数组的此下标就是它在总数组的位置
3.按照下标输出这个单词
代码实现:
int main()
{
char s[100]; //字符串所在数组
int a[10] = { 0 }; //记录每个单词长度的数组
int b[10] = { 0 }; //记录每个单词的位置的数组
int i = 0; //i,j都是循环变量
int j = 0;
int max = 0; //max接收第二个数组最大值
int tmp = 0; //接收最长单词的下标
gets_s(s); //输入字符串
while (1)
{
if (s[i] != ' ' && s[i] != '\0') //没找到空格后将记录前一个单词长度
{
a[j]++;
}
else if (s[i] == ' '|| s[i] == '\0') //找到空格记录每个单词下标
{
b[j] = i - a[j]; //将单词下标记录到b数组中
j++;
if (s[i] == '\0') //读到\0终止循环
break;
}
i++; //保持继续读写下去
}
for (i = 0; i <= j; i++) //由于a数组每个元素记录单词长度
{ //找出最长的下标
if (max < a[i])
{
max = a[i];
tmp = i; //此下标也是该单词所在下标
}
}
for (i = b[tmp]; s[i] != ' ' && s[i] != '\0'; i++) //输出该单词
printf("%c",s[i]);
}
运行: