【无标题】c第三弹已发射


前言

想要从零基础系统学习C语言的小伙伴一定不要错过,点个关注和小赞,希望给到大家很大的帮助哦!原创不易,禁止抄袭!希望大家多多理解哦!


一、数据类型

数据类型分为内置数据类型和外置数据类型。内置数据类型为C语言本身所具备的;而外置数据类型是C语言本身所没有的,需要我们去定义。

1.内置数据类型

char
short
int
long
long long
float
double
C语言内置的数据类型所占的内存如下:
在这里插入图片描述

2.自定义数据类型

struct(结构体)
enum(枚举) 联合

二、变量

1.什么叫做变量?

生活中可以变得量或元素,不是一成不变的量。

2.变量的创建和初始化

在这里插入图片描述

在对变量进行初始化的时候,若arr未进行初始化,但必须得给空间,例如main函数的第一行。arr2进行了初始化,在数组中进行了3个元素的存储。
不能出现以下情况,不然就会报错:
在这里插入图片描述
语法错误,编译器会报错。

在这里插入图片描述

这样输出结果是一个随机值,因为没有\0,所以说计算不出这三个字符后边到底放了多少个元素
如果arr初始化3–arr[3], 输出的结果和没初始化3的结果相同。

若在arr加上引号(如下图所示),则就是输出arr这个字符串的长度了,加上引号就表示是一个字符串,并不是一个变量了。
在这里插入图片描述

不完全初始化

这种不完全初始化,不管值为多少,则输出的都是后边初始化的字符的长度
在这里插入图片描述
strlen是求字符串的长度的,结果输出为3,就可以证明这种不完全初始化。

常量表达式

在这里插入图片描述
代码出现报警问题是因为数组arr只能是常量表达式,定义的时候不能用变量名定义。
在C语言中规定,c99标准之前,数组的大小都是用常量表达式或者常量来指定。

代码如下(示例):

int main()
{
	int arr2[10]={0};  //ok
	int arr3[4+6]={1,2,3,4}   //ok
	return 0;
}

C99标准之后,支持了变长数组,这个时候允许数组的大小是变量,但是这种指定方式的数组是不能初始化的。

int main()
{
	int m=100;
	int arr4[m];
	return 0;
}

用一个字符串来初始化一个字符数组
在这里插入图片描述

3.补

每天就要学会总结一个比较重要的代码,并义无反顾的把它记住,每天几步一点点哦!!!

int Max(int x,int y)
{
	if (x>y)
		return x;
	else
	{
		return y;
	}
}
//较大值传给Max函数 所以前面要先定义Max函数
int main()
{
	int a=0;
	int b=0;
	scanf("%d %d", &a,&b);
	//求两个数的较大值
	int r=Max(a,b);
	printf("%d\n",r);
	return 0;
}

总结

每天对知识点进行复习巩固,做好c语言底层语言的基础,还不快快点个关注,下次更新不迷路哦!
原创不易,望各位大佬支持一下!
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
在C语言中实现飞机大战游戏,需要使用图形库(如graphics.h)来显示游戏界面。对于敌机发射这个功能,可以通过以下步骤实现: 1. 定义子结构体,包含子的位置和速度等信息。 2. 在游戏循环中,检查敌机是否需要发射,如果需要则创建一个新的子对象,并将其加入到子数组中。 3. 在每一帧中,遍历子数组,更新子的位置,并将其绘制到屏幕上。 4. 检查子是否击中了玩家飞机或者超出了屏幕范围,如果是则将其从子数组中移除。 5. 在玩家飞机的碰撞检测中,也需要检查子是否击中了玩家飞机。 下面是一个简单的示例代码: ``` // 定义子结构体 typedef struct { int x, y; // 子的坐标 int speed; // 子的速度 int active; // 子是否可用(是否在屏幕上) } Bullet; // 创建子数组 Bullet bullets[MAX_BULLETS]; // 在游戏循环中检查敌机是否需要发射 if (enemy_shoot()) { // 创建一个新的子对象 Bullet new_bullet; new_bullet.x = enemy_x; new_bullet.y = enemy_y + enemy_height; new_bullet.speed = BULLET_SPEED; new_bullet.active = 1; // 将新的子对象加入到子数组中 for (int i = 0; i < MAX_BULLETS; i++) { if (!bullets[i].active) { bullets[i] = new_bullet; break; } } } // 在每一帧中遍历子数组,更新子的位置,并将其绘制到屏幕上 for (int i = 0; i < MAX_BULLETS; i++) { if (bullets[i].active) { // 更新子的位置 bullets[i].y += bullets[i].speed; // 绘制子到屏幕上 draw_bullet(bullets[i].x, bullets[i].y); // 检查子是否击中了玩家飞机或者超出了屏幕范围 if (bullets[i].y < 0 || bullets[i].y > SCREEN_HEIGHT || check_collision(player_x, player_y, player_width, player_height, bullets[i].x, bullets[i].y, bullet_width, bullet_height)) { bullets[i].active = 0; // 将子标记为不可用 } } } // 在玩家飞机的碰撞检测中,也需要检查子是否击中了玩家飞机 for (int i = 0; i < MAX_BULLETS; i++) { if (bullets[i].active && check_collision(player_x, player_y, player_width, player_height, bullets[i].x, bullets[i].y, bullet_width, bullet_height)) { // 子击中了玩家飞机,执行相应操作 } } ``` 需要注意的是,以上代码仅为示例,实际实现中可能需要进行适当的修改。同时,子发射也需要考虑敌机的位置、速度等因素,以保证游戏的难度和可玩性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值