gpt4 book ai didi

c - 字数调试

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:18 25 4
gpt4 key购买 nike

K&R上,建议使用以下代码来计算输入中的单词、行和字符。练习 1.11 要求:

How would you test the word count program? What kinds of input are most likely to uncover bugs if there are any?

我看到的这些问题的唯一答案是在包含多行、单词和制表符的某些输入上测试代码。

你能看到任何其他方法来测试这段代码吗?

#include <stdio.h>

#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */

/* count lines, words and characters in input */

main(){
int c, n1, nw, nc, state;

state = OUT;
n1 = nw = nc = 0;

while ((c = getchar()) != EOF){
++nc;
if (c == '\n')
++n1;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT){
state = IN;
++ nw;
}
}
printf("%d %d %d\n",n1,nw,nc);
}

最佳答案

使用以下所有类型的输入测试程序:

<醇>
  • 一个空文件。
  • 一个只有新行没有单词的文件。
  • 一个包含很长单词的文件,全部在一行上。
  • 包含很多行的非常长的单词的文件。
  • 该程序可能会产生无效输出,但如果给定特殊字符,则不应崩溃。
  • 在整个文档的随机位置插入“N”个空行来测试程序。
  • 在文档开头插入“N”个空行来测试程序。
  • 在文档末尾插入“N”个空行来测试程序。
  • 用单字符词和长词测试程序,包括带有这些输入的带连字符的词:

    1. 一个文件,每个单词之间只有一个空格。
    2. 用一个空格或“N”个空格分隔每个单词的文件。
    3. 只有一个制表符分隔每个单词的文件。
    4. 用一个空格或“N”个制表符分隔每个单词的文件。
    5. 只有一个空格或制表符分隔每个单词的文件。
    6. 用一个空格或“N”个空格或制表符分隔每个单词的文件。
    7. 使用单引号和双引号、单词和引号之间有无空格以及嵌套的引号级别测试程序。

    还有:

    1. 确保程序不会将不需要的字符计为单词或单词的一部分。例如,确保回车符是一个合法的 MS-DOS 字符,如果它包含在一行的末尾,则不会被计为一个单词。
    2. 为该应用程序指定空间创建尽可能大的文件,并确保该程序不会崩溃,其他应用程序不会受到影响,并且输出是正确的。
    3. 创建尽可能大的文件,为该应用程序指定空间,仅包含空格、换行符和制表符,文件末尾的单词除外,并确保程序不会崩溃,其他应用程序不会崩溃受影响,并且输出是正确的。
    4. 创建尽可能大的文件,为该应用程序指定空间,仅包含空格、换行符和制表符,文件开头的单词除外,并确保程序不会崩溃,其他应用程序不会受影响,并且输出是正确的。
    5. 创建为该应用程序指定空间的最大可能文件,仅包含一个很长的单词:程序的输出应为 1。
    6. 让程序编写一个调试文件,其中包含每个 while、if 和 else 语句的 printf。确保测试导致到达所有 printf 语句。换句话说,在测试结束时,不应有任何代码部分未使用。
    7. 输出与 wc 程序的输出不匹配应该有充分的理由。

    关于c - 字数调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23859366/

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