计算C语言中的字符、单词、行和段落
我试图从标准文本中数出C语言中的字符、单词、行和段落 有些东西不起作用,我不知道为什么计算C语言中的字符、单词、行和段落,c,io,count,words,getchar,C,Io,Count,Words,Getchar,我试图从标准文本中数出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){
#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;
}
预期输出:
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')。和平均字长。由于类型转换错误,它没有编译,但您可以对所有内容使用浮点,它将编译:
#include <stdio.h>
int main(int argc, char const *argv[])
{
double pCount=0, parCount=0, cCount=0, lCount=0;
double prom=0;
char c;
int newln_cnt=0;
while ((c=getchar())!=EOF){
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: %f \n", cCount);
printf("Cantidad palabras: %f \n", pCount);
printf("Cantidad líneas: %f \n", lCount);
printf("Cantidad párrafos: %f \n", parCount);
printf("Promedio longitud palabra: %f \n", prom);
return 0;
}
#包括
int main(int argc,char const*argv[]
{
双pCount=0,parCount=0,cCount=0,lCount=0;
双prom=0;
字符c;
int newln_cnt=0;
而((c=getchar())!=EOF){
开关(c)
{
案例“\n”:
newln_cnt++;
lCount++;
如果(newln_cnt==2)
{
parCount++;
newln_cnt=0;
}
打破
案例“”:
pCount++;
打破
}
}
prom=(会计科目/会计科目);
printf(“字符总数:%f\n”,Account);
printf(“Cantidad palabras:%f\n”,pCount);
printf(“Cantidad líneas:%f\n”,lCount);
printf(“Cantidad párrafos:%f\n”,parCount);
printf(“Promedio longitud palabra:%f\n”,prom);
返回0;
}
既然程序已经编译,您就可以调整到最适合您的程序的任何类型,您甚至可以拥有自己的类型
一个与您的程序类似的著名程序是-word count,它是标准Unix库的一部分 由于类型转换错误,它没有编译,但您可以对所有内容使用浮点,它将编译:
#include <stdio.h>
int main(int argc, char const *argv[])
{
double pCount=0, parCount=0, cCount=0, lCount=0;
double prom=0;
char c;
int newln_cnt=0;
while ((c=getchar())!=EOF){
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: %f \n", cCount);
printf("Cantidad palabras: %f \n", pCount);
printf("Cantidad líneas: %f \n", lCount);
printf("Cantidad párrafos: %f \n", parCount);
printf("Promedio longitud palabra: %f \n", prom);
return 0;
}
#包括
int main(int argc,char const*argv[]
{
双pCount=0,parCount=0,cCount=0,lCount=0;
双prom=0;
字符c;
int newln_cnt=0;
而((c=getchar())!=EOF){
开关(c)
{
案例“\n”:
newln_cnt++;
lCount++;
如果(newln_cnt==2)
{
parCount++;
newln_cnt=0;
}
打破
案例“”:
pCount++;
打破
}
}
prom=(会计科目/会计科目);
printf(“字符总数:%f\n”,Account);
printf(“Cantidad palabras:%f\n”,pCount);
printf(“Cantidad líneas:%f\n”,lCount);
printf(“Cantidad párrafos:%f\n”,parCount);
printf(“Promedio longitud palabra:%f\n”,prom);
返回0;
}
既然程序已经编译,您就可以调整到最适合您的程序的任何类型,您甚至可以拥有自己的类型
一个与您的程序类似的著名程序是-word count,它是标准Unix库的一部分 我发现您的代码中有几个问题:
\n
不同,则不会将newln\u cnt
设置为0。每次读取两个\n
时,这将计算一个段落prom = (float)cCount / (flao)pCount;
我的建议:从一个简短的文本(每行3个单词,5行)和一个调试器开始。我发现您的代码中有几个问题:
\n
不同,则不会将newln\u cnt
设置为0。每次读取两个\n
时,这将计算一个段落prom = (float)cCount / (flao)pCount;
我的建议:从一个简短的文本(每行3个单词,5行)和一个调试器开始。每一行的计数条件都是错误的。
修正如下:
#include <stdio.h>
#include <ctype.h>
int main(void){
int pCount=0, parCount=0, cCount=0, lCount=0;//word, paragraph, character, line
int abCount = 0;//alphabet
double prom=0;
int c;//It should be int.
char pprev = '\n', prev = '\n';
while ((c=getchar())!=EOF){
++cCount;
if(isalpha(c))
++abCount;
if(isspace(c)){
if(c == '\n'){
++lCount;
}
} else if(isspace(prev)){//isspace(prev) && !isspace(c) : edge of top of word
++pCount;
if(pprev == '\n' && prev == '\n'){//edge of top of paragraph
++parCount;
}
}
pprev = prev;
prev = c;
}
if(prev != '\n'){//If the file is not terminated by newline
++lCount;
}
prom = (double)abCount / pCount;//(cCount - spcCount - punctCount) / pCount
printf("Total caracteres: %d \n", cCount);
printf("Cantidad palabras: %d \n", pCount);
printf("Cantidad lineas: %d \n", lCount);
printf("Cantidad parrafos: %d \n", parCount);
printf("Promedio longitud palabra: %.3f \n", prom);
return 0;
}
#包括
#包括
内部主(空){
int pCount=0,parCount=0,cCount=0,lCount=0;//单词,段落,字符,行
int abCount=0;//字母表
双prom=0;
int c;//它应该是int。
字符pprev='\n',prev='\n';
而((c=getchar())!=EOF){
++会计科目;
if(isalpha(c))
++abCount;
if(i空间(c)){
如果(c=='\n'){
++l计数;
}
}else if(isspace(prev)){//isspace(prev)&&!isspace(c):单词顶部的边缘
++pCount;
如果(pprev='\n'&&prev='\n'){//段落顶部的边缘
++帕克计数;
}
}
pprev=prev;
prev=c;
}
if(prev!='\n'){//如果文件未以换行符终止
++l计数;
}
prom=(双精度)abCount/pCount;//(cCount-spcCount-punctCount)/pCount
printf(“字符总数:%d\n”,Account);
printf(“Cantidad palabras:%d\n”,pCount);
printf(“Cantidad lineas:%d\n”,lCount);
printf(“Cantidad parrafos:%d\n”,parCount);
printf(“Promedio longitud palabra:%.3f\n”,prom);
返回0;
}
您的每个计数条件都是错误的。修正如下:
#include <stdio.h>
#include <ctype.h>
int main(void){
int pCount=0, parCount=0, cCount=0, lCount=0;//word, paragraph, character, line
int abCount = 0;//alphabet
double prom=0;
int c;//It should be int.
char pprev = '\n', prev = '\n';
while ((c=getchar())!=EOF){
++cCount;
if(isalpha(c))
++abCount;
if(isspace(c)){
if(c == '\n'){
++lCount;
}
} else if(isspace(prev)){//isspace(prev) && !isspace(c) : edge of top of word
++pCount;
if(pprev == '\n' && prev == '\n'){//edge of top of paragraph
++parCount;
}
}
pprev = prev;
prev = c;
}
if(prev != '\n'){//If the file is not terminated by newline
++lCount;
}
prom = (double)abCount / pCount;//(cCount - spcCount - punctCount) / pCount
printf("Total caracteres: %d \n", cCount);
printf("Cantidad palabras: %d \n", pCount);
printf("Cantidad lineas: %d \n", lCount);
printf("Cantidad parrafos: %d \n", parCount);
printf("Promedio longitud palabra: %.3f \n", prom);
return 0;
}
#包括
#包括
内部主(空){
int pCount=0,parCount=0,cCount=0,lCount=0;//单词,段落,字符,行
int abCount=0;//字母表
双prom=0;
int c;//它应该是int。
字符pprev='\n',prev='\n';
而((c=getchar())!=EOF){
++会计科目;
if(isalpha(c))
++abCount;
if(i空间(c)){
如果(c=='\n'){
++l计数;
}
}else if(isspace(prev)){//isspace(prev)&&!isspace(c):单词顶部的边缘
++pCount;
如果(pprev='\n'&&prev='\n'){//段落顶部的边缘
++计数