用C语言编写一个程序来实现添加和删除整数队列中的数字以及显示队列元素。
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int queue[MAX];
int front = -1;
int rear = -1;
void enqueue(int data) {
if (rear == MAX - 1) {
printf("队列已满\n");
} else {
if (front == -1) {
front = 0;
}
rear++;
queue[rear] = data;
}
}
void dequeue() {
if (front == -1 || front > rear) {
printf("队列为空\n");
} else {
printf("删除元素为: %d\n", queue[front]);
front++;
}
}
void display() {
if (front == -1 || front > rear) {
printf("队列为空\n");
} else {
printf("队列元素为: ");
for (int i = front; i <= rear; i++) {
printf("%d ", queue[i]);
}
printf("\n");
}
}
int main() {
int choice, data;
while (1) {
printf("1. 入队\n2. 出队\n3. 显示队列元素\n4. 退出\n");
printf("请输入您的选择: ");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入要添加的元素: ");
scanf("%d", &data);
enqueue(data);
break;
case 2:
dequeue();
break;
case 3:
display();
break;
case 4:
exit(0);
default:
printf("无效选择\n");
}
}
return 0;
}
效果如下:
击杀Single敌机版(C代码实现)
详细代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#define high 20 //游戏画面尺寸
#define width 36 //如果不把这两个变量设为符号常量而设为全局变量,编译器就会报错
//至于为什么大家可以在评论区下讨论,我想看看大家对这个的想法
//问题:符号常量与全局变量有什么区别?
//最后我会公布答案
int x, y; //飞机坐标
int enemy_x, enemy_y; //敌机坐标
int score; //得分
int life; //飞机生命值
int canvas[high][width + 17] = {0}; //二维数组存储游戏画布中对应的元素
//1为飞机,2为子弹,3为敌机
//width + 17 是为了保证飞机右翼不会超出右线
//而之后的enemy_y = rand() * 100 % width + 9;是
//为了保证敌机在左边线以右9个单位的距离
//这是间接的控制飞机左翼不超过左边界的方法
int digit(int s)
{
int ne, t, bi;
ne = s;
int num = 0;
while(ne)
{
t = ne % 10;
ne /= 10;
num++;
}
return num;
}
void startup()
{
x = high / 2;
y = width / 2;
canvas[x][y] = 1;
enemy_x = 0;
enemy_y = y;
life = 3;
canvas[enemy_x][enemy_y] = 3;
score = 0;
}
void gotoxy(int x, int y) //将光标移动到(x,y)位置
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void HideCursor()
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void show()
{
gotoxy(0, 0);
HideCursor();
int i, j;
for(i = 0; i < high; i++)
{
for(j = 0; j < width + 17; j++)
{
if((i == x) && (j == y))
{
printf("*");
}
else if((i == x + 1) && (j == y - 2))
{
printf(" * *");
j += 3;
}
else if((i == x + 2) && (j == y - 2))
{
printf("* * *");
j += 4;
}
else if((i == x + 3) && (j == y - 6))
{
printf("* * * * * * *");
j += 12;
}
else if((i == x + 4) && (j == y - 8))
{
printf("* * * * * * * * *");
j += 16;
}
else if((i == x + 5) && (j == y - 1))
{
printf("* * ");
j += 3;
}
else if(canvas[i][j] == 3)
printf("@");
else if(canvas[i][j] == 2)
printf("|");
else
printf(" ");
}
printf("#\n");
}
printf("生命值:%d", life);
int space = digit(life);
if(space == 1)
{
for(i = 0; i < width + 8; i++)
printf(" ");
}
else
{
for(i = 0; i < width + 8 - (space - 1); i++)
printf(" ");
}
printf("#\n");
printf("得分:%d", score);
int space2 = digit(score);
if(space2 == 1)
{
for(i = 0; i < width + 9; i++)
printf(" ");
}
else
{
for(i = 0; i < width + 9 - (space2 - 1); i++)
printf(" ");
}
printf("#\n");
for(i = 0; i < width + 17; i++)
printf("#");
}
void updateWithoutInput() //与用户输入无关的更新
{
int i, j;
for(i = 0; i < high; i++)
{
for(j = 0; j < width + 17; j++)
{
if(canvas[i][j] == 2)
{
if((i - 1 == enemy_x) && (j == enemy_y))
{
score++; //得分
canvas[enemy_x][enemy_y] = 0; //敌机已被消灭
enemy_x = 0;
enemy_y = rand() * 100 % width + 9;
canvas[enemy_x][enemy_y] = 3; //产生敌机
canvas[i][j] = 0; //子弹消耗掉
}
canvas[i][j] = 0;
if(i > 0)
canvas[i - 1][j] = 2; //子弹向上移动
}
}
}
if(enemy_x > high) //防线被突破
{
canvas[enemy_x][enemy_y] = 0;
enemy_x = 0;
enemy_y = rand() * 100 % width + 9;
canvas[enemy_x][enemy_y] = 3;
score--; //减分
life--;
}
if(enemy_x >= x)
{
life--;
score--;
if(life == 0)
{
printf("\n任务失败!!!\n");
system("pause");
exit(0);
}
canvas[enemy_x][enemy_y] = 0;
enemy_x = 0;
enemy_y = rand() * 100 % width + 9;
canvas[enemy_x][enemy_y] = 3;
}
static int speed = 0; //控制敌机下落速度
if(speed < 10)
speed++;
if(speed == 10)
{
canvas[enemy_x][enemy_y] = 0;
enemy_x++;
speed = 0;
canvas[enemy_x][enemy_y] = 3;
}
}
void updateWithInput() //与用户输入有关的更新
{
char input;
if(kbhit())
{
input = getch();
if(input == 'a')
{
canvas[x][y] = 0;
y--;
canvas[x][y] = 1;
}
if(input == 'd')
{
canvas[x][y] = 0;
y++;
canvas[x][y] = 1;
}
if(input == 'w')
{
canvas[x][y] = 0;
x--;
canvas[x][y] = 1;
}
if(input == 's')
{
canvas[x][y] = 0;
x++;
canvas[x][y] = 1;
}
if(input == ' ')
{
// bullet_x = x - 1;
// bullet_y = y;
canvas[x - 1][y] = 2;
}
}
}
int main()
{
startup();
while(1)
{
show();
updateWithoutInput();
updateWithInput();
}
return 0;
}