2021-07-08

7.7所学知识:
1.在函数内定义的变量在栈区(局部变量)
在函数外定义的变量在数据区(全局变量)
2.C语言:32个关键字
1)
(1) char :声明字符型变量或函数
(2) double :声明双精度变量或函数
(3) enum :声明枚举类型
(4) float:声明浮点型变量或函数
(5) int: 声明整型变量或函数
(6) long :声明长整型变量或函数
(7) short :声明短整型变量或函数
(8) signed:声明有符号类型变量或函数
(9) struct:声明结构体变量或函数
(10) union:声明共用体(联合)数据类型
(11) unsigned:声明无符号类型变量或函数
(12) void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)
2)
A循环语句
(1) for:一种循环语句(可意会不可言传)
(2) do :循环语句的循环体
(3) while :循环语句的循环条件
(4) break:跳出当前循环
(5) continue:结束当前循环,开始下一轮循环
B条件语句
(1)if: 条件语句
(2)else :条件语句否定分支(与 if 连用)
(3)goto:无条件跳转语句
C开关语句
(1)switch :用于开关语句
(2)case:开关语句分支
(3)default:开关语句中的“其他”分支
D返回语句
return :子程序返回语句(可以带参数,也看不带参数)
3)存储类型关键字(4个)
(1)auto :声明自动变量 一般不使用
(2)extern:声明变量是在其他文件正声明(也可以看做是引用变量)
(3)register:声明积存器变量
(4)static :声明静态变量
3.typedef
(1)给已有的类型起上一个别名。
U_int8 a=unsigned char b;
(在前面typedef unsigned char u_int8;)
(2)把一切合法的变量定义转化成类型。
Int *PINT相当于PINT s;
(在前面加上typedef int array[10])
4.define宏只有替换。
5.扫雷代码:
#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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值