gpt4 book ai didi

c - K&R 练习 1-13

转载 作者:行者123 更新时间:2023-11-30 20:07:03 24 4
gpt4 key购买 nike

练习的目的是

“编写一个程序来打印输入中单词长度的直方图。”

这是C答案书中给出的答案。由于某种原因,它在 CodeBlocks 中不起作用,因为当我输入输入时没有任何输出。为什么会这样?

另一个问题是关于 wl[i] ;那是什么?

#include <stdio.h>

#define MAXHIST 15
#define MAXWORD 11
#define IN 1
#define OUT 0

main()
{
int c, i, nc, state;
int len;
int maxvalue;
int ovflow;
int wl[MAXWORD];

state = OUT;
nc = 0;
ovflow = 0;
for(i=0; i < MAXWORD; ++i)
wl[i] = 0;
while(( c = getchar()) !=EOF) {
if (c==' '|| c=='\n'|| c == '\t' ){
state = OUT;
if (nc>0)
if (nc < MAXWORD)
++wl[nc];
else
++ovflow;

nc=0;
}else if (state == OUT){
state = IN;
nc = 1;
}else
++nc;
}
maxvalue = 0;
for (i = 1; 1<MAXWORD; ++i)
if (wl[i] > maxvalue)
maxvalue = wl[i];

for (i=1; i<MAXWORD; ++i){
printf("%5d - %5d : ", i, wl[i]);
if (wl[i]> 0){
if ((len=wl[i] * MAXHIST / maxvalue) <=0)
len = 1;
}else
len = 0;
while (len > 0 ) {
putchar('*');
--len;
}
putchar('\n');
}
if (ovflow > 0)
printf("There are %d words >= %d\n", ovflow, MAXWORD);
}

最佳答案

这一行是错误的:

for (i = 1; 1 < MAXWORD; ++i)

当然,第二个1应该是i。需要很长时间1才会不小于11。另一方面,然后你会读取所有内存,迟早你会读到一些不可读的东西,然后程序就会崩溃。它有可能不会崩溃,但行为未定义,因此发生任何情况都可以。

关于c - K&R 练习 1-13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com