这个程序的重点在于随机!而不是你人为的去输入两个数然后计算机为你计算。这里是反过来电脑给你数字你来计算。
伪随机函数int rand()
其原型在“stdlib.h”中,每调用一次这个函数,就产生一个0到32767之间的随机数。 一般情况下,如果要得到[a,b]之间的随机数,可用表达式a+rand()%(b-a)。
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int sum;
int a = rand() % 100;
int b = rand() % 100;
printf("%d + %d = ", a, b);
scanf("%d", &sum);
if (sum == a + b)
{
printf("You are right!\n");
}
else
{
printf("You are wrong!\n");
}
system("pause");
return 0;
}
实际上当你运行以上代码时你会发现,它总是重复你第一次运行时出现的那两个数字,然而我就是,当我运行不管多少次都是这两个数字。
运行结果如下:
程序是没有任何问题的,但为什么总是出现相同的数字呢!所以我们需要对程序做改进。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main()
{
int sum;
srand((unsigned int)time(NULL));
int a = rand() % 100;
int b = rand() % 100;
printf("%d + %d = ", a, b);
scanf("%d", &sum);
if (sum == a + b)
{
printf("You are right!\n");
}
else
{
printf("You are wrong!\n");
}
system("pause");
return 0;
}
当我们加上一行代码和一个头文件时,我们的数字做到了真正的随机!
运行结果如下:
在随机函数上我也只是略懂,希望大家多多指点。
实际上这个程序还可以做的更加完善,当我们输错答案之后,提醒我们错误再输入一次,当输入次数达到三次以后,将不再提示输入,将直接给出答案。这与用户登录界面有一点类似。
代码如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include <time.h>
int main()
{
int sum;
int count=0;
srand((unsigned int)time(NULL));
int a = rand() % 100;
int b = rand() % 100;
do
{
printf("%d + %d = ", a, b);
scanf("%d", &sum);
if (sum == a + b)
{
printf("You are right!\n");
break;
}
else
{
printf("You are wrong!\n");
count++;
}
} while (count < 3);
if (count == 3)
{
printf("The answer is %d\n", a + b);
}
system("pause");
return 0;
}
运行结果如下: