习题3-2 单词长度(word)
输入若干个单词,输出他们的平均长度。单词只包含大写字母和小写字母,用一个或多个空格隔开。
如题所述,意味着用户输入的字符只有2种可能:字母、或是空格——连回车都不会有。这点一定要明确。不管是竞赛,还是自己练习,读懂题目(客户)的要求是很重要的。
说明:
解决本题,需要用到字符串的知识。字符串,也就是一维的字符数组。
结束输入的方法:Ctrl+Z,回车,回车。
策略:
scanf("%s",...); 遇到空格时,会自动截断。很适合用在这种环境。
strlen(); 用于计算字符串的长度
操作步骤
1、读入一个单词;
2、计数器增量1
3、计算单词长度,累加总长度
4、总长度/计数器 ----> 平均长度
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<iostream>
#include<math.h>
using namespace std;
int s[10001];
int main()
{
char ch;
int i,j,m=0,sumlong=0,count=0;
while(1)
{
scanf("%c",&ch);
if(ch=='\n'||ch==EOF)
break;
else s[m++]=ch;
}
for(i=m-1;i>0;i--)
{
if(s[i]==' '&&s[i-1]==' ')
{
for(j=i-1;j<m-1;j++)
s[j]=s[j+1];
m--;
}
}
for(i=0;i<m;i++)
{
if(isalpha(s[i]))
sumlong++;
else if(s[i]==' ')
count++;
}
printf("%.2lf\n",(double)((sumlong+count)/(count+1)));
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 100
char a[MAXN];
int main()
{
int count = 0;
float sum = 0;
while(scanf("%s", a) == 1)
{
count++;
sum += strlen(a);
}
printf("%.3lf\n", sum/count);
return 0;
}