回 帖 发 新 帖 刷新版面

主题:帮我2下(来者有50分!!!)

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个回复)

沙发

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了,有错请见谅。

板凳

[url=http://www.gz-020.cn/flashplayer/]flash播放器[/url]

3 楼

第一个那个叫“幻方”……

作业建议还是自己做比较好。

4 楼

[quote]第一个那个叫“幻方”……

作业建议还是自己做比较好。[/quote]
板斧大人,您都在这儿回贴了咋二楼明显水贴不删捏?
PS:删除时顺便把俺这贴也删了吧:)

5 楼

在说我么?呵呵,五十分对于我来说,确实很诱人,但是呢,呵呵,放弃也是一种美。其实你不用准备什么,把自己最真实的一面展示给她看,如果你明天做作了,你以后怎么完场,其实只要穿得整治,有阳光气色就行,

6 楼

1尾看21,31 9尾看9,29 4尾看14

7 楼

[quote]在说我么?呵呵,五十分对于我来说,确实很诱人,但是呢,呵呵,放弃也是一种美。其实你不用准备什么,把自己最真实的一面展示给她看,如果你明天做作了,你以后怎么完场,其实只要穿得整治,有阳光气色就行,[/quote]

以为我傻?给你分?

8 楼

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 楼

好不好

我来回复

您尚未登录,请登录后再回复。点此登录或注册