C 指针原理揭秘:基于底层实现机制 (11):C 语言快速入门 2.2.4

阅读数:5 2019 年 12 月 11 日 20:21

C指针原理揭秘:基于底层实现机制(11):C语言快速入门 2.2.4

(产生 1~500 以内的随机整数)

内容简介
全书分为准备篇、基础篇、揭秘篇、实战篇。本书力求从底层实现机制进行解析,同时配合 C/C++ 编程技巧以及某些指针运用技巧,讲解如何提高程序效能,如何避免滥用指针。
准备篇中介绍 C 指针概述、UBUNTU 及开发环境配置、AT&T 汇编简介、编译原理基础;基础篇将对 AT&T 汇编以及 C 指针基础进行介绍;揭秘篇讲述高级 C 指针的实现机制以及 C++ 指针实现机制,同时讲解编程技巧和 C/C++ 指针高级应用;实战篇讲解解释语言指针、TCC 编译实践、垃圾回收等高级 C 指针应用话题。

为增加游戏的趣味性,编写代码产生 1~500 以内的随机整数,并将这个整数作为被猜数字,这样玩家每次运行游戏,需要猜的都是不同的数字。为保证需要猜的整数在 1~500 之间,需要按如下方式对随机整数进行加工(“%”为取余操作符):

1~500 以内的被猜数字 = 随机整数 %499+1

借助 stdlib.h 中定义的 srand 函数来生成公式右边所需要的随机数,该函数需要一个数值作为产生随机数的种子(也就是这个函数的唯一参数),通常使用当前时间值作为参数,当前时间值可以通过 time 函数(以 0 作为参数调用,该函数定义于 time.h 中)生成。程序 2-6 通过 srand 函数生成随机数,代码如下:

程序 2-6 srand 函数生成随机数
复制代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((int)time(0));
printf(" 第一个随机数:%d 第二个随机数:%d\n",rand()%499+1,rand()%499+1);
}

编译并运行程序 2-6,运行结果表示,程序产生了 1~500 以内的 2 个随机整数 429 与 44:

复制代码
$gcc a.c -o mytest
$./mytest
第一个随机数:429 第二个随机数:44

可将程序 2-6 中的代码稍做修改,与程序 2-5 结合,将程序 2-6 中产生随机数的代码定义为函数 getnumber,以供 main 函数调用,最终代码如程序 2-7 所示:

程序 2-7 最终代码
复制代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int getnumber(){
srand((int)time(0));
return rand()%499+1;
}
int main(){
int mynum;
int ispass=0;
while(1){
printf(" 你好,请输入一个数字:");
scanf("%d",&mynum);
if (mynum>500 ||mynum<1){
printf(" 数字仅限于 1-500 之间\n");
}
else{
printf("\n 你输入的数字是:%d\n",mynum);
break;
}
}
printf("number:%d\n",getnumber());
}

编译并运行程序 2-7,观察以下运行结果,玩家猜测数字为 55,最后一行输出了被猜的数字为 109。

复制代码
$ gcc guessnum.c -o myguess
$ ./myguess
你好,请输入一个数字:55
你输入的数字是:55
number:109

为了验证随机数效果,程序 2-7 中最后一个 printf 语句获取到要猜的随机整数,并输出到屏幕,但游戏中不能把结果告诉玩家,因此,接下来需要继续完善程序 2-7,加入更多的功能。

C指针原理揭秘:基于底层实现机制(11):C语言快速入门 2.2.4

购书地址 https://item.jd.com/12533413.html?dist=jd

评论

发布