-1

您好,我显然是 C 的新手,但我正在寻找有关我想做的事情背后的逻辑的帮助或建议。也就是说,我将提出一系列问题,并且我想遍历它并一次打印出一个问题。问题是,在打印出一个问题后,程序或函数会等待,直到它被回答为“Y”或“N”,然后循环继续。回答完所有问题后,打印结果并结束程序。

我只需要一些关于这种事情背后的逻辑的建议。也许在这种情况下使用循环是不可行的,我需要尝试一些不同的东西,感谢任何建议!

4

1 回答 1

0

好吧,这是众多可能的选项之一(您要求使用 C,所以,这里有一些 C 代码;在 C++ 中,这可能完全不同):

  1. 您需要定义一个结构来保存您的问题,可能是这样的:

    #define QUESTION_SZ 128 /* adjust to your needs, or use dynamic memory allocation */
    #define ANSWER_SZ 128 /* ditto */
    struct question
    {
        char question_text[QUESTION_SZ]; 
        char answer[ANSWER_SZ];
    };
    
  2. 然后,您可以创建一系列问题并对其进行初始化:

    struct question my_poll[32];
    
  3. 接下来,您可以遍历您的一系列问题并处理它们:

    int i = 0;
    char *p = NULL;
    int oops_we_failed = 0;
    for(i = 0; i < 32; i++)
    {
        printf("Question %d: %s. Your answer?\n", i, my_poll[i].question);
    
        /* fgets() will block until user enters an answer */
        p = fgets(my_poll[i].answer, ANSWER_SZ, stdin);
    
        if(NULL == p)
        {
            /* nothing was read, an error could have happened */
            oops_we_failed = 1;
            break;
        }
        else
        {
            /* now we have a possible answer stored in poll[i].answer */
        }
    }
    
  4. 现在您有一系列问题和相应的答案。

您可能需要研究链表以动态创建任意长度的轮询。

于 2012-12-18T03:16:18.040 回答