我有這個程序在Eclipse上使用MinGW編譯器,但不在PuTTy中。 如果運行這個/使用Eclipse和MinGW編譯它,再次,它工作得很好。但是在PuTTy中,輸入難度後,它會直接跳到得分輸出(0 /無論提出多少問題)。我做了什麼錯誤的函數調用可能導致它無法正確使用所有GCC編譯器?程序在Eclipse上工作,但不是PuTTy
/*
* 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;
}
PuTTY是不是一個編譯器;它是一個終端模擬器/ SSH客戶端。我認爲你的意思是它在Eclipse下工作,但不是GCC。 –