簡體   English   中英

程序可在Eclipse上運行,但不能在PuTTy上運行

[英]Program works on Eclipse but not PuTTy

我有使用針對C的MinGW編譯器在Eclipse上運行的程序,但在PuTTy中卻沒有。 如果一個人使用Eclipse和MinGW運行/編譯它,那么它就可以正常工作。 但是,在PuTTy中,輸入難度后,它會直接跳到分數輸出(0 /要問的許多問題)。 我的函數調用有什么問題,可能導致它不能在所有GCC編譯器中正常工作?

/*
 * quiz.c
 *
 *  Created on: Feb 7, 2014
 *      Author: Paul
 */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* Generating random numbers:
 * Include stdlib.h
 * Include time.h
 * RAND_MAX is the largest positive (defaults to 2.14 billion)
 * the numbers generated are psuedo numbers, so it must be changed.
 *
 * Keep variable declarations at the top to squash Pendantic warnings.
 * */
int genQuestion(int);
int answerQuestion(int);
int response(int);

int main()
{
    int counter;
    int difficulty;
    int qcounter;
    int numCorrect;
    int question;


    /*
     * Disable buffering, because it would otherwise not display the
     * text. How annoying.
     */
    setbuf(stdout, NULL);

    while ((counter < 1) || (counter > 20))
    {
        printf("How many questions for the test (1-20)? ");
        scanf("%d",&counter);
        printf("\n");
    }

    while ((difficulty < 1) || (difficulty > 4))
    {
        printf("Select difficulty (1-4): ");
        scanf("%d",&difficulty);
        printf("\n");
    }

    while (qcounter < counter)
    {
        printf("Question %d: ", qcounter+1);
        question = genQuestion(difficulty);
        if (answerQuestion(question))
        {
            response(1);
            numCorrect++;
        }
        else
        {
            response(0);

            printf("The correct answer was %d\n", question);
        }

        qcounter++;
    }

    printf("Your score was %d / %d\n", numCorrect, counter);

    return 0;
}

int genQuestion(int diff)
{
    int gMin, n1;
    int gMax, n2;
    int rndOperator;
    int ans;

    setbuf(stdout, NULL);
    srand(time(NULL));
/* Set up the difficulties for minimum and maximum ranges.
 */

    if (diff == 1)
    {
        gMin = 1;
        gMax = 10;
    }
    else if (diff == 2)
    {
        gMin = 1;
        gMax = 50;
    }
    else if (diff >= 3)
    {
        gMin = 100;
        gMax = 200;
    }

    if (diff == 4)
    {
        n1 = rand() %gMax - gMin;
        n2 = rand() %gMax - gMin;
    }
    else
    {
        n1 = rand() %gMax + gMin;
        n2 = rand() %gMax + gMin;
    }

    rndOperator = rand() %4 + 1;

    /*
     * Legend:
     * 1 = +
     * 2 = -
     * 3 = *
     * 4 = /
     * Thus, if we divide, make sure the denominator "n2" isn't 0. If
     * it is, set it to 1 instead. This is our safeguard.
     */

    if (rndOperator == 1)
    {
        printf("%d + %d = ",n1,n2);
        ans = n1 + n2;
    }
    else if (rndOperator == 2)
    {
        printf("%d - %d = ",n1,n2);
        ans = n1 - n2;
    }
    else if (rndOperator == 3)
    {
        printf("%d * %d = ",n1,n2);
        ans = n1 * n2;
    }
    else if (rndOperator == 4)
    {
        if (n2 == 0)
            n2 = 1;

        printf("%d / %d = ",n1,n2);
        ans = n1 / n2;
    }
    return ans;
}

int answerQuestion(int answer)
{
    int userAns;

    setbuf(stdout, NULL);
    scanf("%d",&userAns);

    if (answer == userAns)
        return 1;
    else
    {
        return 0;
    }
}

int response(int amIRight)
{
    int liner;

    setbuf(stdout, NULL);
    srand(time(NULL));
    liner = rand() %3 + 1;
    if(amIRight == 1)
    {
        if (liner == 1)
            printf("Alrighty!\n");
        else if (liner == 2)
            printf("Well done!\n");
        else
            printf("Great work!\n");
    }
    else
    {
        if (liner == 1)
                printf("Sorry Charlie!\n");
            else if (liner == 2)
                printf("No can do!\n");
            else
                printf("Incorrect.\n");
    }
    return 0;
}

您正在使用未初始化的變量counter, difficulty, qcounter等。

 while ((counter < 1) || (counter > 20)) {
          ^Not initialized before entering the loop  

您的程序調用未定義的行為 什么事情都可能發生。 在不同的編譯器上可能會得出不同的結果。

一切正常,我看到您沒有初始化變量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM