输入若干个单词,输出它们的平均长度,保留两位小数。单词只包含大写字母和小写字母,单词前后都可能有一个或者多个空格隔开。请使用循环和数组实现 使用c解决
时间: 2024-10-22 16:30:03 浏览: 29
在 C 语言中,你可以通过以下步骤来实现这个功能:
1. 首先,创建一个字符数组 `words` 来存储输入的单词,并声明一个整型变量 `total_length` 记录总长度,以及一个整型变量 `word_count` 统计单词的数量。
```c
char words[100]; // 假设最多输入100个单词
int total_length = 0;
int word_count = 0;
```
2. 使用循环从标准输入 (`stdin`) 获取用户输入的单词,直到遇到换行符。每次读取一个单词,先去掉开头和结尾的空格,然后计算单词长度并累加到 `total_length` 中。同时,如果遇到非空字符,则增加 `word_count`。
```c
while (scanf("%s", words) == 1 && words[0] != '\n') {
while (isspace(words[0])) {
words++; // 移动到下一个非空格字符
}
while (words[strlen(words)-1] != ' ' && words[strlen(words)-1] != '\0') { // 只算有效字符的长度
total_length += strlen(words);
words += strlen(words); // 移动到下一个单词的开始位置
}
if (words[strlen(words)-1] == ' ') {
word_count++;
words[strlen(words)-1] = '\0'; // 结束当前单词
}
}
```
3. 计算平均长度并保留两位小数。由于 C 语言的浮点数处理不是特别精确,我们可以先将总长度转换成双精度浮点数 `double`,然后再除以单词数量。
```c
double average_length = (double)total_length / word_count;
average_length = round(average_length * 100) / 100.0; // 四舍五入保留两位小数
printf("单词的平均长度为: %.2f\n", average_length);
```
4. 最后别忘了关闭标准输入流:
```c
fclose(stdin);
```
完整的代码示例:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char words[100];
int total_length = 0;
int word_count = 0;
while (scanf("%s", words) == 1 && words[0] != '\n') {
// ...(上面的处理部分)
if (words[strlen(words)-1] == ' ') {
word_count++;
words[strlen(words)-1] = '\0';
}
}
double average_length = (double)total_length / word_count;
average_length = round(average_length * 100) / 100.0;
printf("单词的平均长度为: %.2f\n", average_length);
fclose(stdin);
return 0;
}
```
阅读全文