2021-07-08

一c语言的32个关键字
char double enum float int long short signed struct union usigned void for do while break continue if else goto swich case defalut return auto extern register static const sizeof typedef volatile
二typedef的用途
  定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:
  char* pa, pb; //它只声明了一个指向字符变量的指针,
  // 和一个字符变量;
  以下则可行:
  typedef char* PCHAR; // 一般用大写
  PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指针
 三扫雷代码
 #include<stdio.h>#include<stdlib.h> // rand#define INITSHOW 0x80 // 1000 0000 // @#define MAKEMINE 0x40 // 0100 0000 //##define MINESHOW 0x20 // 0010 0000 //#define MAKESUM 0x10 // 0001 0000 雷的个数#define PRINTSUM 0x0F // 0000 1111#define CLSINIT 0x7f // 0111 1111#define MINENUM 25 //雷的个数#define ROWSIZE 10 //行数#define COLSIZE 10 //列数typedef unsigned char Grid[ROWSIZE + 2][COLSIZE + 2];void Init_Ar(Grid ar, int row, int col){ // for (int i = 1; i <= row; ++i) { for (int j = 1; j <= col; ++j) { ar[i][j] = INITSHOW; } } // int i = 0; while (i < MINENUM) { int r = rand() % ROWSIZE + 1; int c = rand() % COLSIZE + 1; if (!(ar[r][c] & MAKEMINE)) { ar[r][c] = (ar[r][c] | MAKEMINE); ++i; } } // for (int r = 1; r <= row; ++r) { for (int c = 1; c <= col; ++c) { if (!(ar[r][c] & MAKEMINE)) { int num = 0; for (int i = r - 1; i <= r + 1; ++i) { for (int j = c - 1; j <= c + 1; ++j) { if (ar[i][j] & MAKEMINE) { num += 1; } } } ar[r][c] = (ar[r][c] | MAKESUM); ar[r][c] = ar[r][c] | (num & PRINTSUM); } } }}void Print_Ar(Grid ar, int row, int col){ printf(" “); for (int i = 1; i <= col; ++i) { printf(”%2d", i); } printf("\n"); for (int i = 1; i <= row; ++i) { printf("%2d", i); for (int j = 1; j <= col; ++j) { if (ar[i][j] & MINESHOW) { printf("%2c", ‘#’); } else if (ar[i][j] & INITSHOW) { printf("%2c", ‘@’); } else { printf("%2d", ar[i][j] & PRINTSUM); // 0x0F } } printf("\n"); } printf("\n");}int main(){ Grid ar = {}; Init_Ar(ar, ROWSIZE, COLSIZE); int num = 0; int r, c; char ch; while (num < MINENUM) { system(“cls”); Print_Ar(ar, ROWSIZE, COLSIZE); printf(“input row col select(#,0,@) \n”); scanf_s("%d %d %c", &r, &c, &ch); if (r >= 1 && r <= ROWSIZE && c >= 1 && COLSIZE) { if (ch == ‘0’) { if (ar[r][c] & MAKEMINE) { printf(“炸死了”); getchar(); break; } ar[r][c] = (ar[r][c] & CLSINIT); } else if (ch == ‘#’) { if (ar[r][c] & MAKEMINE) { num += 1; ar[r][c] = (ar[r][c] & CLSINIT); ar[r][c] = (ar[r][c] | MINESHOW); } } else if (ch == ‘@’) { } else { printf(“select error \n”); } } else { printf(“row col error \n”); } } return 0;}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值