【发布时间】:2016-04-27 06:25:50
【问题描述】:
我正在尝试从标准输入计算 C 中的字符、单词、行和段落。
有些东西不工作,我不知道为什么。
#include <stdio.h>
int main(int argc, char const *argv[])
{
int pCount=0, parCount=0, cCount=0, lCount=0;
double prom=0;
char c;
int newln_cnt=0;
while ((c=getchar())!=EOF){
cCount++;
switch (c)
{
case '\n':
newln_cnt++;
lCount++;
if (newln_cnt == 2)
{
parCount++;
newln_cnt = 0;
}
break;
case ' ':
pCount++;
break;
}
}
prom = (cCount / pCount);
printf("Total caracteres: %d \n", cCount);
printf("Cantidad palabras: %d \n", pCount);
printf("Cantidad líneas: %d \n", lCount);
printf("Cantidad párrafos: %d \n", parCount);
printf("Promedio longitud palabra: %f \n", prom);
return 0;
}
它有点适用于字符(它显示少一个)。但其余的都很糟糕。
输入:
Oid, mortales, el grito sagrado: "Libertad, libertad, libertad!" Oid el ruido de rotas cadenas, ved en trono a la noble igualdad. Ya su trono dignisimo abrieron las Provincias Unidas del Sud y los libres del mundo responden: "Al gran pueblo argentino, salud! Al gran pueblo argentino, salud!" Y los libres del mundo responden: "Al gran pueblo argentino, salud!" Sean eternos los laureles que supimos conseguir, que supimos conseguir. Coronados de gloria vivamos... o juremos con gloria morir!, o juremos con gloria morir!, o juremos con gloria morir!
预期输出:
Total caracteres: 558
Cantidad palabras: 87
Cantidad líneas: 25
Cantidad párrafos: 8
Promedio longitud palabra: 4.966
我的输出:
Total caracteres: 557
Cantidad palabras: 69
Cantidad líneas: 24
Cantidad párrafos: 12
Promedio longitud palabra: 8.000
程序计算字符、单词、行和段落的数量(两个连续的'\n')。和平均字长。
【问题讨论】:
-
char c;应该是int c;。 -
你永远不会增加
cCount。pCount实际上是空格数,与单词数不太一样。想象一下,如果你输入 3 行没有任何空格会发生什么,那么pcount会是什么? -
您的问题取得了一些进展,但您的输入样本对于调试来说太长了。
-
我把它粘贴到一个 .txt 文件中并像 cat text.txt 一样执行程序 | ./程序
-
好的,现在我得到了和你一样的输出。您确实应该考虑使用更短且简单的输入文件来测试和调试您的程序。也许是时候学习如何使用调试器了。