当前位置:首页 » 编程软件 » 编译器判断时间超时

编译器判断时间超时

发布时间: 2024-08-18 15:33:52

A. c语言贪吃蛇源代码怎么用

C语言贪吃蛇源代码必须经过相应的C/C++编译器编译成EXE文件后才能运行。

由于我们通常使用的操作系统是Windows系统,而在该系统下最长用的C/C++编译器是VC++编译器,目前在大专院校常用的版本还是VC++6.0

下面就以VC++6.0来说明编译过程:

1.在VC++6.0中通过“File”菜单下的 “Open”子菜单打开贪吃蛇代码

/*
C/C++贪吃蛇游戏,zjlj,2015.3.16
*/
#defineDEBUG0//当程序在调试阶段时DEBUG为1
#include<iostream>
#include<windows.h>
#include<time.h>
#include<conio.h>
usingnamespacestd;
voidreadini(FILE**fphead,int*score,char*argv[])//创建或打开一个和运行文件对应的ini文件,读取最高纪录
{
charfilename[200],*pfilename;
intflag=-1,i;

strcpy(filename,argv[0]);
for(i=0;filename[i]!='';i++)
{
if('.'==filename[i])flag=1;
}

if(1==flag)
{
filename[i-1]='i';
filename[i-2]='n';
filename[i-3]='i';
}
else
{
filename[i]='.';
filename[i+1]='i';
filename[i+2]='n';
filename[i+3]='i';
filename[i+4]='';
}
for(;filename[i]!='\'&&i>=0;i--)pfilename=&filename[i];
if((*fphead=fopen(pfilename,"rb+"))==NULL)
{
if((*fphead=fopen(pfilename,"wb+"))==NULL)
{
printf("无法创建或打开"%s"文件 ",pfilename);
system("pause");
exit(0);
}
}
else
{
fread(score,sizeof(int),1,*fphead);
}
}
voidwriteini(FILE**fphead,int*score,char*argv[])//打开一个和运行文件对应的ini文件,写入最高纪录
{
charfilename[200],*pfilename;
intflag=-1,i;

strcpy(filename,argv[0]);
for(i=0;filename[i]!='';i++)
{
if('.'==filename[i])flag=1;
}

if(1==flag)
{
filename[i-1]='i';
filename[i-2]='n';
filename[i-3]='i';
}
else
{
filename[i]='.';
filename[i+1]='i';
filename[i+2]='n';
filename[i+3]='i';
filename[i+4]='';
}
for(;filename[i]!='\'&&i>=0;i--)pfilename=&filename[i];
if((*fphead=fopen(pfilename,"wb+"))==NULL)
{
printf("无法写入"%s"文件,磁盘写保护! ",pfilename);
system("pause");
exit(0);
}
else
{
rewind(*fphead);
fwrite(score,sizeof(int),1,*fphead);
fclose(*fphead);
}
}
voidgotoxy(intx,inty)//光标定位,光标定位函数SetConsoleCursorPosition是左上角位置是0,0然后向左向下延伸
{
COORDpos;
pos.X=2*y;
pos.Y=x;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
voidcolor(inta)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}

voidRefresh(intq[][22],intgrade,intgamespeed,intlength,intscore)//输出贪吃蛇棋盘
{
inti,j;
for(i=0;i<22;i++)
{
for(j=0;j<22;j++)
{
if(q[i][j]==0)//输出棋盘空白
{
gotoxy(i,j);
color(11);
cout<<"■";
}
if(q[i][j]==1||q[i][j]==2)//输出棋盘墙壁
{
gotoxy(i,j);
color(11);
cout<<"□";
}
if(q[i][j]==3)//输出蛇头
{
gotoxy(i,j);
color(14);
cout<<"★";
}
if(q[i][j]==4)//输出蛇身
{
gotoxy(i,j);
color(12);
cout<<"◆";
}
if(q[i][j]==5)//输出果子
{
gotoxy(i,j);
color(12);
cout<<"●";
}
}
if(i==0)cout<<" ***********************";
if(i==1)cout<<" 等级为:"<<grade;//显示等级
if(i==3)cout<<" 自动前进时间";
if(i==4)cout<<" 间隔为:"<<gamespeed<<"ms";//显示时间
if(i==6)cout<<" 历史最高分为:"<<score<<"分";
if(i==7)cout<<" 你现在得分为:"<<(length+(grade-1)*8)*10<<"分";
if(i==8)cout<<" **********************";
if(i==9)cout<<" 游戏说明:";
if(i==10)cout<<" (1)用小键盘方向键控制";
if(i==11)cout<<" 蛇头运动方向;";
if(i==12)cout<<" (2)蛇每吃一个果子蛇身";
if(i==13)cout<<" 增加一节;";
if(i==14)cout<<" (3)蛇咬到自己或碰到墙";
if(i==15)cout<<" 壁游戏结束。";
if(i==18)cout<<" **********************";
if(i==19)cout<<" C/C++语言作业:";
if(i==20)cout<<" zjlj,2015.03.16";
}
}

intmain(intargc,char*argv[]){
inttcsQipan[22][22];//贪吃蛇棋盘是一个二维数组(如22*22,包括墙壁)
inti,j,score,directiontemp;
FILE*fpini;//*fpini信息文件
readini(&fpini,&score,argv);//读取ini文件的最高纪录
if(score<0)//最高成绩小于零设置为零,初建文件会是负数
score=0;
while(1)
{
for(i=1;i<=20;i++)
for(j=1;j<=20;j++)
tcsQipan[i][j]=0;//贪吃蛇棋盘相应坐标标上中间空白部分的标志0
for(i=0;i<=21;i++)
tcsQipan[0][i]=tcsQipan[21][i]=1;//贪吃蛇棋盘相应坐标标上上下墙壁的标志1
for(i=1;i<=20;i++)
tcsQipan[i][0]=tcsQipan[i][21]=2;//贪吃蛇棋盘相应坐标标上左右墙壁的标志2
inttcsZuobiao[2][500];//蛇的坐标数组
for(i=0;i<4;i++)
{
tcsZuobiao[0][i]=1;//蛇身和蛇头的x坐标
tcsZuobiao[1][i]=i+1;//蛇身和蛇头的y坐标
}
inthead=3,tail=0;//标示蛇头和蛇尾的数组偏移量
for(i=1;i<=3;i++)
tcsQipan[1][i]=4;//蛇身
tcsQipan[1][4]=3;//蛇头
intx1,y1;//随机出果子
srand(time(0));//设置随机种子
do
{
x1=rand()%20+1;
y1=rand()%20+1;
}
while(tcsQipan[x1][y1]!=0);//如果不是在空白处重新出果子
tcsQipan[x1][y1]=5;//贪吃蛇棋盘相应坐标标上果子的标志5
color(12);
cout<<" 贪吃蛇游戏即将开始!"<<endl;//准备开始
longstart,starttemp;
intgrade=1,length=4;//设置初始等级和蛇的初始长度
intgamespeed=500;//设置初始前进时间间隔
for(i=3;i>=0;i--)
{
start=clock();
while(clock()-start<=1000);
system("cls");
if(i>0)
cout<<" 进入倒计时:"<<i<<endl;//倒计时显示
else
Refresh(tcsQipan,grade,gamespeed,length,score);//初始棋盘显示
}
inttimeover=1,otherkey=1;//初始化超时时间和按键判断参数
chardirection=77;//设置初始情况下,向右运动
intx=tcsZuobiao[0][head],y=tcsZuobiao[1][head];//保存蛇头坐标到x,y变量
while(1)//运行一局游戏
{
start=clock();
while((timeover=((starttemp=clock())-start<=gamespeed))&&!kbhit());//如果有键按下或时间超过自动前进时间间隔则终止循环
if(direction==72||direction==80||direction==75||direction==77)
directiontemp=direction;//保留上一次方向按键
//starttemp=gamespeed+start-starttemp;//保留停留时间
if(timeover)
{
#if(DEBUG==1)
direction=getch();//调试代码
#else
if((direction=getch())==-32)
direction=getch();
#endif
}
#if(DEBUG==1)//调试代码
start=clock();
while(clock()-start<=2000);
gotoxy(24,4);
cout<<" 按键ASCII代码"<<(int)direction<<""<<endl;
#endif
if(!(direction==72||direction==80||direction==75||direction==77))
{
otherkey=0;//按键非方向键,otherkey设置为0
}
else
{
otherkey=1;//按键为方向键,otherkey设置为1
}
if(direction==72&&directiontemp==80)//忽略反方向按键
{
direction=32;
otherkey=0;
//start=clock();
//while(clock()-start<=starttemp);
}
elseif(direction==80&&directiontemp==72)
{
direction=32;//设置按键为非方向键
otherkey=0;//按键为非方向键,otherkey设置为0
//start=clock();
//while(clock()-start<=starttemp);//补偿等待时间
}
elseif(direction==75&&directiontemp==77)
{
direction=32;
otherkey=0;
//start=clock();
//while(clock()-start<=starttemp);
}
elseif(direction==77&&directiontemp==75)
{
direction=32;
otherkey=0;
//start=clock();
//while(clock()-start<=starttemp);
}


switch(direction)//判断方向键
{
case72:x=tcsZuobiao[0][head]-1;y=tcsZuobiao[1][head];break;//向上
case80:x=tcsZuobiao[0][head]+1;y=tcsZuobiao[1][head];break;//向下
case75:x=tcsZuobiao[0][head];y=tcsZuobiao[1][head]-1;break;//向左
case77:x=tcsZuobiao[0][head];y=tcsZuobiao[1][head]+1;break;//向右
default:break;
}


if(x==0||x==21||y==0||y==21)//蛇头碰到墙壁,结束本局游戏
{
gotoxy(22,12);
cout<<" 游戏已结束!"<<endl;
if(score>=(length+(grade-1)*8)*10)//判断是否破记录
{
gotoxy(10,7);
color(12);
cout<<"闯关失败加油耶!"<<endl;
fclose(fpini);//关闭ini文件
}
else
{
gotoxy(10,7);
color(12);
cout<<"恭喜您打破记录"<<endl;
score=(length+(grade-1)*8)*10;
writeini(&fpini,&score,argv);//写入ini文件的最高纪录
}
gotoxy(23,12);
cout<<"按回车键重新开始,按ESC退出游戏"<<endl;//显示的提示
break;//退出该局游戏
}
if(tcsQipan[x][y]!=0&&!(x==x1&&y==y1)&&tcsQipan[x][y]!=3)//蛇头碰到蛇身,结束本局游戏
{
gotoxy(22,12);
cout<<" 游戏已结束!"<<endl;
if(score>=(length+(grade-1)*8)*10)//判断是否破记录
{
gotoxy(10,7);
color(12);
cout<<"闯关失败加油耶!"<<endl;
fclose(fpini);//关闭ini文件
}
else
{
gotoxy(10,7);
color(12);
cout<<"恭喜您打破记录"<<endl;
score=(length+(grade-1)*8)*10;
writeini(&fpini,&score,argv);//写入ini文件的最高纪录
}
gotoxy(23,12);
cout<<"按回车键重新开始,按ESC退出游戏"<<endl;//显示的提示
break;//退出该局游戏
}
/*
游戏运行时的核心算法开始
*/
if(x==x1&&y==y1)//吃果子,长度加1
{
length++;
if(length>=8)//长度大于等于8重新计算长度,等级加1
{
length-=8;//重新计算长度
grade++;//等级加1
if(gamespeed>50)//控制最快速度为50
gamespeed=550-grade*50;//改变自动前进时间间隔
}
tcsQipan[x][y]=3;//贪吃蛇棋盘相应坐标现在蛇头标志改为蛇头标志3
tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]=4;//贪吃蛇棋盘相应坐标原来蛇头标志改为蛇身标志4
head=(head+1)%400;//防止数组越界
tcsZuobiao[0][head]=x;//蛇头的x坐标
tcsZuobiao[1][head]=y;//蛇头的y坐标
do//随机出果子
{
x1=rand()%20+1;
y1=rand()%20+1;
}
while(tcsQipan[x1][y1]!=0);//如果不是在空白处重新出果子
tcsQipan[x1][y1]=5;//贪吃蛇棋盘相应坐标标上果子的标志5
gotoxy(22,12);
cout<<" 游戏进行中!"<<endl;
Refresh(tcsQipan,grade,gamespeed,length,score);
}
else//不吃果子
{
if(otherkey)
{
tcsQipan[tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=0;
tail=(tail+1)%400;//防止数组越界
tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]=4;
head=(head+1)%400;//防止数组越界
tcsZuobiao[0][head]=x;//蛇头的x坐标
tcsZuobiao[1][head]=y;//蛇头的y坐标
tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]=3;
gotoxy(22,12);
cout<<" 游戏进行中!"<<endl;
Refresh(tcsQipan,grade,gamespeed,length,score);
}
else
{
gotoxy(22,12);
cout<<" 游戏暂停中!"<<endl;
}
}
/*
游戏运行时的核心算法结束
*/
}
while(1)
{
while(!kbhit());
if((direction=getch())==13)//按回车键开始下一局
break;
if(direction==27)//按ESC退出游戏
exit(0);
}
system("cls");//清除屏幕重新开始
}
return0;
}

B. 为什么我做c++题老是错,明明运行对了,但是老是超时,是循环用的不对吗

  1. 建议学习数据结构与算法,从时间复杂度和空间复杂度来考虑。举个例子:如果是两层循环嵌套,而时间复杂度就是O(n*n)。
  2. 如果是超时建议换题目的算法
  3. 最好使用vs的编译器,有助于提高你学习语言的质量。
  4. 推荐书籍,数据结构(c语言版);编译原理,算法导论。

C. jdk1.8能跑1.7写的代码吗

可以跑,需要把编译格式改成1.7,就可以跑1.7的代码了。

Error:(422, 132) java: -source 1.7 中不支持 lambda 表达式,Java -version 查看了自己的版本之后 ,确认是1.8,pom 里面也全是1.8,最后排查maven的setting.xml 中有java的编译版本,改成1.7就可以了。

先看我框起来的这一行代码,aysncResult 的里面有有个 CompletableFuture ,它调用的是带超时时间的 get() 方法,超时时间是 Integer.MAX_VALUE,理论上来说效果也就等同于 get() 方法了。

从我直观上来说,这里用 get() 方法也应该是没有任何毛病的,甚至更好理解一点。

jdk编译格式的用法:

词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。

源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。

热点内容
安卓怎么用汤不热 发布:2024-11-25 11:49:06 浏览:843
java线程调用 发布:2024-11-25 11:42:45 浏览:844
识地图算法 发布:2024-11-25 11:31:10 浏览:20
杨辉三角c语言程序一维数组 发布:2024-11-25 11:30:30 浏览:214
脚本一般用在什么地方 发布:2024-11-25 11:13:28 浏览:824
php上传xls 发布:2024-11-25 11:01:46 浏览:679
formphp 发布:2024-11-25 11:01:45 浏览:554
数据库主表 发布:2024-11-25 10:54:13 浏览:229
什么是cf脚本 发布:2024-11-25 10:51:48 浏览:921
存储台设计 发布:2024-11-25 10:40:04 浏览:669