Leafoxdd 2021-02-05 20:43 采纳率: 0%
浏览 46

这个程序能运行出来结果,为啥还会显示debug error?

#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;
}
  • 写回答

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” 如何解决?