把一小段Pascal代码翻译成C语言代码

来源:百度知道 编辑:UC知道 时间:2024/05/16 06:35:55
// Data是全局数据
// IsValid判断填入数值是否有效
// PrintData魔方阵数据输出
procedure MakeData(N:integer);
var posi,x,y:integer;
begin
nTotal:=N*(n*n+1) div 2;
posi:=0;
while true do
begin
x:=posi div N;
y:=posi mod N;
Data[x,y]:=Data[x,y]+1;
if Data[x,y]>N*N then
begin
Data[x,y]:=0;
dec(posi);
end
else if IsValid(Data[x,y]) then
begin
inc(posi);
if posi>N*N-1 then
begin
PrintData(N);
break;
end;
end;
end;
end;

把这段Pascal代码翻译成C语言代码

/*----------------------------------------------------------------
下面是按字面意思的翻译,中间可能会有某些变量或标示符无法识别,则是因为

c++是区分大小写的,而Pascal 是不区分大小写的,你可以变通一下了。

----------------------------------------------------------------*/

// Data是全局数据
// IsValid判断填入数值是否有效
// PrintData魔方阵数据输出

void MakeData(int N)
{
int posi,x,y;
nTotal =N*(N*N+1) / 2;
posi=0; x=0; y=0;//变量生命后一定要初始化
while (true ){
x = posi / N;
y = posi % N;
Data[x][y] = Data[x][y] + 1;
if (Data[x][y]>N*N ){
Data[x][y] = 0;
posi = posi -1;
}
else if (IsValid(Data[x][y])){
posi = posi + 1;
if (posi>N*N -1){
PrintData(N);
break;
}
}
}
}