LHL算法入门经典 习题3-2 单词长度(word)

习题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;
}

发布了33 篇原创文章 · 获赞 14 · 访问量 631

猜你喜欢

转载自blog.csdn.net/Simple_questions/article/details/104982376