gpt4 book ai didi

c - 挣扎于 C 程序设计语言练习 1-13

转载 作者:太空宇宙 更新时间:2023-11-04 05:57:48 26 4
gpt4 key购买 nike

我正在苦苦挣扎的练习是“编写一个程序来打印输入中单词长度的直方图。”到目前为止,这是我的代码:

#include <stdio.h>  

#define IN 1
#define OUT 0

int main()
{
int length[15];
int i, j, k;
i = j = k = 0;
int count, c, state = OUT;
for(i; i<15; i++)
length[i] = 0;
while ((c = getchar()) != EOF)
{
if ((c == '\n' || c == ' ' || c == '\t') && (state == IN))
{
state = OUT;
if ((count > 0) && (count < 16))
length[count -1]++;
if (count >= 16)
length[14]++;
}
if ((c != '\n' && c != ' ' && c != '\t') && (state == OUT))
{
state = IN;
count = 0;
}
if (state == IN)
count++;
}
for(j; j<15; j++)
{
printf("length %d\t",j+1);
for(k; k<length[j]; k++)
printf("X");
printf("\n");
}
return 0;
}

当我使用如下测试运行此代码时:

a bb ccc  
^d

或者:

aaa bb c  
^d

它给了我一个直方图,在第 1 列中只有一个“X”。我不知道我做错了什么。任何帮助或建议将不胜感激!

最佳答案

编写 for 循环的“正常”方法是:

for (k = 0; k < length[j]; k++)

您跳过初始化步骤,依赖于程序开始时设置的 i = j = k = 0。抛开大多数编译器会在此处提示(发出警告)未使用的值 k 这一事实,更深层次的问题是该循环嵌套在另一个循环中。第一次迭代没问题,k0 开始,按预期上升到 length[0] - 1;但在第二次迭代中,klength[0] 开始并上升到 length[1] - 1,这很可能是较低的数字,因此缩短或跳过此行的栏。如果它确实被打印出来,“条”(如果你会原谅双关语)将被设置得更高,所以每个连续的行将被缩短前面行的最大长度。

关于c - 挣扎于 C 程序设计语言练习 1-13,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23987036/

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