本文目录一览:
用“vc”或“c++”编写的一个小游戏代码,源代码是什么?
#include\x0d\x0a#include\x0d\x0a#include\x0d\x0a#define LEFT 0x4b00\x0d\x0a#define RIGHT 0x4d00\x0d\x0a#define DOWN 0x5000\x0d\x0a#define UP 0x4800\x0d\x0a#define ESC 0x011b\x0d\x0aint i,key;\x0d\x0aint score=0;\x0d\x0aint gamespeed=32000;\x0d\x0astruct Food /*食物的结构体*/\x0d\x0a{\x0d\x0aint x; /*食物的横坐标*/\x0d\x0aint y; /*食物的纵坐标*/\x0d\x0aint yes; /*食物是否出现的变量*/\x0d\x0a}food;\x0d\x0astruct Snack /*蛇的结构体*/\x0d\x0a{\x0d\x0aint x[N];\x0d\x0aint y[N];\x0d\x0aint node; /*蛇的节数*/\x0d\x0aint direction; /*蛇的方向*/\x0d\x0aint life; /*蛇的生命,0活着,1死亡*/\x0d\x0a}snake;\x0d\x0avoid Init(void); /*图形驱动*/\x0d\x0avoid Close(void); /*关闭游戏函数*/\x0d\x0avoid DrawK(void); /*画图函数*/\x0d\x0avoid GameOver(void);/*输出失败函数*/\x0d\x0avoid GamePlay(); /*游戏控制函数 主要程序*/\x0d\x0avoid PrScore(void); /*分数输出函数*/\x0d\x0a\x0d\x0aDELAY(char ch)/*调节游戏速度*/\x0d\x0a{\x0d\x0aif(ch=='3')\x0d\x0a{\x0d\x0adelay(gamespeed); /*delay是延迟函数*/\x0d\x0adelay(gamespeed);\x0d\x0a}\x0d\x0aelse if(ch=='2')\x0d\x0a{\x0d\x0adelay(gamespeed);\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0aMenu()/*游戏开始菜单*/\x0d\x0a{\x0d\x0achar ch;\x0d\x0aprintf("Please choose the gamespeed:\n");\x0d\x0aprintf("1-Fast 2-Normal 3-Slow\n");\x0d\x0aprintf("\nPlease Press The numbers..\n");\x0d\x0ado\x0d\x0a{ch=getch();}\x0d\x0awhile(ch!='1'ch!='2'ch!='3');\x0d\x0aclrscr();\x0d\x0areturn(ch);\x0d\x0a}\x0d\x0a\x0d\x0a/*主函数*/\x0d\x0avoid main(void)\x0d\x0a{\x0d\x0aint ch;\x0d\x0ach=Menu();\x0d\x0aInit();\x0d\x0aDrawK();\x0d\x0aGamePlay(ch);\x0d\x0aClose();\x0d\x0a}\x0d\x0a\x0d\x0avoid Init(void)\x0d\x0a{\x0d\x0aint gd=DETECT,gm;\x0d\x0ainitgraph(gd,gm,"c:\\tc");\x0d\x0acleardevice();\x0d\x0a}\x0d\x0a\x0d\x0avoid DrawK(void)\x0d\x0a{\x0d\x0asetcolor(11);\x0d\x0asetlinestyle(SOLID_LINE,0,THICK_WIDTH);\x0d\x0afor(i=50;i0;i--) /*贪吃蛇的移动算法*/\x0d\x0a{\x0d\x0asnake.x[i]=snake.x[i-1];\x0d\x0asnake.y[i]=snake.y[i-1]; /*贪吃蛇的身体移动算法*/\x0d\x0a}\x0d\x0a\x0d\x0aswitch(snake.direction) /*贪吃蛇的头部移动算法,以此来控制移动*/\x0d\x0a{\x0d\x0acase 1:snake.x[0]+=10;break;\x0d\x0acase 2:snake.x[0]-=10;break;\x0d\x0acase 3:snake.y[0]-=10;break;\x0d\x0acase 4:snake.y[0]+=10;break;\x0d\x0a}\x0d\x0afor(i=3;i595||snake.y[0]455)\x0d\x0a{\x0d\x0aGameOver();\x0d\x0asnake.life=1;\x0d\x0a}\x0d\x0aif(snake.life==1) /*如果死亡就退出循环*/\x0d\x0abreak;\x0d\x0aif(snake.x[0]==food.xsnake.y[0]==food.y) /*判断蛇是否吃到食物*/\x0d\x0a{\x0d\x0asetcolor(0);\x0d\x0arectangle(food.x,food.y,food.x+10,food.y-10); /*吃的食物后用黑色将食物擦去*/\x0d\x0asnake.x[snake.node]=-20;snake.y[snake.node]=-20; /*现把增加的一节放到看不到的地方去*/\x0d\x0a\x0d\x0asnake.node++;\x0d\x0afood.yes=1;\x0d\x0ascore+=10;\x0d\x0aPrScore();\x0d\x0a}\x0d\x0asetcolor(4); /*每次移动后将后面的身体擦去*/\x0d\x0afor(i=0;i
回答于 2022-11-16
弄00puts通过了本西0
弄00puts通过了本西0
puts是输出函数,只有一个参数要求是字符串。
1、函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理。puts()函数用来向标准输出设备写字符串并换行,其调用格式为puts,puts(s)等效于printf("%s\n",s)。
2、gets()函数将接收输入的整个字符串直到遇到换行为止。当puts遇到O时,会输出一个\n,也就是换行,所以puts("")时,因为字符串本身长度为0,所以第一个字符就是\0,puts会输出一个\n,所以起到了换行的效果。
3、puts()函数用来向标准输出设备写字符串并换行。puts(char*p)是专门输出字符串的函数,其参数是一个指向字符串的指针p,或者说一个串的地址。printf(char*p,s)是一个格式输出函数,把s代表的变量或者数组字符串等按照串p所指的格式输出。
肝吸虫属于线虫吗
肝吸虫不属于线虫。肝吸虫是华支睾吸虫,肝吸虫病又叫华支睾吸虫病,是华支睾吸虫寄生在人体肝内胆管引起的寄生虫病。主要的特点是精神不佳、上腹隐痛、腹泻、肝肿大等,严重时可以发生胆管炎、胆石症、肝硬化等。
求助C课程设计
下面是一个比较完善的学生管理系统了,有简单界面。
已经在实际环境上编译并运行通过。
==============================================================
#includeiostream.h
#includeiomanip.h
#includewindows.h
#include conio.h
void back();//返回开始菜单
void out();//输出信息
int w=1; //用于记录学生人数,全局变量
class Data//日期类
{public:
double Year,Month,Day;
Data()
{ Year=0;Month=0;Day=0; }
};
class student //学生类
{
public:
char name[10]; //姓名
char sex[5]; //性别
char jiguan[10]; //籍贯
int num,age;//学号,年龄
char adr[30];//住址
Data year;
friend class Data;//date作为student的友元 //定义一个日期类
void operator=(student s); //=重载
int operator == (student s);//==重载
}stu[100];
void main()
{
system("cls");//清屏 DOC调用
system("color f4"); //颜色 同样是调用doc
int i;
void comp();
void input();
void find();
void alt() ;
void del();
void exit();
void show();
coutsetw(53)"欢迎进入学生管理系统!"endl;
coutsetw(55)"1 添加学生信息 2 查询学生信息"endlendl;
coutsetw(55)"3 删除学生信息 4 修改学生信息"endlendl;
coutsetw(55)"5 比较学生信息 6 显示学生信息"endlendl;
coutsetw(45)"0 推出系统"endl;
cout"请选择:";
cini;
if(i6||i0)
{
cout"输入有误!"endl;
back();
}
switch(i)
{
case 1:input();break;
case 2:find();break;
case 3:del();break;
case 4:alt();break;
case 5:comp();break;
case 6:show();break;
case 0:exit();break;
default:cout"你的输入有误!\n";
}
}
void input() //添加学生
{
system("color 84"); //颜色 同样是调用doc
system("cls");//清屏
int n;
cout"请输入要添加的学生个数:\n";
cinn;
if(n=100||n=0)
{cout"输入有误!endl";
main(); }
else
{
for(;n0;w++,n--)
{
cout"请输入姓名、性别、籍贯,年龄,学号,住址:"endl;
cinstu[w].namestu[w].sexstu[w].jiguanstu[w].age stu[w].numstu[w].adr ;
cout"请输入该生生日(年 月 日)"endl;
cinstu[w].year.Year;
cinstu[w].year.Month;
cinstu[w].year.Day;
}
out();
}
cout"添加完毕2秒后返回"endl;
Sleep(2000); //延时2秒
main();
}
void find() //按学号查找学生
{
system("color f4"); //颜色 同样是调用doc
system("cls");
int i,id,j=0;//j是用以记录是否有信息被找到
cout"请输入你要查找学生的学号:";
cinid;
for(i=1;iw;i++)
if(stu[i].num ==id)
{
couti" "stu[i].name" "stu[i].sex" "stu[i].jiguan" "stu[i].age" "stu[i].num" "stu[i].year.Year" "stu[i].year.Month" "stu[i].year.Daystu[i].adrendl;
j++;
}
if(j==0)
cout"没有你要查找的信息";
back();
}
void del()//删除指定学号学生信息
{
system("color f4"); //颜色 同样是调用doc
int i,a,y=0;
char x;
cout"请输入要删除的学生学号";
cina;
for(i=1;iw;i++)
if(stu[i].num==a)
{
cout"该生情况:"endl;
couti" "stu[i].name" "stu[i].sex" "stu[i].jiguan" "stu[i].age" "stu[i].num" "stu[i].year.Year" "stu[i].year.Month" "stu[i].year.Day" "stu[i].adrendl;
cout"是否确认删除?(Y/N)"endl;
cinx;
if(x=='Y'||x=='y')
{
y++;
for(;iw-1;i++)
stu[i]=stu[i+1];
w--;//每删除一个对总是减少一个
}
}
if(y==0)
{
cout"该学生不存在!"endl;
back();
}
else
{
cout"删除后的信息为:"endl;
out();
back();
}
}
void alt()//修改指定学号学生
{
system("color f4"); //颜色 同样是调用doc
int id,y=0;
char x;
cout"请输入要修改学生的学号:";
cinid;
for(int i=1;iw;i++)
if(stu[i].num ==id)
{
cout"该生情况:"endl;
couti" "stu[i].name" "stu[i].sex" "stu[i].jiguan" "stu[i].age" "stu[i].num" "stu[i].year.Year" "stu[i].year.Month" "stu[i].year.Day" "stu[i].adrendl;
cout"是否确认修改?(Y/N)"endl;
cinx;
if(x=='Y'||x=='y')
{
y++;
cout"请输入姓名、性别、籍贯,年龄,学号,住址:"endl;
cinstu[i].namestu[i].sexstu[i].jiguanstu[i].age stu[i].numstu[i].adr ;
cout"请输入该生生日(年 月 日)"endl;
cinstu[i].year.Year;
cinstu[i].year.Month;
cinstu[i].year.Day;
}
else
{
cout"2秒后返回"endl;
Sleep(2000);
main();
}
}
if(y==0)
{
cout" 该学生不存在!";
back();
}
else
{
cout"修改后的信息为:"endl;
out();
back();
}
}
void student::operator =(student stu)//对=运算符重载函数的实现
{
num=stu.num;
for(int i=0;i9;i++)
name[i]=stu.name[i];
for(i=0;i4;i++)
sex[i]=stu.sex[i];
age=stu.age;
for(i=0;i9;i++)
jiguan[i]=stu.jiguan[i] ;
for(i=0;i29;i++)
adr[i]=stu.adr[i] ;
year.Year=stu.year.Year ;
year.Month =stu.year.Month ;
year.Day =stu.year.Day ;
}
int student::operator == (student stu)//对==运算符重载函数的实现
{
if(*name==*stu.name *sex==*stu.sex age==stu.age *jiguan==*stu.jiguan *adr==*stu.adryear.Year ==stu.year.Yearyear.Month ==stu.year.Monthyear.Day ==stu.year.Day )
return 1;
else
return 0;
}
void comp()//学生信息对比
{
system("color f4"); //颜色 同样是调用doc
system("cls");
int i;
int num1,num2;
cout"请输入要比较的两个同学的学号"endl;
cinnum1num2;
for(i=1;iw;i++)
if(stu[i].num ==num1)
num1=i;
for(i=1;iw;i++)
if(stu[i].num==num2)
num2=i;
if(stu[num1]==stu[num2])
cout"这两个学生是相同的"endl;
else
cout" 这两个学生不同"endl;
back();
}
void show()//显示
{
out();
back();
}
void exit()//退出
{
exit(0);
}
void back()//返回
{
cout" 按任意键返回!"endl;
getch();
main();
}
void out()//输出
{
int i;
cout" 姓名 性别 籍贯 年龄 学号 生日 住址"endl;
for(i=1;iw;i++)
couti" "stu[i].name" "stu[i].sex" "stu[i].jiguan" "stu[i].age" "stu[i].num" "stu[i].year.Year" "stu[i].year.Month" "stu[i].year.Day" "stu[i].adrendl;
}
[译] ARMv8-A架构基础之寄存器
ARMv8-A提供了31个64位的通用寄存器,始终可以访问,并且可以在所有异常级别访问。 在AArch64执行状态下,每个寄存器(X0-X30)都是64位宽度。 宽度增加有助于减少大部分应用程序中的寄存器压力。
每个64位通用寄存器(X0 - X30)也有一个32位的格式(W0 - W30)。
32位W寄存器构成相应的64位X寄存器的下半部分。 即W0形成X0的低位字,W1形成X1的低位字。
从W寄存器中读取时,忽略对应的X寄存器的高32位并且保持他们不变。 写入W寄存器将X寄存器的高32位设置为零。 因此,将0xFFFFFFFF写入W0会将X0设置为0x00000000FFFFFFFF。
特殊寄存器
除了31个(X0到X30)个ARMv8-A核心寄存器之外,还有几个特殊的寄存器。
在AArch64中执行时,对于每个异常级别,异常返回状态将保存在以下专用寄存器中:
下表按异常级别标识特殊寄存器:
异常级别的特殊寄存器
程序调用标准(PCS)还定义了一个专用的帧指针(FP),通过可靠地展开堆栈,它使调试和调用关系图分析变得更加容易。
零寄存器
零寄存器的名字暗示着什么。
零寄存器忽略所有对它的写操作,并且所有对它的读操作都返回0.您可以在大多数(但不是全部)指令中使用零寄存器。
堆栈指针
堆栈指针(SP)是一个指向堆栈顶部的寄存器。 选择使用的堆栈指针在某种程度上与“异常”级别是分开的。 默认情况下,发生异常时会为目标异常级别选择堆栈指针(SP_ELn)。 例如,发生EL1异常时选择SP_EL1。 每个异常级别都有自己的堆栈指针。
但是,当在AArch64中,异常级别的不是E0时,处理器可以使用下面中的任何一种:
SP不能被大多数指令引用。 但是,一些算术指令,例如ADD指令,可以读写当前的堆栈指针来调整函数中的堆栈指针。 例如:
程序计数器
程序计数器(PC)保存当前的程序地址。 它不能被数字引用(就像通用寄存器文件的一部分一样),因此不能用作算术指令的源或目的地,或作为加载和存储指令的基址,索引或转移寄存器。
那些可以读取PC的指令是那些具有计算PC相对地址功能的指令(ADR,ADRP,字面加载和直接分支),以及在链接寄存器中存储返回地址的“分支并链接”指令(BL和BLR)。 修改程序计数器的唯一方法是使用分支,异常生成和异常返回指令。
使用计算PC相对地址的指令读取PC时,读取的PC值是该指令的地址。 与ARMv7-A不同,不存在4或8字节的隐含偏移量。
异常链接寄存器(ELR)
异常链接寄存器保存要在异常后返回的地址。