
问题一:解释程序的功能是什么? 计算机程序或者软件程序(通常简称程序)是指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序),用于指导懂汉语的人(体系结构)来做这个菜。 通常,计算机程序要经过编译和链接而成为一种人们不易理解而计算机理解的格式,然后运行。未经编译就可运行的程序通常称之为脚本程序。
问题二:什么是翻译程序,编译程序,解释程序 翻译程序是指将用某种语言编写的程序转换成另一种语言形式的程序的程序,如编译程序和汇编程序等。
编译程序是把用高级语言编写的源程序转换(加工)成与之等价的另一种用低级语言编写的目标程序的翻译程序。
解释程序是解释、执行高级语言源程序的程序。
问题三:程序是什么意思 程序(program)是为实现特定目标或解决特伐问题而用计算机语言编写的命令序列的 。为实现预期目的而进行 *** 作的一系列语句和指令。一般分为系统程序和应用程序两大类。 计算机中的程序在港澳台地区称为程式。程序就是为使电子计算机执行一个或多个 *** 作,或执行某一任务,按序设计的计算机指令的
问题四:计算机中解释程序什么意思!在线等答案!!! baikebaidu/view/47200
问题五:编译程序和解释程序都是什么程序 编译程序是整体编译完了,再一次性执行。 而解释程序是一边解释,一边执行。
问题六:请问编译程序和解释程序是什么意思?什么是编译器、什么是解释器? 编译和解释是从源程序到可执行程序转换的两种方法。编译,是在源程序完成后,先转换穿中间代码,然后再转换成二进制代码,完成后,每次执行,都直接执行这个二进制代码。一次转换完成。
而解释程序的执行不同,他在执行时,是一次读入一条源代码,然后分析转换成二进制代码,执行这条语句,然后再读入一条源代码,再转换,再执行。是一边转换一边执行。编译器和解释器就是完成编译和解释工作的一个软件。
问题七:编译程序和解释程序有何区别 编译程序是整体编译完了,再一次性执行。
而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。
问题八:什么是源程序,目标程序? 你龚键盘上输入的代码(一般是文本格式)就是源程序,机器翻译为机器可以识别、但是我们人不能识别的代码就是目标程序。
问题九:解释程序的工作方式是什么 C
参考JAVA程序
问题十:选择题,解释程序的功能是? 选A
所谓解释程序是高级语言翻译程序的一种,它将源语言(如BASIC)书写的源程序作为输入,解释一句后就提交计算机执行一句,并不形成目标程序。
就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。这种工作方式非常适合于人通过终端设备与计算机会话,如在终端上打一条命令或语句,解释程序就立即将此语句解释成一条或几条指令并提矗硬件立即执行且将执行结果反映到终端,从终端把命令打入后,就能立即得到计算结果。这的确是很方便的,很适合于一些小型机的计算问题。但解释程序执行速度很慢,例如源程序中出现循环,则解释程序也重复地解释并提交执行这一组语句,这就造成很大浪费。
分类: 电脑/网络 >> 程序设计 >> 其他编程语言
问题描述:
程序如下:
#include"stdioh"
#include"stdlibh"
#define m 4
#define n 4
struct stype
{int x,y;
}stack[400];
int mg[m+2][n+2];
int zx[9],zy[9];
void printlj(int TOP)
{int i;
for(i=1;i<=TOP;i++)
{printf("(%d,%d)",stack[i]x,stack[i]y);
}
}
void mglj()
{int i,j,x,y,top,find,v;
top=1;stack[1]x=1;stack[1]y=1;find=0; mg[1][1]=-1;
while(top>=1&&!find)
{x=stack[top]x; y=stack[top]y;
for(v=1;v<=8;v++)
{i=x+zx[v];
j=y+zy[v];
if(mg[i][j]==0)
{top++;
stack[top]x=i;
stack[top]y=j;
mg[i][j]=-1;
break;
}
if(v==8) top--;
}
if((stack[top]x ==m)&&(stack[top]y ==n))
{printlj(top);
find=1;
}
}
if(!find) printf("no way\n");
}
void main()
{int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
scanf("%d",&mg[i][j]);
for(i=0;i<=m+1;i++)
{mg[i][0]=1;mg[i][n+1]=1;}
for(j=0;j<=n+1;j++)
{mg[0][j]=1;mg[m+1][j]=1;}
zx[1]=-1;zx[2]=-1;zx[3]=0;zx[4]=1;zx[5]=1;zx[6]=1;zx[7]=0;zx[8]=-1;
zy[1]=0;zy[2]=1;zy[3]=1;zy[4]=1;zy[5]=0;zy[6]=-1;zy[7]=-1;zy[8]=-1;
mglj();
}
解析:
我看了一下,算法应该是一样的,下面是我以前用C++写的
相信你能看得懂
/
/迷宫求解
作者:baihacker/
/时间:11102006/
/
/class:
Matrix:矩阵类
offsets:搜索偏移
enum directions:四个方向
struct item:搜索节点
Migong:迷宫类
1创建一个Migong对象
2使用用Create方法输入数据
3使用Solve方法进行求解
4ShowSolve方法显示解
5可以重复使用Create方法
6入口只能在左上角
7默认出口在右下角
ShowAllPath:穷举所有的路径
备注:
由于算法原因,这里的所有路径应该是指
介于:
a如果两条路存在某个点不同那么就是不同的路
b如果在一条路中去掉一个或者一个以上的圈,那么他们是同一条路
之间意义上的路
/
#include <iostream>
#include <stack>
#include <vector>
using namespace std;
#ifndef MIGONG_H
#define MIGONG_H
/
/矩阵类
/
class Matrix{
int m;
int row, col;
bool iscreate;
public:
Matrix(){m=0;iscreate=false;};
~Matrix() {Release();};
bool Create(int, int);
int& operator () (int, int);
int GetRow(){return row;};
int GetCol(){return col;};
void Release();
void Show(char, char );
};
bool Matrix::Create(int r, int c)
{
if( r<=0 || c<=0) return false;
Release();
row = r;
col = c;
m = new int[rowcol];
for (int i=0;i<rowcol;i++)
{
(m+i) = 0;
}
iscreate = true;
return true;
}
int& Matrix::operator ()(int r, int c)
{
return (m+rcol+c);
}
void Matrix::Release()
{
if (iscreate)
{
row = col = 0;
if (m) delete[] m;
m = 0;
}
iscreate = false;
}
void Matrix::Show(char blk='#', char nblk=' ')
{
int i, j;
for (i=0;i<row;i++)
{
for (j=0;j<col;j++)
{
if ((m+icol+j) == 0)
cout<<nblk;
else
cout<<blk;
}
cout<<endl;
}
}
/
迷宫相关数据结构的定义/
/
struct offsets{
int a, b;
};
enum directions{
_S = 0,
_E,
_N,
_W
};
struct item{
int row, col, dir;
};
class Migong{
static offsets move[4];
Matrix maze;
Matrix mark;
int row;
int col;
int desr;
int desc;
stack<item> stk;
bool iscreate;
int pathlength;
bool GetPath();
bool IsInPath(int, int);
public:
Migong(){issolved=false;result=0;pathlength=row=col=0;iscreate=false;};
~Migong(){Release();};
bool Create(int , int , int , int , int );
void Solve();
void Release();
void OutputMaze();
void ShowSolve(char, char );
public:
bool issolved;
item result;
};
offsets Migong::move[4]={ {1, 0}, {0, 1},
{-1, 0}, {0, -1}};
迷宫数据应该是不含边框的
bool Migong::Create(int m, int r, int c, int desrow=-1, int descol=-1)
{
if (r<=0 || c<=0) return false;
Release();
if (desrow==-1 || descol==-1)
{
desr = r;
desc = c;
}
else
{
desr = desrow;
desc = descol;
}
row = r;
col = c;
mazeCreate(r+2, c+2);
markCreate(r+2, c+2);
int i, j;
for (i=0;i<r+2;i++)
{
for (j=0;j<c+2;j++)
{
if (j==0 || j==c+1 || i==0 || i==r+1)
{
mark(i, j) = maze(i, j) = 1;
}else
{
mark(i, j) = 0;
maze(i, j) = m[((i-1)col+j-1)];
}
}
}
return iscreate = true;
}
bool Migong::GetPath()
{
mark(1,1) = 1;
item temp;
tempcol = 1;
temprow = 1;
tempdir = _S;
stkpush(temp);
while (!stkempty())
{
temp = stktop();
stkpop();
int i = temprow;
int j = tempcol;
int d = tempdir;
while (d<4)
{根据当前点的状态确定下一个搜索点
int g = i + move[d]a;
int h = j + move[d]b;
if (g==desr && h==desc)
{
return true;
}
如果这个点不是障碍点且没有被搜索过那么可以对这个点进行搜索
if (maze(g, h)==0 && mark(g, h)==0)
{
mark(g, h) = 1;
temprow = g;
tempcol = h;
tempdir = d+1;
stkpush(temp);
i = g;
j = h;
d = _S;对一下个点进行搜索
}
else d++;
}
}
return false;
}
void Migong::Solve()
{
issolved = GetPath();
if (issolved)
{
pathlength = stksize();
result = new item[pathlength];
for (int i=0;i<pathlength;i++)
{
(result+i) = stktop();
stkpop();
cout<<"("<<((result+i))row<<","<<((result+i))col<<")"<<endl;
}
}
while (!stkempty())
stkpop();
}
void Migong::Release()
{
if (iscreate)
{
mazeRelease();
markRelease();
row=col=0;
if (result)
delete [] result;
result = 0;
while (!stkempty())
stkpop();
}
iscreate = false;
issolved = false;
pathlength = 0;
}
void Migong::OutputMaze()
{
if (!iscreate) return;
mazeShow();
}
bool Migong::IsInPath(int r, int c)
{
if (!iscreate || !issolved)
return false;
item temp;
for (int i=0;i<pathlength;i++)
{
temp = (result+i);
if ((temprow==r) && (tempcol==c))
return true;
}
return false;
}
void Migong::ShowSolve(char blk='#',char s='o')
{
if (!iscreate) return;
if (!issolved)
{
cout<<"无解"<<endl;
}
else
{
int i, j;
for (i=0;i<row+2;i++)
{
for (j=0;j<col+2;j++)
{
if ((i==1 && j==1) || (i==desr && j==desc))
{
cout<<s;
}
else if (maze(i, j) == 1)
{
cout<<blk;
}else
{
if (IsInPath(i, j))
cout<<s;
else
cout<<' ';
}
}
cout<<endl;
}
}
}
穷举所有路径
offsets move[4]={ {1, 0}, {0, 1},
{-1, 0}, {0, -1}};
struct node
{
int row,col;
};
vector<node> path;
int count;
bool IsReachable( Matrix& maze, Matrix& mark, node beg, node des)
{
if (begrow==desrow&&begcol==descol)
{如果达到的话那么显示路径
count++;
cout<<"第"<<count<<"条路径:"<<endl;
for (int i=0;i<pathsize();i++)
cout<<"("<<path[i]row<<","<<path[i]col<<")";
cout<<"("<<desrow<<","<<descol<<")";
cout<<endl;
return false;
}
if (maze(begrow, begcol)==1 || mark(begrow, begcol)==1)
{
return false;
}
pathpush_back(beg);
mark(begrow, begcol) = 1;
node nextnode;
for (int i=_S;i<_W+1;i++)
{
nextnoderow = begrow + move[i]a;
nextnodecol = begcol + move[i]b;
IsReachable(maze, mark, nextnode, des);
}
pathresize(pathsize()-1);
mark(begrow, begcol) = 0;
return false;如果不是穷举的话应该根据for循环的结果重新设置返回值
}
/
参数maze,mark为迷宫长宽均加二的矩阵
desr,desc为出口点
/
void FindAllPath( Matrix& maze, Matrix& mark, int desr, int desc)
{
node first, last;
firstrow = 1;
firstcol = 1;
lastrow = desr;
lastcol = desc;
IsReachable(maze, mark, first, last);
pathclear();
}
/
m迷宫矩阵数据
r,c行和列的大小
desr,desc目标位置
/
void ShowAllPath(int m, int r, int c, int desr=-1, int desc=-1)
{
Matrix maze, mark;
mazeCreate(r+2, c+2);
markCreate(r+2, c+2);
if (desr==-1 || desc==-1)
{
desr = r;
desc = c;
}
int i, j;
for (i=0;i<r+2;i++)
{
for (j=0;j<c+2;j++)
{
if (j==0 || j==c+1 || i==0 || i==r+1)
{
mark(i, j) = maze(i, j) = 1;
}else{
mark(i, j) = 0;
maze(i, j) = m[((i-1)c+j-1)];
}
}
}
count = 0;
FindAllPath(maze, mark, desr, desc);
mazeRelease();
markRelease();
}
#endif
开头,中间都可以的这是比较常见的。它没有固定的位置,只是有固定的写法而已,下面会有列到。
原则上只要不破坏声明和语句的意思和结构,放在哪里都可以,但是注释后将下一句分栏,就下面列举的//这种类型,一般可以软件中看到的,正常语句和注释的颜色不一样。
例如,不要放在宏的同行,不要放到 打印格式字符串里。
两种注释写法
/ 注释 /
// 注释
Dim
Ch0
As
String
’定义字符串ch0
Dim
Am
As
Integer
定义整数变量
am
Dim
T(31)
As
Double
'定义双精度数组
Dim
ChN
As
String
’定义字符串chn
Private
Sub
Command1_Click()
Command1Enabled
=
False
Command2Enabled
=
False
Command3Enabled
=
False
Command4Enabled
=
False
Command5Enabled
=
False
Command6Enabled
=
False
Command7Enabled
=
False
’以上激活command1~7控件
Dim
retval
As
Integer
Timer1Interval
=
1000
'时间控件间隔时间设为1000ms,也就是1s
Timer1Enabled
=
True
'激活控件timer1
End
Sub
Private
Sub
Combo1_Click()
Select
Case
Combo1ListIndex
’判断下拉列表框显示的是几号元素
Case
0
'如果是0号执行下面语句
Am
=
0
Case
1
Am
=
1
Case
2
Am
=
2
Case
3
Am
=
3
Case
4
Am
=
4
End
Select
’结束判断
End
Sub
Private
Sub
Command2_Click()
'下面调用这个函数AM9110_WR8254()通过给不同的参数
Call
AM9110_WR8254(hPLX9052,
3,
&H37&)
Call
AM9110_WR8254(hPLX9052,
0,
&H0&)
Call
AM9110_WR8254(hPLX9052,
0,
&H0&)
Call
AM9110_WR8254(hPLX9052,
3,
&H77&)
Call
AM9110_WR8254(hPLX9052,
1,
&H4&)
'&H0&)
Call
AM9110_WR8254(hPLX9052,
1,
&H0&)
'&H1&)
Call
AM9110_WR8254(hPLX9052,
3,
&HB6&)
'&HB7&)
Call
AM9110_WR8254(hPLX9052,
2,
&HFF&)
'&H2&)
Call
AM9110_WR8254(hPLX9052,
2,
&HFF&)
'&H0&)
Timer2Interval
=
100
’同上
Timer2Enabled
=
True
Command1Enabled
=
False
'使控件失效
Command9Enabled
=
False
Command6Enabled
=
False
Command3Enabled
=
False
Command4Enabled
=
False
Command7Enabled
=
False
Command5Enabled
=
True
End
Sub
Private
Sub
Command3_Click()
Dim
data
As
Integer
data
=
Val("&H"
+
Text17Text)
’把Text17中输入的数据当做16进制来处理
Call
AM9110_DA(hPLX9052,
1,
data)
'调用子程序
End
Sub
Private
Sub
Command4_Click()
Dim
data
As
Integer
data
=
Val("&H"
+
Text24Text)
Call
AM9110_DA(hPLX9052,
0,
data)
End
Sub
注释为对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释为编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。注释只是为了提高可读性,不会被计算机编译。
注释通常会分为行注释和块注释。
行注释:在符号后那一行不会被编译(显示);块注释:被块注释符号中间的部分不会被编译。
扩展资料
C语言的注释符以“/”开头并以“/”结尾的串。在“/”和“/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。
注释用来向用户提示或解释程序的意义。在调试程序中对暂不使用的语句也可用注释符括起来,使翻译跳过不作处理,待调试结束后再去掉注释符。
可以使用多种方法创建文字。对简短的输入项使用单行文字。对带有内部格式的较长的输入项使用多行文字(也称为多行文字)。也可创建带有引线的多行文字。
虽然所有输入的文字都使用建立了默认字体和格式设置的当前文字样式,但也可以使用其他的方法自定义文字外观。有一些工具可以方便用户修改文字比例和对正、查找和替换文字以及检查拼写错误。
参考资料来源:百度百科-注释符
参考资料来源:百度百科-注释
以上就是关于什么是解释程序全部的内容,包括:什么是解释程序、求C语言迷宫程序的解释说明!!!、c语言源程序的注释说明位于什么位置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)