C语言:写一个程序读入一条句子中的所有单词,并计算该语句中所有单词的平均长度。假定句子以换行结束,单词间用空格分隔,并且每个单词长度不超过25个字符。 **提示信息:“请输入一行字符:“ **输出格

题目

写一个程序读入一条句子中的所有单词,并计算该语句中所有单词的平均长度。假定句子以换行结束,单词间用空格分隔,并且每个单词长度不超过25个字符。

**提示信息:“请输入一行字符:”
**输出格式要求:“总共有%d个单词,平均长度为%d\n”

代码实现

以下提供两种思路的代码:

#include <stdio.h>
//fun1无法解决一次出现多个空格的情况,并且在句末不能出现空格,但本方法简单快捷,并且可以被OJ系统通过
int fun1(){
    char sentence[200] = {'\0'};
    printf("请输入一行字符:");
    gets(sentence);
    char * p = sentence;   //将数组头部赋值给p
    int count = 0;   //空格的个数  单词的个数为空格个数加一
    int n = 0; //字符总个数(含空格)
    while(*p != '\0'){
        if(*p == ' '){
            count++;
        }
        n++;
        p++;
    }
    int num = count + 1;
    int avg_len = (n - count)/num;
    printf("总共有%d个单词,平均长度为%d\n", num, avg_len);
}
//fun2在单词之间可以出现多个空格,在句末也可以出现空格
int fun2(){
    char sentence[200] = {'\0'};
    printf("请输入一行字符:");
    gets(sentence);
    char * p = sentence;   //将数组头部赋值给p
    int num = 0;  //单词个数
    int len = 0;  //单词总长度
    int word_len = 0;  //单个单词的长度
    while(*p != '\0'){
        if(*p != ' '){
            len++;
            word_len++;
        }else{  //遇到空格,并且该空格前有词则,词数增加
            if(word_len > 0){
                num++;
                word_len = 0;
            }
        }
        p++;   //指针向后移动
        if(*p == '\0'){   //若存在最后一个词紧接着'\0'     若有空格后接'\0',已经被考虑到
            if(word_len > 0){
                num++;
            }
        }
    }
    printf("总共有%d个单词,平均长度为%d\n", num, len/num);
}
int main(){
    fun1(); // i love you  总共有3个单词,平均长度为2
    fun2(); // i   love  you 总共有3个单词,平均长度为2
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值