主题:帮我2下(来者有50分!!!)
小勇士来了
[专家分:220] 发布于 2010-07-01 11:45:00
1:
奇数魔方:魔方是用自然数1,2,3……N^2 填N阶方阵的各个元素位置,使方阵的每行的元素之和、每列元素之和及主对角线元素之和均相等,(100> n> 1)。奇数阶魔方的一个算法就是将自然数
数列从方阵的中间一行最后一个位置排起,每次总是向右下角排(即A[i,j]的下一个是A[i+1,j+1])但若遇到以下四种情况,则应该修正排数法:
(1)列排完(即j=N+1时),则转排第一列;
(2)行排完(即i=N+1时),则转排第一行;
(3)对A[N,N]的下一个总是A[N,N-1];
(4)对A[i,j]已排进一个自然数,则排A[i-1,j-2].
例如3阶方阵:4 3 8
9 5 1
2 7 6
2:
完全数:求正整数A和B之间的完全数(A<B),因子之和等于它本身的自然数,如6=1+2+3。
3:
哥德巴赫猜想:编程验证:不小于6的偶数由两个素数组成。
7、二分查找:用过程完成二分查找(假设原有数据已按升序排列)。
8、约分:编一个用过程实现约分的程序。
9、不同取法1:求从红黄蓝白黑5种颜色的球中,取三种颜色球的可能排列法。(要求用枚举数据类型)
10、不同取法2:求从红黄蓝白黑5种颜色的球中,取三种颜色球的可能组合法。(要求用枚举数据类型和集合类型,因为集合类型具有不重复*)
回复列表 (共9个回复)
沙发
CrashRain [专家分:420] 发布于 2010-07-01 17:53:00
program rublic;
const size=5;
var a:array[1..size,1..size] of integer;
n,i,j,x,y,xt,yt:integer;
begin
n:=size*size;
x:=1;y:=size div 2;
fillchar(a,sizeof(a),0);
a[x,y]:=1;
for i:=2 to n do
begin
xt:=x-1;yt:=y+1;
if (xt<1) and (yt>size) then
begin
xt:=x+1;yt:=y;
end
else if xt<1 then xt:=size
else if yt>size then yt:=1
else if a[xt,yt]<>0 then
begin
xt:=x+1;yt:=y;
end;
a[xt,yt]:=i;
x:=xt;y:=yt;
end;
end.
第一个主要用到数学里的方法,你自己看吧,没写输出。
其余的都很基础,自己实践着写吧,不然浪费了。
PS:挺长时间没写过pascal了,有错请见谅。
板凳
mailiu [专家分:0] 发布于 2010-07-02 00:41:00
[url=http://www.gz-020.cn/flashplayer/]flash播放器[/url]
3 楼
小田甜 [专家分:3910] 发布于 2010-07-02 17:55:00
第一个那个叫“幻方”……
作业建议还是自己做比较好。
4 楼
cgl_lgs [专家分:21040] 发布于 2010-07-04 09:13:00
[quote]第一个那个叫“幻方”……
作业建议还是自己做比较好。[/quote]
板斧大人,您都在这儿回贴了咋二楼明显水贴不删捏?
PS:删除时顺便把俺这贴也删了吧:)
5 楼
小猪快跑哎呦 [专家分:20] 发布于 2010-07-04 21:30:00
在说我么?呵呵,五十分对于我来说,确实很诱人,但是呢,呵呵,放弃也是一种美。其实你不用准备什么,把自己最真实的一面展示给她看,如果你明天做作了,你以后怎么完场,其实只要穿得整治,有阳光气色就行,
6 楼
午夜清月 [专家分:0] 发布于 2010-07-04 21:31:00
1尾看21,31 9尾看9,29 4尾看14
7 楼
小勇士来了 [专家分:220] 发布于 2010-07-06 18:45:00
[quote]在说我么?呵呵,五十分对于我来说,确实很诱人,但是呢,呵呵,放弃也是一种美。其实你不用准备什么,把自己最真实的一面展示给她看,如果你明天做作了,你以后怎么完场,其实只要穿得整治,有阳光气色就行,[/quote]
以为我傻?给你分?
8 楼
小勇士来了2 [专家分:850] 发布于 2010-07-06 18:53:00
type
arr=array[0..1000] of longint;
var
num:arr;
i,code,n:longint;
procedure srch(var code:longint;num:arr;n:longint);
var
low,high,m:longint;
f:boolean;
begin
low:=1; high:=n; f:=false;
repeat
m:=(low+high) div 2;
if code=num[m] then f:=true;
if code>num[m] then low:=m+1;
if code<num[m] then high:=m-1;
until (f=true) or (low>high);
if f=true then writeln(m)
else writeln('Not find!');
halt;
end;
begin
read(n);
for i:=1 to n do read(num[i]);
read(code);
srch(code,num,n);
end.
program t2_8;
var
a,b:integer;
procedure com(var x,y:integer);
var i,j,k:integer;
begin
i:=x;j:=y;
repeat
k:=i mod j;
i:=j;j:=k;
until k=0;
x:=x div i;y:=y div i;
end;
begin
readln(a,b);
com(a,b);
writeln(a,b:5)
end.
program t2_9;(本题主要考察对枚举数据类型的掌握,实际编程不需要这样麻烦)
type color=(red,yellow,blue,white,black);
var i,j,k,pri:color;
loop,n:integer;
begin
n:=0;
for i:=red to black do
for j:=red to black do
if i<>j then for k:=red to black do
if (k<>i) and (k<>j) then
begin
n:=n+1;write(n:4);
for loop:=1 to 3 do
begin
case loop of
1:pri:=i;
2:pri:=j;
3:pri:=k;
end;
case pri of
red:write('red');
yellow:write('yellow');
blue:write('blue');
white:write('white');
black:write('black');
end;
end;
writeln;
end;
writeln('n=',n)
end.
program t2_10;
const m=30;(M值可以估计大小,不确定,对于本题足够了)
type color=(red,yellow,blue,white,black);
colset=set of color;
arrset=array[1..m] of colset;
var
p,n:integer;
a:arrset;
i,j,k,pri:color;
b:colset;
yes:boolean;
begin
for p:=1 to m do a[p]:=[];
n:=0;
for i:=red to black do
for j:=red to black do
if i<>j
9 楼
小勇士来了2 [专家分:850] 发布于 2010-07-06 18:54:00
好不好
我来回复