猜数游戏

猜数游戏

​ 在生成随机数的时候如果我们没有设置随机数种子srand,系统会自动将随机数种子设为1,那么每次打开程序生成的随机数总会是同一序列的(如下图),

要解决这个问题就需要我们设置随机数种子。

image-20210517112322303

以系统时间作为随机数种子进行随机猜数游戏

//猜数字游戏输入多少次
#include"stdio.h"
#include"stdlib.h"
#include"time.h"
#define MAX_STAGE 10 //最多可以输入的次数
int main()
{
    int i;//已经输入的次数
    int ans=-1; //猜的值
    int no; //目标数字
    int num[MAX_STAGE];//猜值的历史记录
    int retry;  //是否再玩异常
    printf("生成0~%d的随机数\n",RAND_MAX);
    do
    {
        no=GET_random_num();  //生成随机数
        for(i=0; ans!=no&&i<10; i++)  //判断输入的数大了还是小了
        {
            printf("请输入一个数,还剩%d次机会:",10-i);
            scanf("%d",&ans);
            num[i]=ans;
            if(no>ans)
                printf("小了\n");
            if(no<ans)
                printf("大了\n");
        }
        if(no!=ans)
            printf("很遗憾您的机会已经用完了,正确答案是%d\n",no);
        if(no==ans)
            printf("恭喜您用%d次机会猜中了答案\n",i);
        printf("再玩一次?...");
        scanf("%d",&retry);
    }
    while(retry==1);
    return 0;
}
int GET_random_num()        //  随机数生成
{
    int no;
    srand(time(NULL));
    no=rand()%1000;
    return no;
}

程序运行结果如下图

image-20210517151740473

C语言计时器小程序

#include"stdio.h"
#include"stdlib.h"
#include"time.h"
int sleep(unsigned long x)   //等待函数
{
    clock_t c1=clock(),c2;
    do
    {
        if((c2=clock())==(clock_t)-1)  //错误
            return -1;
    }
    while(1000.0*(c2-c1)/CLOCKS_PER_SEC<x);  //由于c1,c2是无符号整形数乘1000将其转换为浮点数
    return 0;
}
int main()
{
    int n,no=0;
    int i;
    printf("每隔1秒no值+1,当前值为:%d",no);
    while(no<1000)
    {

        n=no;
        int count=0;
        do                  //判断为几位数,决定光标需要回退多少格
        {
            n/=10;
            count++;
        }
        while(n!=0);
        for(; count!=0; count--)
        {
            printf("\b\0\b");    //退格并输入新数字空格键实现闪烁效果
        }
        sleep(1000);        //调用sleep等待1000ms(1s)
        fflush(stdout);  //清空缓存区,将缓冲区内容输入屏幕
        no++;
        printf("%d",no);
    }
}

巧用printf函数

printf(“%*d\n”,i,n); 可以用*表示至少输出i位同样.前也可以用*表示变量

在scanf写入double类型需要用%lf

可以用if(scanf(“%d%d”,&x,&y)==2)判断x和y是否成功读取

ctype库

C 标准库的 ctype.h 头文件提供了一些函数,可用于测试和映射字符。如果参数 c 满足描述的条件,则这些函数返回非零(true)。如果参数 c 不满足描述的条件,则这些函数返回零。

常用函数

  • iscntrl:判断字符是否为控制字符,如\a\b\t等;
  • isprint:判断字符是否为显示字符,如A,B,C,D等;
  • isgraph:判断字符是否为不包含空白字符的显示字符
  • isdigit:判断字符是否为十进制数
  • isupper:判断是否为大写字符
  • islower:判断是否为小写字符
  • isalpha:判断是否为英文字符
  • isalnum:判断是否为英文字符或十进制数

数字字符-整数字符=‘0’

"ctype.h"中的isprint函数可以判断字符是否能够显示能返回真值,不能返回0

iscntrl(int ) 判断字符是否为控制字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值