7-26 单词长度
作者 翁恺
单位 浙江大学
你的程序要读入一行文本,其中以空格分隔为若干个单词,以.
结束。你要输出每个单词的长度。这里的单词与语言无关,可以包括各种符号,比如it's
算一个单词,长度为4。注意,行中可能出现连续的空格;最后的.
不计算在内。
输入格式:
输入在一行中给出一行文本,以.
结束
提示:用scanf("%c",...);
来读入一个字符,直到读到.
为止。
输出格式:
在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格。
输入样例:
It's great to see you here.
输出样例:
4 5 2 3 3 4
解答
#include<stdio.h>
int main(){
char ch;
int sum=0,flag=0; // flag的作用是控制输出时的空格问题
while(1){
scanf("%c",&ch);
if(ch!=' '&&ch!='.'){
sum++;
}
if(ch==' '&&sum!=0||ch=='.'&&sum!=0){
if(flag==0){
printf("%d",sum);sum=0;flag=1;
}else{
printf(" %d",sum);
sum=0;
}
}
if(ch=='.')break;
}
return 0;
}
方法
1.用flag:刚开始的时候最前面是不用输出空格的 flag的作用就是判断输不输出空格 如果flag==0直接输出数字 之后将flag改为1 当flag==1的时候就输出空格+数字了 (最开始输出第一个数字的前面不用空格 之后的输出都需要空格 所以只有最开始的flag等于0 之前flag应该都为1)
2.while(1):指不会跳出循环,若要跳出循环用break
3.&&和||优先级
运算符优先级(从高到低列出)
总结
本题主要考察字符串的输出。一定要注意学习本题的思维,如使用flag,while(1),在循环中输入单个字节等。