⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rolldice.c

📁 国外网站上的一些精典的C程序
💻 C
字号:
/*_|_|   ROLLDICE.C_|_|_|   A function to roll a definable number of dice (1 - 100),_|_|_|   with a definable number of sides (2 to 255)._|_|_|   No warrantees or guarantees are given or implied._|_|_|   Released to   PUBLIC DOMAIN   by Kurt Kuzba.  (8/25/96)*/#include "rolldice.h"                     /* Also includes stdlib.h     */static int rnd(int min, int max){      long t = (long)rand() * (long)(max - min + 1);      return min + (int)(t / RAND_MAX);}char *roll_dice(int d, int s){      char *result = malloc(d * s + 1);      int shuffle_loop, die, side, temp, random;      if (result == NULL)            return NULL;      *(result + d * s) = '\0';      /* initialize your dice */      for (die = 0; die < d; die++)      {            for (side = 0; side < s; side++)                  *(result + die * s + side) = (char)(side + 1);      }      for (shuffle_loop = 0; shuffle_loop < 16; shuffle_loop ++)      {            /* 'roll' your dice     */            for (die = 0; die < d; die++)            {                  for (side = 0; side < s; side++)                  {                        random = rnd(1, s) - 1;                        temp = *(result + die * s + side);                        *(result + die * s + side) =                              *(result + die * s + random);                        *(result + die * s + random) = (char)temp;                  }            }      }      for (die = 0; die < d; die++)    /* Make an 'upside' string */            *(result + die) = *(result + die * s);      *(result + d) = '\0';           /* Trim str for # of dice  */      return result;}#ifdef TEST#include <stdio.h>#include <time.h>#include <string.h>#include <conio.h>int main(int c, char *v[]){      time_t t;      int dice, sides;      char *d;      srand((unsigned)time(&t));      dice = atoi(v[1]);      d = strchr(v[1], 'd');      sides = atoi(++d);      if (d == NULL || dice < 1 || dice > 100 || sides < 2 || sides > 255)            return !!puts("USAGE EX: ROLLDICE 2d6   (rolls 2 6-sided dice)");      d = roll_dice(dice, sides);      if (d == NULL)            return !puts("Malloc Failure.");      dice = sides = 0;      while (d[dice])      {            sides += d[dice];            printf("%d ", d[dice++]);      }      printf("\nYour total = %d\n", sides);      free(d);   /* Make sure you free your dice after every usage!! */      return 0;  /* Otherwise, you will leak away all your memory!!! */}#endif /* TEST *//*_|_|   end   ROLLDICE.C   */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -