【Ex.】随机产生两个数计算之和

来源:互联网 发布:mysql 间隙锁 编辑:程序博客网 时间:2024/06/05 11:40

这个程序的重点在于随机!而不是你人为的去输入两个数然后计算机为你计算。这里是反过来电脑给你数字你来计算。
伪随机函数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;}

运行结果如下:
这里写图片描述