好的,作为一名初学程序员,我的任务是创建一个简单的数学测验程序。它应该提示用户在他们的答案是对还是错的时候询问,祝贺或通知用户有多少问题。然后在程序结束时打印出正确的数字和错误的数字。我已经成功完成了所有这一切,现在我的代码唯一的问题是它一遍又一遍地问同样的问题。我在这里不知所措,所以任何帮助都会受到赞赏,谢谢。
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int i;
int response;
int correctAnswers = 0;
int incorrectAnswers = 0;
printf("\nMath Quiz\n");
printf("Please enter # of problems you would wish to try:");
scanf("%d", &response);
if(response == 0)
{
printf("\nThanks for playing!\n");
return 0;
}
for(i=0; i<response; i++)
{
int answer = 0;
int a = rand() % 12;
int b = rand() % 12;
printf("\n%d * %d = ",a ,b);
scanf("%d", &answer);
if((a * b) == answer){
printf("\nCongratulations You are correct!\n");
correctAnswers++;
}
else{
printf("Sorry you were incorrect!\n");
incorrectAnswers++;
}
}
printf("\n\nYour Results:\n\n\n");
printf("Number Incorrect: %d\n", incorrectAnswers);
printf("Number Correct: %d\n", correctAnswers);
if(correctAnswers > incorrectAnswers){
printf("You Passed!\nGood work!\n\n");
}
else{
printf("You did not pass!\nYou need more work!\n\n");
}
return 0;
}
此外,对格式化的任何批评都非常受欢迎。谢谢!
答案 0 :(得分:3)
您需要了解randon number generator在C中的工作原理。
rand()
仅生成伪随机数。这意味着每次运行代码时,您都会得到完全相同的数字序列。
使用srand
功能根据源编号生成随机数。如果您想要经常更改,请使用系统时间。
srand(time(NULL));
还要包含头文件time.h
以使用time
函数。
在调用rand()
之前调用该函数。如果在程序中调用srand()
之前没有调用rand()
,就好像调用了srand(1)
:每次执行程序时种子值都是1,< strong>生成的序列将始终相同。
答案 1 :(得分:1)
在您的代码中使用此srand
,就像这样......
int a;
int b;
srand(time(0));
a = rand() % 12;
b = rand() % 12;