#include <stdio.h>//打印各个长度的单词数
#define OUT 1
#define IN 0
main()
{
int state,c,wlength,i,max,z;
int nlength [20] ;
for (max = 20, i = 0; i < max; nlength[i] = 0)//给数组初始量赋值为0
++i;
state = OUT;
c = getchar();
while (c != EOF)
{
if (c == ' ' || c == '\n' || c == '\t')
{
state = OUT;
c = getchar();
}
else if (state == OUT)//计算正在读取的单词的长度,并令其数组元素值+1
{
state = IN;
for (wlength = 0; c != '\n' && c != '\t' && c != ' ' && c != EOF; c = getchar())
++wlength;
++nlength[wlength];
}
}
for(z=1;z<max;++z)
printf("%d ", nlength[z]);
return 0;
}
这个程序能运行出来结果,为啥还会显示debug error?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 你知我知皆知 2024-07-24 12:42关注
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这段代码在运行时可能会出现
debug error
的错误。这是因为在使用for
循环进行数组初始化时,你没有正确地将数组的大小设置为 20。正确的做法是:
#define MAX_WORDS 20 int main() { int words[MAX_WORDS] = {0}; // 初始化数组为0 for(int i = 0; i < MAX_WORDS; ++i) words[i] = 0; char word[10]; // 定义一个字符串变量存储单词 while ((word = get_word()) != NULL) { // 将当前单词添加到数组中 for(int j = 0; j < strlen(word); ++j) { words[j + 1]++; } } // 打印数组中的所有单词数量 for(int i = 0; i < MAX_WORDS; ++i) { printf("%d ", words[i]); } return 0; }
在这个修改后的版本中,我将数组的大小从 20 更改为
MAX_WORDS
(即 20)。这样,当程序执行时,它就可以正确地初始化并处理数组了。解决 无用评论 打赏 举报
悬赏问题
- ¥15 jetson nano
- ¥15 :app:debugCompileClasspath'.
- ¥15 windows c++内嵌qt出现数据转换问题。
- ¥20 公众号如何实现点击超链接后自动发送文字
- ¥15 用php隐藏类名和增加类名
- ¥15 算法设计与分析课程的提问
- ¥15 用MATLAB汇总拟合图
- ¥15 智能除草机器人方案设计
- ¥15 对接wps协作接口实现消息发送
- ¥15 SQLite 出现“Database is locked” 如何解决?