C语言程序要读入一行文本,以空格分隔若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。

题目内容:
你的程序要读入一行文本,其中以空格分隔为若干个单词,以‘.’结束。你要输出这行文本中每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如“it's”算一个单词,长度为4。注意,行中可能出现连续的空格。

输入格式:

输入在一行中给出一行文本,以‘.’结束,结尾的句号不能计算在最后一个单词的长度内。

输出格式:

在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。

输入样例:

It's great to see you here.

输出样例:

4 5 2 3 3 4

1、首先,定义一个常量,控制字符串的长度。

2、定义两个数组,保存文章中的字符和最短单词。

3、用do-while循环控制输入文章,条件是不等于句号。

4、取文章中的字符,保存在数组art中。

5、用for循环控制获取文章中的最短单词,条件是小于等于l。

6、用if语句判断是否为空格和句号,获取一个单词。

7、获取最短单词,并保存在数组word中。运行程序,输入以句号结束的英文文章,电脑就会输出最短的单词和单词长度。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-07-30
#include <stdio.h>
#include <string.h>
void main()
{
char str[256] = "";
char tmp[sizeof(str)] = "";
char *p ;

gets(str);
strncpy(tmp, str,strlen(str) - 1);//去掉后面的.
p = strtok(tmp, " ");
printf("%d ", strlen(p));
while((p = strtok(NULL, " ")))
printf("%d ", strlen(p));
printf("\n");
}

追问

输出格式:

在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,"行末没有最后的空格"。
这个行末没有空格如何实现?

追答

不符合你的要求???
这个行末没有空格啊

追问

提交系统自动判定,有四个测试数据,一个没过。

追答#include <stdio.h>
#include <stdlib.h>

void main()
{
char str[1024] = "";
char *p;
int count = 0;
fgets(str,sizeof(str),stdin);
p = str;
while (1) {
if (*p != ' ' && *p != '.')
count++;
else if(*p == ' ')
{
printf("%d ", count);
count = 0;
}
else if(*p == '.')
{
printf("%d ", count);
break;
}
p++;
}
printf("\n");
}

追问

程序异常,exit code非0

追答

你是拿什么系统测试的啊
测试的数据是哪些?

追问

网上的一个系统。具体我也不清楚。

本回答被网友采纳
第2个回答  2015-04-23
好久不编程,忘了,思路应该就是每次读一个字符看是不是空格,不是空格就设个计数器累计
这里计数器可以弄个数组,然后输出就行了,没难度呀追问

如何在开始定义的时候不指定str的长度?

相似回答