循环赛日程表实验报告 下载本文

main() int k; 输入k值 计算参赛人数n值 计算参赛人数n=2^k 传值 调用void arrangement()函数 调用print()函数,输出到屏幕 结束 天津工程师范学院

5

2.void arrangement()函数 void arrangement(int n,int N,int k,int a[100][100]) int i=1 i<=N Y N m=1 i++ s=1 i++ a[1][i]=i s<=k? Y N N=N/2 s++ int t=1 m=m*2 N t<=N? Y int i=m+1 i<=2*m Y N t++ j=m+1 i++ N j<=m+1 Y a[i][j+(t-1)*m*2] = a[i-m][j+(t-1)*m*2-m] a[i][j+(t-1)*m*2-m] = a[i-m][j+(t-1)*m*2] j++ 结束

天津工程师范学院

6

3.print()函数

void print(int n,int a[100][100]) int i=1 N i<=n Y i++ int j=1 j<=n Y N cout<

天津工程师范学院 7

九.关键程序功能及其实现的说明 1. .main()函数

(1)函数功能:在屏幕上输入k值,计算参赛人数n,然后调用void arrangement()函数和print()函数。(2)函数实现:

①先定义一个k,然后在键盘上输入一个k值,并赋值给k(假设输入3);

②运用for循环,计算参赛人数n的值

for (int i=1;i<=k;i++) n *= 2; 可得n=8,即有八个人参赛。

③然后调用void arrangement()函数和print()函数,并传值。 2.void arrangement()函数

(1)函数功能:对所有运动员的赛程进行安排,并将其存入数组内。 (2)函数实现:由main()函数得到k值为3,n值为8 ①用一个for循环输出日程表的第一行

for(int i=1;i<=N;i++) a[1][i] = i; 1 2 3 4 5 6 7 8

②然后定义一个m值,m初始化为1,m用来控制每一次填充表格时i(i表示行)和j(j表示列)的起始填充位置。

天津工程师范学院 8